Querying for Version Information
The VERSIONINFO resource makes it easier for applications to install files properly by allowing the setup program to analyze files that are installed already. In this way, you can avoid problems such as installing older versions of components over newer versions, installing multiple copies of the same file in different directories, and changing the language in a mixed-language system.
Effective with version 3.0, Windows CE provides these version-querying functions, which are a subset of the Win32 version-information API:
To obtain version information, first call the GetFileVersionInfoSize function with the name of the file that you want to query. This function determines whether the specified file contains a VERSIONINFO resource with the version number of the file, its intended OS, and its original file name. If version information is available, GetFileVersionInfoSize returns the size, in bytes, of that information.
Use the size information and the file name to call the GetFileVersionInfo function to allocate a data buffer and retrieve the version information. If the function succeeds, the [out] parameter lpData will point to the buffer that contains the file-version information.
Call the VersionQueryValue function with the pointer to the buffer and another pointer to a string that specifies the sub-block of information to retrieve. The string must consist of names that are separated by backslashes (\), and it must have one of the following forms.
|\||Specifies the root block. The function retrieves a pointer to a structure version information about a file. This information is language and code-page independent.|
|\VarFileInfo\Translation||Pointer to a structure that depicts the organization of data in a file-version resource. This structure typically contains a list of language and code-page identifier pairs that the version of the application or dynamic-link library (DLL) supports. An application can use these identifiers to access a language-specific StringTable structure in the version-information resource.|
|\StringFileInfo\lang-codepage\string-name||Specifies a value in a language-specific StringTable structure. The lang-codepage name is a concatenation of a language and code-page identifier pair that is found as a DWORD in the translation array for the resource. Here the lang-codepage name must be specified as a hexadecimal string. The string-name name must be one of the following predefined strings: Comments, InternalName, ProductName, CompanyName, LegalCopyright, ProductVersion, FileDescription, LegalTrademarks, PrivateBuild, FileVersion, OriginalFilename, SpecialBuild. The function retrieves a string value specific to the language and code page indicated.|
For more information on obtaining and using version information, see the User Interface Services section of the Microsoft Win32® Platform Software Development Kit (SDK).