Функция LZOpenFile создает, открывает, повторно открывает или удаляет указанный файл.
Синтаксис
INT LZOpenFile( LPTSTR lpFileName, // имя файла LPOFSTRUCT lpReOpenBuf, // буфер данных файла WORD wStyle // предпринимаемое действие ); |
Параметры
lpFileName
[in] Указатель на символьную строку, которая устанавливает имя файла.lpReOpenBuf
[out] Указатель на структуру OFSTRUCT, которая должна получить информацию о файле, когда файл открывается в первый раз. Структура может использоваться при последующих вызовах функции LZOpenFile, которые относятся к открытому файлу.Член szPathName этой структуры содержит буквы и знаки символьного набора фирмы-изготовителя комплектного оборудования (OEM) .
wStyle
[in] Предпринимаемое действие. Этот параметр может состоять из одного или нескольких нижеследующих значений.Значение | Предназначение |
---|---|
OF_CANCEL | Игнорируется. Предусмотрен только для совместимости с 16-разрядным Windows. Используйте стиль OF_PROMPT , чтобы показать на экране диалоговое окно, содержащее кнопку Cancel (Отменить). |
OF_CREATE | Предписывает функции LZOpenFile создать новый файл. Если файл уже существует, он обрезается до нулевой длины. |
OF_DELETE | Удаляет файл. |
OF_EXIST | Открывает файл, и затем закрывает его, чтобы убедиться в существовании файла. |
OF_PARSE | Заполняет структуру OFSTRUCT, но не выполняет никакого другого действия. |
OF_PROMPT | Показывает на экране диалоговое окно, если затребованный файл не существует. Диалоговое окно сообщает пользователю о том, что система не может найти файл и оно содержит кнопки Retry (Повторить) и Cancel (Отменить). Щелчок по кнопке Cancel предписывает функции LZOpenFile возвратить сообщением об ошибке file not found (файл не найден). |
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, возвращаемое значение - дескриптор, идентифицирующий файл. Если файл сжимается и открывается с установленным флажком OF_READ в параметре wStyle, возвращаемое значение - специальный дескриптор файла.
Если функция завершается ошибкой, возвращаемое значение - код LZERROR_*. Эти коды имеют значения меньше чем нуль. Для этой функции дополнительной информации об ошибке нет; вызов GetLastError бесполезен.
Обратите внимание! на то, что функция LZOpenFile не вызывает ни функцию SetLastError, ни SetLastErrorEx; в соответствии с этим, её сбой не влияет на на код последней ошибки потока. |
Ниже следует список кодов ошибок, которые LZOpenFile может возвратить при сбое в работе.
Значение | Предназначение |
---|---|
LZERROR_BADINHANDLE | Дескриптор, идентифицирующий исходный файл не допустим. Файл не может читаться. |
LZERROR_GLOBALLOC | Превышено максимальное количество открытых сжатых файлов или не может быть назначена локальная память. |
Замечания
Если параметр wStyle имеет флажок OF_READ (или OF_READ и любой из флажков OF_SHARE_), и файл сжимается, LZOpenFile вызывает функцию LZInit, которая исполняет обязательную инициализацию для операций восстановления сжатых данных.
Дескриптор возвращенный этой функцией совместим только с функциями в LzExpand.dll; он не должен использоваться для других файловых операций.
Windows NT/2000/XP: Если LZOpenFile не в состоянии открыть файл, заданный параметром lpFileName, она пытается открыть файл с именем близким к имени файла, кроме последнего символа, который заменяет знаком подчеркивания ("_"). В соответствии с этим, если попытка открыть файл MyProgram.exe завершается ошибкой, LZOpenFile пробует открыть MyProgram.ex_. Инсталляционные пакеты часто занимают место подчеркивания последней буквой расширения имени файла, чтобы обозначить, что файл сжат. Например, файл MyProgram.exe в сжатом виде может быть назван MyProgram.ex_. Чтобы выяснить имя открытого файла (если он имеется), проверьте член szPathName структуры OFSTRUCT в определенной в параметре lpReOpenBuf.
Смотри также
Функции, используемые для распаковки файлов, LZClose, LZInit, LZRead, OFSTRUCT
Размещение и совместимость LZOpenFile |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT Workstation |
Да |
е |
Windows Me |
Да |
н |
Windows 98 |
Да |
т |
Windows 95 |
Да |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека |
Lz32.lib |
|
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в |
Lzexpand.h |
|
- включено в |
Windows.h |
|
Unicode |
Реализуется как версии Unicode и ANSI в Windows NT/2000/XP. |
|
Замечания по платформе |
Не имеется |