Функция LZOpenFileW (lzexpand.h)
Создает, открывает, повторно открывает или удаляет указанный файл.
Синтаксис
INT LZOpenFileW(
[in] LPWSTR lpFileName,
[out] LPOFSTRUCT lpReOpenBuf,
[in] WORD wStyle
);
Параметры
[in] lpFileName
Имя файла.
[out] lpReOpenBuf
Указатель на структуру OFSTRUCT , которая получает сведения о файле при первом открытии файла. Структуру можно использовать в последующих вызовах функции LZOpenFile для просмотра открытого файла.
Элемент szPathName этой структуры содержит символы из исходной кодировки изготовителя оборудования (OEM).
[in] wStyle
Выполняемое действие. Этот параметр может быть одним или несколькими из следующих значений.
Значение | Значение |
---|---|
|
Не обрабатывается. Предоставляется только для совместимости с 16-разрядной версией Windows. Используйте стиль OF_PROMPT для отображения диалогового окна, содержащего кнопку Отмена . |
|
Направляет LZOpenFile для создания нового файла. Если файл уже существует, он усекается до нулевой длины. |
|
Удаляет файл. |
|
Открывает файл, а затем закрывает его, чтобы проверить его существование. |
|
Заполняет структуру OFSTRUCT, но не выполняет никаких других действий. |
|
Отображает диалоговое окно, если запрошенный файл не существует. Диалоговое окно сообщает пользователю, что системе не удается найти файл и содержит кнопки Повтор и Отмена . При нажатии кнопки ОтменаLZOpenFile возвращает сообщение об ошибке "Файл не найден". |
|
Открывает файл только для чтения. |
|
Открывает файл для чтения и записи. |
|
Открывает файл, используя сведения в буфере повторного открытия. |
|
Открывает файл, не запрещая другим процессам доступ на чтение или запись к файлу. LZOpenFile завершается ошибкой , если файл был открыт в режиме совместимости любым другим процессом. |
|
Открывает файл и запрещает другим процессам доступ на чтение к файлу. LZOpenFile завершается ошибкой, если файл был открыт в режиме совместимости или был открыт для чтения любым другим процессом. |
|
Открывает файл и запрещает другим процессам доступ на запись в файл. LZOpenFile завершается ошибкой, если файл был открыт в режиме совместимости или был открыт для записи любым другим процессом. |
|
Открывает файл в монопольном режиме, запрещая другим процессам доступ к файлу как на чтение, так и на запись. LZOpenFile завершается ошибкой , если файл был открыт в любом другом режиме для чтения или записи, даже текущим процессом. |
|
Открывает файл только для записи. |
Возвращаемое значение
Если функция выполняется успешно и значение, указанное параметром wStyle , не OF_READ, возвращаемое значение представляет собой дескриптор, идентифицирующий файл. Если файл сжимается и открывается с параметром wStyle , равным OF_READ, возвращаемое значение представляет собой специальный дескриптор файла.
Если функция завершается сбоем, возвращаемым значением является код LZERROR_* . Эти коды имеют значения меньше нуля. Для этой функции нет расширенных сведений об ошибке; не вызывать GetLastError.
Возвращаемый код или значение | Описание |
---|---|
|
Недопустимый дескриптор, определяющий исходный файл. Не удается прочитать файл. |
|
Превышено максимальное количество открытых сжатых файлов или не удается выделить локальную память. |
Комментарии
Если параметр wStyle является флагом OF_READ (или OF_READ и любым из флагов OF_SHARE_* ) и файл сжимается, LZOpenFile вызывает функцию LZInit , которая выполняет необходимую инициализацию для операций распаковки.
Дескриптор, возвращающийся этой функцией, совместим только с функциями в Lz32.dll; Его не следует использовать для других операций с файлами.
Если LZOpenFile не удается открыть файл, указанный в lpFileName, в некоторых версиях Windows он пытается открыть файл с почти таким же именем, за исключением того, что последний символ заменяется символом подчеркивания (""). Таким образом, если попытка открыть "MyProgram.exe" завершается сбоем, LZOpenFile пытается открыть "MyProgram.ex". Пакеты установки часто заменяют символ подчеркивания последней буквой расширения имени файла, чтобы указать, что файл сжат. Например, сжатый MyProgram.exe может иметь имя "MyProgram.ex_". Чтобы определить имя открытого файла (при его наличии), проверьте элемент szPathName структуры OFSTRUCT в параметре lpReOpenBuf .
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
Прозрачная отработка отказа (TFO) SMB 3.0 | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
CsvFs выполняет перенаправление операций ввода-вывода для сжатых файлов.
Примечание
Заголовок lzexpand.h определяет LZOpenFile в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | lzexpand.h (включая Windows.h) |
Библиотека | Lz32.lib |
DLL | Lz32.dll |