14 сент. 2010 г.

LZOpenFile

Функция LZOpenFile создает, открывает, переоткрывает или удаляет указанный файл.

INT LZOpenFile(
  LPTSTR lpFileName, // имя файла
  LPOFSTRUCT lpReOpenBuf, // указатель на структуру OFSTRUCT
  WORD wStyle  // действие
);

Параметры:
lpFileNameАдрес строки, которая определяет имя файла.
lpReOpenBufАдрес структуры OFSTRUCT, которая получает информацию о файле, если файл был открыт в первый раз. Структура может использоваться в последующих вызовах функции LZOpenFile для просмотра открытого файла.
wStyleДействие. Этот параметр может быть одним или более из следующих значений:

Значение:
Описание:
OF_CANCELИгнорируется. Оставлено для совместимости с 16-битными версиями Windows. Используйте стиль OF_PROMPT для отображения диалогового окна, содержащего кнопку "Отмена".
OF_CREATEУказывает LZOpenFile создать новый файл. Если файл уже существует, то он обрезается до нулевой длины.
OF_DELETEУдаляет файл.
OF_EXISTОткрывает файл, а затем закрывает его. Т.е. проверяется его существование.
OF_PARSEЗаполняет структуру OFSTRUCT, но не осуществляет других действий.
OF_PROMPTОтображает диалоговое окно, если запрошенный файл не существует. Диалоговое окно сообщает пользователю, что система не может найти файл, и оно содержит кнопки "Повторить" и "Отмена". Нажатие на кнопку "Отмена" заставляет LZOpenFile вернуть сообщение об ошибке о ненайденом файле.
OF_READОткрывает файл только для чтения.
OF_READWRITEОткрывает файл для чтения и для записи.
OF_REOPENОткрывает файл, используя информацию в буфере переоткрытия.
OF_SHARE_DENY_NONEОткрывает файл без предоставления другим процессам доступа на чтение и на запись в файл. LZOpenFile завершится с ошибкой, если файл был открыт другим процессом в режиме совместного использования.
OF_SHARE_DENY_READОткрывает файл без предоставления другим процессам доступа на чтение из файла. LZOpenFile завершится с ошибкой, если файл был открыт другим процессом в режиме совместного использования или в режиме доступа на чтение.
OF_SHARE_DENY_WRITEОткрывает файл без предоставления другим процессам доступа на запись в файл. LZOpenFile завершится с ошибкой, если файл был открыт другим процессом в режиме совместного использования или в режиме доступа на запись.
OF_SHARE_EXCLUSIVEОткрывает файл в исключительном режиме, не предоставляя другим процессам доступа и на чтение и на запись. LZOpenFile завершится с ошибкой, если файл был открыт для любого другого режима доступа чтения или записи, даже текущим процессом.
OF_WRITEОткрывает файл только для записи.

Возвращаемые значения:
Если функция успешна и значение в параметре wStyle не равно OF_READ, возвращается дескриптор, идентифицирующий файл. Если файл сжат и открыт с wStyle равным OF_READ, возвращается дескриптор указанного файла.
При ошибке, возвращается одно из значений кодов LZERROR_*. Эти коды имеют значения, большые за ноль. Это не дополнительная информация об ошибке для этой функци, не вызывайте GetLastError.
В следующем списке представлены коды ошибок, которые может вернуть LZOpenFile при ошибке.
Значение:
Описание:
LZERROR_BADINHANDLEДескриптор, идентифицирующий файл-источник, не действителен. Из файла невозможно читать.
LZERROR_GLOBALLOCМаксимальное количество открытых сжатых файлов превышено, или не может быть выделена локальная память.

Замечания:
Если параметр wStyle – это один из флагов OF_READ (или OF_READ и лубой из флагов OF_SHARE_) и файл сжат, LZOpenFile вызывает функция LZInit, которая запрашивает инициализацию для операций декомпрессии (разжатия).
Дескриптор, возвращаемый этой функцией, совместим только с функциями в LzExpand.dll; он не может использоваться для другий файловых операций.
Если LZOpenFile не может открыть файл по имени lpFileName, некоторые версии Windows пытаются открыть файл с почти тем-же именем, за исключением последнего символа, замещая его на символ подчеркивания ("_"). Таким образом, если удалось открыть файл MyProgram.exe, LZOpenFile пытается открыть MyProgram.ex_. Пакеты инсталяции часто заменяют последний символ файлового расширения на символ подчеркивания для указания на то, что файл сжат. Для определения имени открытого файла, проверте член szPathName структуры OFSTRUCT в параметре lpReOpenBuf.
Смотрите также:
LZInit, LZCloseLZReadOFSTRUCT