Export (0) Print
Expand All

VerQueryValue (Compact 2013)

3/28/2014

This function returns selected version information from the specified version-information resource. To retrieve the appropriate resource, call GetFileVersionInfoSize, and then call GetFileVersionInfo, and then call VerQueryValue.


BOOL VerQueryValue(
  const LPVOID pBlock,
  LPTSTR lpSubBlock,
  LPVOID* lplpBuffer,
  PUINT puLen
);

pBlock

[in] Pointer to the buffer containing the version-information resource returned by the GetFileVersionInfo function.

lpSubBlock

[in] Pointer to a zero-terminated string specifying which version-information value to retrieve. The string must consist of names separated by backslashes (\) and it must have one of the forms shown in the following table.

Form

Description

\

Specifies the root block.

The function retrieves a pointer to the VS_FIXEDFILEINFO structure for 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 found as a DWORD in the translation array for the resource.

Here the lang-codepage name must be specified as a hexadecimal string.

The function retrieves a string value specific to the language and code page indicated.

The string-name name must be one of the following predefined strings:

  • Comments
  • CompanyName
  • FileDescription
  • FileVersion
  • InternalName
  • LegalCopyright
  • LegalTrademarks
  • OriginalFilename
  • ProductName
  • ProductVersion
  • PrivateBuild
  • SpecialBuild

\VarFileInfo\Translation

Specifies the translation array in a Var variable information structure.

The function retrieves a pointer to an array of language and code page identifiers.

An application can use these identifiers to access a language-specific StringTable structure in the version-information resource.

lplpBuffer

[out] Pointer to a variable that receives a pointer to the requested version information in the buffer pointed to by pBlock. The memory pointed to by *lplpBuffer is freed when the associated pBlock memory is freed.

puLen

[out] Pointer to a buffer that receives the length, in characters, of the version-information value.

Nonzero indicates that the specified version-information structure exists, and version information is available. If the address of the length buffer is zero, no value is available for the specified version-information name. Zero indicates that the specified name does not exist or the specified resource is not valid.

The version information functions are only compatible with 32-bit Windows file images. They are not compatible with 16-bit Windows file images.

The following code sample shows how to enumerate the available version languages and retrieve the FileDescription string-value for each language. Be sure to call the GetFileVersionInfoSize and GetFileVersionInfo functions before calling VerQueryValue to properly initialize the pBlock buffer.

Ee488392.note(en-us,WinEmbedded.80).gifImportant:
For readability, the following code example does not contain security checking or error handling. Do not use the following code in a production environment.
// Structure used to store enumerated languages and code pages.
struct LANGANDCODEPAGE {
  WORD wLanguage;
  WORD wCodePage;
} *lpTranslate;
// Read the list of languages and code pages.
DWORD cbTranslate = 0;
VerQueryValue(pBlock,
   TEXT("\\VarFileInfo\\Translation"),
   (LPVOID*)&lpTranslate,
   &cbTranslate);
// Read the file description for each language and code page.
for( i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )
{
   wsprintf( SubBlock,
   TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"),
   lpTranslate[i].wLanguage,
   lpTranslate[i].wCodePage);
   // Retrieve file description for language and code page "i".
   VerQueryValue(pBlock,
   SubBlock,
   &lpBuffer,
   &dwBytes);
}

Header

winbase.h

Library

coredll.lib

Show:
© 2014 Microsoft