Таблица 29. 1 Перечень функций декомпрессии и установки |
|||||||||||||||||||||
Функция |
Назначение |
||||||||||||||||||||
GetExpandedName |
Извлекает из сжатого файла имя исходного файла. Файл должен быть сжат с ключом /г. |
||||||||||||||||||||
GetFileVersionlnfo |
Получает информацию о версии из исполняемого файла Win32. |
||||||||||||||||||||
GetFileVersionlnfoSize |
Возвращает размер ресурса информации о версии исполняемого файла Win32. |
||||||||||||||||||||
LZClose |
Закрывает файл, открытый с использованием функции LZOPen. |
||||||||||||||||||||
LZCopy |
Копирует файл с выполнением декомпрессии. |
||||||||||||||||||||
LZInrt |
Инициирует библиотеку декомпрессии для операций с несколькими файлами. |
||||||||||||||||||||
LZOpenFile |
Открывает файл для использования совместно с другими функциями декомпрессии. |
||||||||||||||||||||
LZRead |
Выполняет чтение файла, который был открыт через LZOpenFile с применением декомпрессии. |
||||||||||||||||||||
VerFindFile |
Определяет место установки файла, выполняя поиск его существующих версий. |
||||||||||||||||||||
VerlnstallFile |
Устанавливает файл, при необходимости выполняя декомпрессию. |
||||||||||||||||||||
VerQueryValue |
Получает определенную информацию о версии из буфера, возвращенного функцией GetFileVersinlnfo. |
||||||||||||||||||||
GetExpandedName • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция GetExpandedName извлекает имя исходного файла из сжатого, если сжатие выполнялось с помощью специальной программы Microsoft COMPRESS.EXE с указанием ключа /г. |
||||||||||||||||||||
Синтаксис |
INT GetExpandedName( LPTSTR IpszSourceFile, LPTSTR IpszOriginalName ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
IpszSourcefile |
LPTSTR: Указатель на завершаемую нулевым символом строку символов, которая содержит имя сжатого файла. |
||||||||||||||||||||
IpszOriginalName |
LPTSTR: Указатель на буфер, который получает исходное имя распакованного файла. Если сжатие файла выполнялось без ключа /г, в буфер скопируется имя исходного файла. |
||||||||||||||||||||
Возвращаемое значение |
INT: При успешном завершении возвращается -1, а в противном случае — значение LZERROR_BADVALUE. |
||||||||||||||||||||
Включаемый файл |
Izexpand.h |
||||||||||||||||||||
Пример |
В следующем примере извлекается имя исходного файла из сжатого файла COMP.DO_. |
||||||||||||||||||||
См. \local-sources\chap29\29-01.txt |
|||||||||||||||||||||
GetFileVersionlnfo • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция GetFileVersionlnfo извлекает информацию о версии из исполняемого файла Win32, библиотеки либо элемента управления. Для обращения к этой функции приложение должно содержать файл VERSION.LIB. Функция GetFileVersionlnfoSize получает размер буфера, необходимого для хранения информации о версии для любого файла. После распределения соответствующего буфера при помощи функции GetFileVersionlnfo приложение может получить информацию о версии. |
||||||||||||||||||||
Синтаксис |
BOOL GetFileVersionlnfo ( LPTSTR IpszFileName, DWORD dwBufferSize, LPVOID IpBuffer ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
IpszFileName |
LPTSTR: Указатель на буфер, содержащий имя файла, из которого извлекается информация о версии. |
||||||||||||||||||||
IpszReserved |
DWORD: Этот параметр игнорируется. |
||||||||||||||||||||
dwBufferSize |
DWORD: После входа в функцию содержит размер буфера, на который указывает параметр IpBuffer. После возврата содержит реальный размер буфера, необходимого для хранения информации о версии. Если буфер недостаточно велик для хранения информации о версии, данные усекаются. |
||||||||||||||||||||
IpBuffer |
LPVOID: Указатель на буфер, который будет содержать информацию о версии. |
||||||||||||||||||||
Возвращаемое значение |
BOOL При успешном завершении возвращается TRUE, в противном случае - FALSE. |
||||||||||||||||||||
Включаемый файл |
winver.h |
||||||||||||||||||||
См. также |
GetFileVersionlnfoSize, VerQueryValue |
||||||||||||||||||||
Пример |
В следующем примере для извлечения размера информации о версии используется функция GetFileVersionlnfoSize. Затем при помощи GetFileVersionlnfo получается информация о версии. После этого извлекаются строки "CompanyName", "File Version" и "ProductName" из раздела String-Filelnfo информации о версии. Информация о версии в файле ресурса, который используется в данном примере, приводится в рассмотренном ранее листинге 29.2. |
||||||||||||||||||||
Си. \local-sources\chap29\29-02. txt |
|||||||||||||||||||||
GetFileVersionlnfoSize * Windows 98 + Windows 2000 |
|||||||||||||||||||||
Описание |
Функция GetFileVersionlnfoSize извлекает размер ресурса информации о версии для указанного файла. Эта информация позволяет приложению распределять буфер необходимого размера для совместного использования с функцией GetFi!eVersionInfo. Для обращения к этой функции приложение должно содержать файл VERSION.LIB. |
||||||||||||||||||||
Синтаксис |
DWORD GetFileVersionlnfoSize ( LPTSTR IpszFileName, LPDWORD IpdwReserved ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
IpszFileName |
LPTSTR Указатель на буфер, содержащий имя файла. Возвращается размер ресурса информации о версии, который содержится в данном файле. |
||||||||||||||||||||
IpdwReserved |
LPDWORD: Указатель на значение DWORD. В данной функции установлен в 0. |
||||||||||||||||||||
Возвращаемое значение |
DWORD: Размер в байтах ресурса информации о версии, который содержится в указанном файле. |
||||||||||||||||||||
Включаемый файл |
winver.h |
||||||||||||||||||||
См. также |
GetFileVersionlnfo, VerQueryValue |
||||||||||||||||||||
Пример |
См. пример, приведенный в описании функции GetFileVersionlnfo. |
||||||||||||||||||||
LZCIose • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция LZCIose закрывает дескриптор файла, полученный с помощью LZOpenFile. |
||||||||||||||||||||
Синтаксис |
VOID LZClose( INT hFile ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
hFile |
INT: Идентифицирует закрываемый файл. Это значение было возвращено в результате вызова LZOpcnFile. |
||||||||||||||||||||
Включаемый файл |
Izexpand.h |
||||||||||||||||||||
См. также |
LZOpenFile |
||||||||||||||||||||
Пример |
См. пример, приведенный в описании функции LZCopy. |
||||||||||||||||||||
LZCopy • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция LZCopy копирует исходный файл в файл назначения. Если исходный файл сжат, файл назначения будет декомпрессирован. |
||||||||||||||||||||
Синтаксис |
LONG LZCopy( INT hSourceFile, INT hDestFile ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
hSourceFile |
INT: Дескриптор, идентифицирующий файл, открытый с использованием LZOpenFile. Для этого файла может быть выполнена декомпрессия. |
||||||||||||||||||||
hDestFile |
INT: Дескриптор, идентифицирующий файл, открытый с помощью LZOpenFile. Если исходный файл сжат, файл назначения будет декомпрессирован. |
||||||||||||||||||||
Возвращаемое значение |
LONG: В случае успешного выполнения возвращается размер файла назначения в байтах. В противном случае возвращается отрицательное значение, что указывает на возникновение ошибки. Возвращаемые в условиях ошибок значения перечислены в табл. 29.2. |
||||||||||||||||||||
Таблица 29.2 Коды ошибок функции LZCopy |
|||||||||||||||||||||
Возврашаемое значение |
Описание |
||||||||||||||||||||
LZERROR_BADINHANDLE |
В параметре hSourceFile было передано недопустимое значение. |
||||||||||||||||||||
LZERROR_BADOUTHANDLE |
В параметре hDestFile было передано недопустимое значение. |
||||||||||||||||||||
LZERROR_BADVALUE |
Один из входных параметров недопустим. |
||||||||||||||||||||
LZERROR_GLOBALLOC |
Превышено максимальное количество открытых сжатых файлов, либо произошла ошибка распределения памяти для процесса декомпрессии. |
||||||||||||||||||||
LZERROR_GLOBLOCK |
Произошла ошибка блокирования памяти, используемой для буфера декомпрессии. |
||||||||||||||||||||
LZERROR_READ |
Невозможность чтения исходного файла. Это может быть результатом указания поврежденного сжатого файла. |
||||||||||||||||||||
LZERROR_WRITE |
Недостаточное пространство для выходного файла. |
||||||||||||||||||||
Включаемый файл |
Izexpand.h |
||||||||||||||||||||
См. также |
LZClose, LZInit, LZOpenFile |
||||||||||||||||||||
Пример |
В следующем примере выполняется копирование сжатого файла COMP.DO_ в распакованный файл SampleDocument.DOC, когда пользователь выбирает опцию меню Test!. |
||||||||||||||||||||
См. \local-sources\chap29\29-03.txt |
|||||||||||||||||||||
LZInit • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция LZInit конвертирует дескриптор файла, полученный CreateFile, в такой дескриптор файла, который может использоваться совместно с различными функциями декомпрессии. Если файл сжат, LZInit распределяет для декомпрессии соответствующие буферы. |
||||||||||||||||||||
Синтаксис |
INT LZInit ( INT hFile ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
hFile |
INT: Дескриптор файла, открытого с помощью функции CreateFile. |
||||||||||||||||||||
Возвращаемое значение |
INT: Новый дескриптор файла, который может использоваться совместно с библиотекой декомпрессии. |
||||||||||||||||||||
Включаемый файл |
Izexpand.h |
||||||||||||||||||||
См. также |
LZRead, LZSeek, LZOpenFile, CreateFile |
||||||||||||||||||||
Пример |
Следующий сегмент кода открывает файл с помошью обычной функции CreateFile. Затем вызывается функция LZInit для преобразования дескриптора файла в вид, используемый библиотекой декомпрессии, и выполняется чтение и поиск в файле с помощью LZSeek и LZRead. |
||||||||||||||||||||
См. \local-sources\chap29\29-04.txt |
|||||||||||||||||||||
LZOpenFile • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция LZOpenFile подготавливает файлы для использования другими функциями декомпрессии, удаляет файлы и создает новые распакованные файлы. |
||||||||||||||||||||
Синтаксис |
INT LZOpenFile ( LPTSTR IpFileName, LPOFSTRUCT IpOpenStruct, WORD wStyle ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
IpFileName |
LPTSTR Указатель на буфер, содержащий имя открываемого файла. |
||||||||||||||||||||
IpOpenStruct |
LPOFSTRUCT: Указатель на структуру OFSTRUCT. При первом открытии файла функция заполнит члены структуры OFSTRUCT. Эта структура затем может использоваться в следующих вызовах LZOpenFile. Описание структуры OFSTRUCT следует ниже. |
||||||||||||||||||||
wStyle |
WORD: Битовая маска для различных действий. Может принимать одно или несколько значений, перечисленных в табл. 29.3. |
||||||||||||||||||||
Таблица 29.3 Значения параметра wStyle функции LZOpen |
|||||||||||||||||||||
Значение |
Описание |
||||||||||||||||||||
OF_CREATE |
Указывает функции LZOpenFile на необходимость создания нового файла. Если файл уже существует, он усекается до нулевой длины. |
||||||||||||||||||||
OF_DELETE |
Удаляет файл. |
||||||||||||||||||||
OF_EXIST |
Открывает и закрывает файл с целью проверки его существования. |
||||||||||||||||||||
OF_PARSE |
Заполняет структуру OFSTRUCT; других действий не выполняет. |
||||||||||||||||||||
OF_PROMPT |
Отображает диалоговое окно, если запрашиваемый файл не существует. Диалоговое окно сообщает пользователю, что Windows не может обнаружить файл. Окно содержит кнопки 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 |
Открывает файл только для записи. |
||||||||||||||||||||
Возвращаемое значение |
INT: В случае успешного выполнения — целое значение, идентифицирующее открытый файл. В противном случае возвращается отрицательное значение, указывающее на условие ошибки. Возможные значения возврата перечислены в табл. 29.2. |
||||||||||||||||||||
Включаемый файл |
Izexpand.h |
||||||||||||||||||||
См. также |
LZCIose, LZCopyFile |
||||||||||||||||||||
Описание структуры OFSTRUCT typedef struct OFSTRUCT{ BYTE cBytes ; BYTE fFixedDisk; WORD nErrCode; WORD Reservedl; WORD Reserved2; CHAR szPathName[OFS ЮХРАТВММв] } OFSTRUCT ; |
|||||||||||||||||||||
Члены |
|||||||||||||||||||||
cBytes |
BYTE: Размер структуры в байтах. |
||||||||||||||||||||
fFixedDisk |
BYTE: Указывает, находится ли файл на жестком диске. Если да, принимает ненулевое значение. |
||||||||||||||||||||
nErrCode |
WORD: Код ошибки MS-DOS. |
||||||||||||||||||||
Reservedl |
WORD: Зарезервирован и не используется. |
||||||||||||||||||||
Reserved2 |
WORD: Зарезервирован и не используется. |
||||||||||||||||||||
szPathName |
CHAR[OFS_MAXPATHNAME]: Путь и имя файла. |
||||||||||||||||||||
Пример |
См. пример, приведенный в описании функции LZCopy. |
||||||||||||||||||||
LZRead • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция LZRead выполняет чтение данных из файла, открытого с помощью LZOpenFile или LZInit. С точки зрения приложения эта функция идентична обычному чтению файла. LZRead выполняет все необходимые операции декомпрессии. |
||||||||||||||||||||
Синтаксис |
INT LZRead (INT hFile, LPTSTR IpBuffer, INT nByteCount ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
hfile |
INT: Дескриптор файла, извлеченный с помощью функции LZOpenFile или LZInit. |
||||||||||||||||||||
IpBuffer |
LPTSTR Указатель на буфер, куда помещаются данные. |
||||||||||||||||||||
nByteCount |
INT: Указывает количество считываемых данных. Это значение соответствует объему несжатых данных. |
||||||||||||||||||||
Возвращаемое значение |
INT: При успешном выполнении возвращается количество действительно считанных байтов. В противном случае возвращаемое значение представляет собой код ошибки. Возможные значения кодов ошибок перечислены в табл. 29.2. |
||||||||||||||||||||
Включаемый файл |
Izexpand.h |
||||||||||||||||||||
См. также |
LZInit, LZSeek |
||||||||||||||||||||
Пример |
См. пример, приведенный в описании функции LZInit. |
||||||||||||||||||||
LZSeek • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция LZSeek перемещает указатель чтения указанного файла. |
||||||||||||||||||||
Синтаксис |
LONG LZSeek (INT hFile, LONG lOffset, INT iFrom ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
hHle |
INT: Дескриптор файла, извлеченный с помощью функции LZOpenFile или LZInit. |
||||||||||||||||||||
/Offset |
LONG: Указывает расстояние, на которое должен переместиться указатель чтения в байтах. |
||||||||||||||||||||
iFrom |
INT: Флаг, указывающий способ перемещения указателя чтения. Некоторые значения этого параметра перечислены в табл. 29.4. |
||||||||||||||||||||
/аолица 29,4 Значения парамета iFrom (hvmaiuu 1 7Seou |
|||||||||||||||||||||
Значение |
Описание |
||||||||||||||||||||
0 |
Перемещает указатель чтения на указанную позицию. Отсчет ведется от начала файла. |
||||||||||||||||||||
1 |
Перемещает указатель чтения на заданное количество байт' относительно текущей позиции. |
||||||||||||||||||||
2 |
Перемещает указатель чтения на указанное количество байт относительно |
||||||||||||||||||||
Возвращаемое значение |
LONG: При успешном завершении возвращает новую абсолютную позицию указателя чтения. В противном случае возвращаемое значение представляет собой код ошибки. Возможные значения кодов ошибок перечислены в табл. 29.2. |
||||||||||||||||||||
Включаемый файл |
Izexpand.h |
||||||||||||||||||||
См. также |
LZInit, LZRead |
||||||||||||||||||||
Пример |
См. пример, приведенный в описании функции LZInit. |
||||||||||||||||||||
VerFindFile • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция VerFindFile выдает рекомендованное местонахождение, которое приложение должно использовать для установки определенного файла. Эта рекомендация основана на факте существования версии данного файла в пользовательской системе. Возвращаемые функцией значения должны использоваться в последующих вызовах VerlnstallFile для действительной установки файла. Для обращения к VerFindFile приложение должно содержать файл VERSION.LIB. |
||||||||||||||||||||
Синтаксис |
DWORD VerFindFile( DWORD dwFlags, LPTSTR szFileName, LPTSTR szWindowsDirectory, LPTSTR szApplicationDirectory, LPTSTR szCurrentDirectory, PUINT IpdwCurrentLength, LPTSTRDestinationDirectorv. PUINT IpdwDestinationLength ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
dwFlags |
DWORD: Если параметр имеет значение VFFFJSSHAREDFILE, файл считается совместно используемым (shared) несколькими приложениями. Koriaa параметр имеет значение 0, файл считается приватным (private) для данного приложения. |
||||||||||||||||||||
szFileName |
LPTSTR: Указатель на имя файла. Должен включать только имя файла и расширение. Параметр не должен содержать буквенное обозначение диска и путь. |
||||||||||||||||||||
sz WindomDirectory LPTSTR Указатель на имя каталога, где выполняется или будет выполняться система Windows. Для получения этого значения можно воспользоваться функцией GetWindowsDirectory. |
|||||||||||||||||||||
szApplicationDirectory LPTSTR: Указатель на имя каталога, куда устанавливается приложение. |
|||||||||||||||||||||
szCurrent Directory LPTSTR: Указатель на буфер, куда эта функция вернет имя каталога, если обнаруживается какая-либо существующая версия файла. При отсутствии других версий файла буфер содержит строку с нулевой длиной. |
|||||||||||||||||||||
IpdwCurrentLength PUINT: Указатель на значение UINT. При запуске функции это значение должно устанавливаться в соответствии с длиной строки в буфере szCurrent-Directory. При выходе из функции это значение устанавливается в соответствии с длиной возвращаемой строки. Если размер буфера szCurrent-Directory слишком мал, чтобы вместить путь целиком, в качестве значения параметра выбирается количество байт, необходимых для записи пути. |
|||||||||||||||||||||
szDestinationDirectory LPTSTR: Указатель на буфер, куда Windows поместит имя каталога, рекомендуемого для установки файла. |
|||||||||||||||||||||
IpdwDestination Length PUINT: Указатель на значение UINT. При запуске функции это значение должно устанавливаться в соответствии с дайной буфера szDestination-Directory. При выходе из функции в качестве значения принимается длина возвращаемой строки. Если размер буфера szDestinationDirectory слишком мал для помещения полного пути, в качестве значения параметра принимается количество байт, необходимых для записи пути. |
|||||||||||||||||||||
возвращаемое Значение |
DWORD: Возвращаемое значение представляет собой битовую маску, указывающую различные результаты. Возврат может принимать одно или несколько значений, перечисленных в табл. 29.5. |
||||||||||||||||||||
Включаемый файл |
winver.h |
||||||||||||||||||||
См. также |
VerlnstallFile |
||||||||||||||||||||
Таблица 29.5 Флаги возврата функции VerFindFile |
|||||||||||||||||||||
Битовая маска |
Описание |
||||||||||||||||||||
VFF_BUFFTOOSMALL |
Один из параметров IpdwCurrentLength или IpdwDestinationLength указывает, что соответствующий буфер слишком мал для помещения всей строки пути. |
||||||||||||||||||||
VFF_CURNEDEST |
Предыдущая версия файла существует, однако не в рекомендуемом каталоге. |
||||||||||||||||||||
VFF_FILEINUSE |
Предыдущая версия файла существует и в данный момент используется Windows либо другим приложением. Удаление или замена файла невозможны. |
||||||||||||||||||||
Пример |
Пример использования функции содержится в листинге 29.1. |
||||||||||||||||||||
VerlnstallFile • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция VerlnstallFile выполняет установку определенного файла. При необходимости выполняется декомпрессия. Проверяется информация о версии устанавливаемого и существующего файлов. Для обращения к этой функции приложение должно содержать файл VERSION.LIB. |
||||||||||||||||||||
Синтаксис |
DWORD VerlnstallFile ( DWORD dwFlags, LPTSTR szSrcFileName, LPTSTR szDestFileName, LPTSTR szSrcDirectory, LPTSTR szDestDirectory, LPTSTR szExistingDirectory, LPTSTR szTempName, PUINT IpdwTempLength ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
dwFlags |
DWORD: Различные флаги, которые могут использоваться для изменения поведения данной функции. Допустимые значения параметра перечислены в табл. 29.6. |
||||||||||||||||||||
szSrcfileName |
LPTSTR: Имя устанавливаемого файла. Должен включать только имя файла и расширение. Параметр не должен содержать буквенного обозначения диска либо пути. |
||||||||||||||||||||
szDestFileName |
LPTSTR: Имя, присваиваемое файлу после установки. Параметр должен включать только имя файла и расширение. Буквенное обозначение диска либо строка пути не допускаются. Этот параметр позволяет в процессе установки переименовывать файл. |
||||||||||||||||||||
Таблица 29.6 Значения параметра dwFlags функции VerlnstallFile |
|||||||||||||||||||||
Битовая маска |
Значение |
||||||||||||||||||||
VIFF_DONTDELETEOLD |
Если предыдущая версия файла находится в каталоге, отличном от рекомендуемого каталога назначения, использование этого флага предотвратит удаление старого файла функцией VerlnstallFile. |
||||||||||||||||||||
VIFF_FORCEINSTALL |
Вынуждает VerlnstallFile устанавливать новый файл, несмотря на возможное несоответствие версии или типа с существующим файлом. Если значение VIFF DONTDEL.ETEOLD не указано, а предыдущая версия файла находится в другом каталоге, файл удаляется. Если предыдущая версия файла находится в указанном каталоге назначения, она перезаписывается независимо от значения параметра VIFF_DONTDELETEOLD. |
||||||||||||||||||||
szSrcDirectory |
LPTSTR: Диск и каталог исходного файла. |
||||||||||||||||||||
szDestDirectory |
LPTSTR: Диск и каталог для установки файла. Обычно совпадает с пара/-метром szDestinationDirectory функции VerFindFile. |
||||||||||||||||||||
szExistingDirectory LPTSTR: Местонахождение предыдущей версии файла. Обычно совпадает с параметром szCurrentDirectory функции VerFindFile. |
|||||||||||||||||||||
szTempName |
LPTSTR: Буфер, в котором функция будет хранить временное имя, используемое в процессе установки файла. |
||||||||||||||||||||
IpdwTempLength |
PUINT: Размер буфера szTempName. При выходе из функции параметр хранит действительный размер строки szTempName. > |
||||||||||||||||||||
Возвращаемое значение |
DWORD: Битовая маска, определяющая различные условия исключения в процессе установки. Может содержать одно или несколько значений, перечисленных в табл. 29.7. |
||||||||||||||||||||
Таблица 29.7 Коды возврата функции VerlnstallFile |
|||||||||||||||||||||
Маска |
Значение |
||||||||||||||||||||
VIF_ACCESSVIOLATION |
Сбой установки нового файла по причине нарушения прав доступа/ |
||||||||||||||||||||
VIF_BUFFTOOSMAUL |
Размер буфера имени временного файла слишком мал для хранения имени. |
||||||||||||||||||||
VIF_CANNOTCREATE |
Невозможность создания временного файла. |
||||||||||||||||||||
VIF_CANNOTDELETE |
Невозможность удаления файла назначения. |
||||||||||||||||||||
VIF_CANNOTDELETECUR |
Файл назначения находится в другом каталоге, маска VIFF DONTDELETEOLD не была задана, а существующая версия файла не может быть удалена. |
||||||||||||||||||||
VIF_CANNOTLOADCABINET |
Невозможность загрузки САВ-файла. |
||||||||||||||||||||
VIF_CANNOTLOADLZ32 |
Невозможность загрузки сжатого файла. |
||||||||||||||||||||
VIF_CANNOTREADDST |
Невозможность чтения существующего файла, в результате чего нельзя получить информацию о версии. |
||||||||||||||||||||
VIF_CANNOTREADSRC |
Невозможность чтения нового файла. |
||||||||||||||||||||
VIF_CANNOTRENAME |
Предыдущий файл удален, но временный файл невозможно переименовать. |
||||||||||||||||||||
VIF_DIFFCODEPG |
Новый и предыдущий файл используют различные кодовые страницы. |
||||||||||||||||||||
Маска |
Значение |
||||||||||||||||||||
VIF_DIFFLANG |
Новый и предыдущий файл используют различные языки либо кодовые страницы. |
||||||||||||||||||||
VIF_DIFFTYPE |
Тип, подтип или идентификатор операционной системы нового файла отличается от этих показателей в существующем файле. |
||||||||||||||||||||
VIF_FILEINUSE |
Предыдущий файл в данный момент используется Windows. |
||||||||||||||||||||
VIF_MISMATCH |
Новый и предыдущий файлы каким-то образом отличаются. |
||||||||||||||||||||
VIF_OUTOFMEMORY |
Недостаточно памяти для выполнения установки. Обычно это происходит в результате перерасхода памяти при попытке декомпрессии файла. |
||||||||||||||||||||
VIF_OUTOFSPACE |
Недостаточно свободного пространства на диске назначения для записи нового файла. |
||||||||||||||||||||
VIF_SHARINGVIOLATION |
Сбой установки нового файла в результате нарушения общего доступа. |
||||||||||||||||||||
VIF_SRCOLD |
Версия нового файла оказалась более старой по сравнению с предыдущим файлом. |
||||||||||||||||||||
VIF_TEMPFILE |
Указывает, что временный файл оставлен в каталоге назначения из-за какой-то ошибки установки. Остальные биты укажут на конкретную ошибку. Приложение должно удалить временный файл, как только в нем отпадет необходимость. |
||||||||||||||||||||
VIF_WRITEPROT |
Предыдущий файл защищен от записи. |
||||||||||||||||||||
Включаемый файл |
winver.h |
||||||||||||||||||||
См. также |
VerFindFile |
||||||||||||||||||||
Пример |
Пример использования этой функции содержится в листинге 29. 1 . |
||||||||||||||||||||
VerQuervVatue • Windows 98 • Windows 2000 |
|||||||||||||||||||||
Описание |
Функция VerQueryValue извлекает определенные данные из информации о версии, полученной с помощью GetFileVersionlnfo. Для обращения к этой функции приложение должно содержать файл VERSION.LIB. |
||||||||||||||||||||
Синтаксис |
BOOL VerQueryValue ( CONST LPVOID IpVerlnfo, LPTSTR IpszKey, LPVOID* IpvPointerToData, PUINT IpdwDataLength ) |
||||||||||||||||||||
Параметры |
|||||||||||||||||||||
IpVerlnfo |
CONST LPVOID: Указатель на ресурс информации о версии. Эти данные обычно получаются в результате вызова GetFileVersionlnfo. |
||||||||||||||||||||
IpszKey |
LPTSTR Идентифицирует значение информации о версии, которое должно быть возвращено. Подробности содержатся в табл. 29.8. |
||||||||||||||||||||
IpvPointerToData |
LPVOID*: Указатель на буфер, куда функция помещает указатель на запрашиваемую информацию о версии. |
||||||||||||||||||||
IpdwDataLength |
PUINT: Указатель на значение UINT, устанавливаемое функцией в соответствии с длиной данных, определенных при помощи IpvPointerToData. |
||||||||||||||||||||
Возвращаемое значение |
BOOL: При успешном завершении возвращается значение TRUE, в противном случае — FALSE. |
||||||||||||||||||||
Таблица 29.8 Значения параметра IpszKey функции VerQueryValue |
|||||||||||||||||||||
Строка |
Описание |
||||||||||||||||||||
\ |
Указывает фиксированную информацию о версии. При использовании этого ключа возвращается указатель на структуру VS_FIXEDFILEINFO, которая содержится в информации о версии. Описание структуры VS_FIXEDFILEINFO приводится ниже. |
||||||||||||||||||||
\VarFilelnfo\Translation |
Таблица трансляции язык/набор символов. Возвращается указатель на эту таблицу. Приложение использует упомянутую таблицу для составления строк, необходимых для доступа к данным о языке, которые содержатся в информации о версии. > Таблица трансляции состоит из массива из двух записей типа WORD. Первое слово каждой записи представляет собой идентификатор языка, а второе слово идентифицирует набор символов. |
||||||||||||||||||||
\StringFilelnfo\ <LanguageAndCharacterSet> \ <String> |
Определяет запись в языковом разделе информации о версии. Строка <LanguageAndCharacterSet> представляет собой ASCII- " код, указывающий идентификатор языка, а также идентификатор набора символов, полученные из таблицы трансляции. Данные должны быть представлены в шестнадцатиричном формате. Строка <String> — это извлекаемая строка. Допускается применение следующих предопределенных строк: "CompanyName" (название компании), "FileDescription" (описание файла), "FiteVersion" (версия файла), "InternalName" (внутреннее имя), "LegalCopyright" (авторские права), "OriginalFilename" (исходное имя), "ProductName" (название продукта), "Product Version " (версия продукта). В качестве примера рассмотрим следующую строку, которая извлекает название компании, используя идентификатор языка 1033 и набор символов 1252: "\\StringFilelnfo\\040904E4\\CompanyName". |
||||||||||||||||||||
Включаемый файл winver.h |
|||||||||||||||||||||
См. также GetFileVersionlnfo |
|||||||||||||||||||||
Описание структуры VS_FIXEDFILEINFO typedef struct VS FIXEDFILBBWO { DWORD dwSignature; DWORD dwStrucVersion; DWORD dwFileVersionMS; DWORD dwFileVersionLS; DWORD dwProductVersionMS; DWORD dwProductVersionLS; DWORD dwFileFlagsMask; DWORD dwFileFlags; DWORD dwFileOS; DWORD dwFileType; DWORD dwFileSubtype ; DWORD dwFileDateMS ; DWORD dwFileDateLS ; } VS_FIXEDFILEINFO; |
|||||||||||||||||||||
Члены ,:, |
|||||||||||||||||||||
dwSignature DWORD: Этот член содержит значение OXFEEFO4BD. Используется для поиска в файле структуры VS_FIXEDFILEINFO. |
|||||||||||||||||||||
dwStrucVersion |
DWORD: Двоичный номер версии данной структуры. Старшее слово содержит базовый номер версии, а младшее слово — дополнительный номер версии. Значение должно превышать 0X00000029. |
||||||||||||||||||||
dwFileVersionMS |
DWORD: Старшие 32 разряда двоичного номера версии файла. Применяется совместно с dwFileVersionLS, формируя 64-разрядное значение, используемое при сравнении чисел. |
||||||||||||||||||||
dwfileVersionLS |
DWORD: Младшие 32 разряда двоичного номера версии файла. Применяется совместно с dwFileVersionMS, формируя 64-разрядное значение, используемое при сравнении чисел. |
||||||||||||||||||||
dwProductVersion MS |
DWORD: Старшие 32 разряда двоичного номера продукта, в составе которого распространяется данный файл. Применяется совместно с dwProduct VersionLS, формируя 64-разрядное значение, которое используется при сравнении чисел. |
||||||||||||||||||||
thvProdiKtVersiotnLS |
DWORD: Младшие 32 разряда двоичного номера продукта, в составе которого распространяется данный файл. Применяется совместно с dwProductVersionMS, формируя 64-разрядное значение, которое используется при сравнении чисел. |
||||||||||||||||||||
dtvfileflagsMask |
DWORD: Битовая маска, определяющая допустимые значения разрядов dwFileFlags. Бит устанавливается только в случае, если соответствующее ему значение было определено при создании файла. |
||||||||||||||||||||
dwFHeFlags |
DWORD: Битовая маска, определяющая логические атрибуты файла. Этот член может содержать одно или несколько значений, перечисленных в табл. 29.9. |
||||||||||||||||||||
Таблица 29.9 Значения члена dwFileFlags структуры VS_FIXEDFILEINFO |
|||||||||||||||||||||
Флаг |
Описание |
||||||||||||||||||||
VS_FF_DEBUG |
Файл содержит отладочную информацию либо откомпилирован со включенными функциями отладки. |
||||||||||||||||||||
VS_FF_INFOINFERRED |
Структура версии файла создавалась динамически. Некоторые члены этой структуры могут быть пустыми либо некорректными. Этот флаг никогда не устанавливается в данных VS_VERSION_INFO файла. |
||||||||||||||||||||
VS_FF_PATCHED |
Файл был модифицирован, поэтому не идентичен поставляемому исходному файлу с тем же номером версии. |
||||||||||||||||||||
VS_FF_PRERELEASE |
Файл представляет собой рабочую версию, а не коммерческий продукт. |
||||||||||||||||||||
VS_FF_PRIVATEBUILD |
Файл был создан без использования стандартных процедур выпуска. Если этот флаг установлен, строка StringFilelnfo должна содержать запись PrivateBuild. |
||||||||||||||||||||
VS_FF_SPECIALBUILD |
Файл был создан компанией-разработчиком с применением стандартных процедур выпуска, но является вариантом файла с тем же номером версии. Если этот флаг установлен, строка StringFilelnfo должна содержать запись SpecialBuild. |
||||||||||||||||||||
dwFile OS |
DWORD: Операционная система, для которой данный файл предназначен. Этот член может принимать одно из значений, перечисленных в табл. 29.10. |
||||||||||||||||||||
Таблица 29. 10 Значения члена dwFileOS структуры VS_FIXEDFILEINFO |
|||||||||||||||||||||
Значение |
Описание |
||||||||||||||||||||
VOS_DOS |
Файл разработан для MS-DOS. |
||||||||||||||||||||
VOS_DOS_WINDOWS16 |
Файл разработан для 16-разрядной Windows, выполняемой поверх MS-DOS. |
||||||||||||||||||||
VOS_DOS_WINDOWS32 |
Файл разработан для Win32 API, выполняемого поверх MS-DOS. |
||||||||||||||||||||
VOS_OS216 |
Файл разработан для 16-разрядной OS/2. |
||||||||||||||||||||
VOS_OS216_PMU |
Файл разработан для 16-разрядной среды Presentation Manager, выполняемой под управлением 16-разрядной OS/2. |
||||||||||||||||||||
VOS_OS232 |
Файл разработан для 32-разрядной OS/2. |
||||||||||||||||||||
VOS_OS232_PM32 |
Файл разработан для 32-разрядной среды Presentation Manager, выполняемой под управлением 32-разрядной OS/2. |
||||||||||||||||||||
VOS_PM16 |
Файл разработан для 16-разрядной среды Presentation Manager. |
||||||||||||||||||||
VOS_PM32 |
Файл разработан для 32-разрядной среды Presentation Manager. |
||||||||||||||||||||
VOS_NT |
Файл разработан для Windows NT. |
||||||||||||||||||||
VOS_NT_WINDOWS32 |
Файл разработан для Win32 API, выполняемого под управлением Windows NT. |
||||||||||||||||||||
VOS_UNKNOWN |
Windows не может распознать операционную систему, для которой разработан файл. |
||||||||||||||||||||
VOS_WINDOWS16 |
Файл разработан для 16-разрядной Windows. |
||||||||||||||||||||
VOS_WINDOWS32 |
Файл разработан для Win32 API. |
||||||||||||||||||||
dw file Type |
DWORD: Общий тип файла. dwFileType может принимать одно из значений, перечисленных в табл. 29.11. Возможно присвоение других значений, которые не перечислены в таблице, поскольку зарезервированы Microsoft для будущего использования. |
||||||||||||||||||||
Таблица 29.11 Значения члена dwFileType структуры VS_FIXEDFILEINFO |
|||||||||||||||||||||
Значение |
Описание |
||||||||||||||||||||
VFT_APP |
Файл содержит приложение |
||||||||||||||||||||
VFT_DLL |
Файл содержит динамически компонуемую библиотеку (DLL). |
||||||||||||||||||||
VFT_DRV |
Файл содержит драйвер устройства. Если dwFileType имеет значение VFT_DRV, dwFileSubtype содержит более полное описание драйвера. |
||||||||||||||||||||
VFT_FONT |
Файл содержит шрифт. Если dwFileType имеет значение VFT_FONT, dwFileSubtype содержит более полное описание файла шрифта. |
||||||||||||||||||||
VFT_STATIC_LIB |
Файл содержит статически компонуемую библиотеку. |
||||||||||||||||||||
VFT_UNKNOWN |
Windows не может распознать тип файла. |
||||||||||||||||||||
VFT_VXD |
Файл содержит виртуальное устройство. |
||||||||||||||||||||
dwFileSubtype |
DWORD: Специфическая функция файла. Обычно для этого члена устанавливается значение 0 за исключением случаев, когда dwFileType принимает значения VFT_DRV, VFT_FONT и VFT_VXD. Если dwFileType равен VFT_DRV, dwFileSubtype может принимать одно из значений, перечисленных в табл. 29.12. Если dwFileType равен VFT_FONT, dwFileSubtype может принимать одно из значений, перечисленных в табл. 29.13. Когда dwFileType равен VFT_VXD, dwFileSubtype содержит идентификатор виртуального устройства, включенный в его блок управления. Все не перечисленные здесь значения dwFileSubtype зарезервированы Microsoft для будущего использования. |
||||||||||||||||||||
Таблица 29.12 Значения члена dwFileSubtype структуры VS_FIXEDFILEINFO для различных типов драйверов (dwFileType равен VFT_DRVj |
|||||||||||||||||||||
Значение |
Описание |
||||||||||||||||||||
VFT2_DRV_COMM |
Файл содержит коммуникационный драйвер. |
||||||||||||||||||||
VFT2_DRV_DISPLAY |
Файл содержит драйвер дисплея. |
||||||||||||||||||||
VFT2_DRV_INSTALLABLE |
Файл содержит устанавливаемый драйвер. |
||||||||||||||||||||
VFT2_DRV_KEYBOARD |
Файл содержит драйвер клавиатуры. |
||||||||||||||||||||
VFT2_DRV_LANGUAGE |
Файл содержит драйвер языка. |
||||||||||||||||||||
VFT2_DRV_MOUSE |
Файл содержит драйвер мыши. |
||||||||||||||||||||
VFT2_DRV_NETWORK |
Файл содержит сетевой драйвер. |
||||||||||||||||||||
VFT2_DRV_PRINTER |
Файл содержит драйвер принтера. |
||||||||||||||||||||
VFT2_DRV_SOUND |
Файл содержит звуковой драйвер. |
||||||||||||||||||||
VFT2_DRV_SYSTEM |
Файл содержит системный драйвер. |
||||||||||||||||||||
VFT2_UNKNOWN |
Windows не может распознать тип драйвера. |
||||||||||||||||||||
Таблица 29.13 Значения члена dwFileSubtype структуры VS_FIXEDFILEINFO для различных типов шрифтов (dwFileType равен VFT_FONTJ |
|||||||||||||||||||||
Значение |
Описание |
||||||||||||||||||||
VFT2_FONT_RASTER |
Файл содержит растровый шрифт. |
||||||||||||||||||||
VFT2_FONT_TRUETYPE |
Файл содержит шрифт TrueType. |
||||||||||||||||||||
VFT2_FONT_VECTOR |
Файл содержит векторный шрифт. |
||||||||||||||||||||
VFT2_UNKNOWN |
Windows не может распознать тип шрифта. |
||||||||||||||||||||
dwFileDateMS |
DWORD: Старшие 32 разряда даты и времени создания файла. Используется совместно с dwFileDateLS, формируя 64-разрядное двоичное число. |
||||||||||||||||||||
dwFtleDateLS |
DWORD: Младшие 32 разряда даты и времени создания файла. Используется совместно с dwFileDateMS, формируя 64-разрядное двоичное число. |
||||||||||||||||||||
Пример |
Пример использования данной функции приведен' в описании GetFile-Versionlnfo. |
||||||||||||||||||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.