Декомпрессия и установка файлов, страница 3

Таблица 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.