Função VerQueryValueA (winver.h)

Recupera informações de versão especificadas do recurso de informações de versão especificado. Para recuperar o recurso apropriado, antes de chamar VerQueryValue, você deve primeiro chamar a função GetFileVersionInfoSize e, em seguida, a função GetFileVersionInfo .

Sintaxe

BOOL VerQueryValueA(
  [in]  LPCVOID pBlock,
  [in]  LPCSTR  lpSubBlock,
  [out] LPVOID  *lplpBuffer,
  [out] PUINT   puLen
);

Parâmetros

[in] pBlock

Tipo: LPCVOID

O recurso de informações de versão retornado pela função GetFileVersionInfo .

[in] lpSubBlock

Tipo: LPCTSTR

O valor de informações de versão a ser recuperado. A cadeia de caracteres deve consistir em nomes separados por barras invertidas (\) e deve ter uma das formas a seguir.

\

O bloco raiz. A função recupera um ponteiro para a estrutura VS_FIXEDFILEINFO para o recurso de informações de versão.

\VarFileInfo\Translation

A matriz de tradução em uma estrutura de informações da variável Var – o membro Value dessa estrutura. A função recupera um ponteiro para essa matriz de identificadores de página de código e idioma. Um aplicativo pode usar esses identificadores para acessar uma estrutura StringTable específica do idioma (usando o membro szKey ) no recurso de informações de versão.

\StringFileInfo\lang-codepage\string-name

Um valor em uma estrutura StringTable específica do idioma. O nome da página lang-code é uma concatenação de um par de identificadores de página de código e idioma encontrado como um DWORD na matriz de tradução do recurso. Aqui, o nome da página lang-code deve ser especificado como uma cadeia de caracteres hexadecimal. O nome da cadeia de caracteres deve ser uma das cadeias de caracteres predefinidas descritas na seção Comentários a seguir. A função recupera um valor de cadeia de caracteres específico para a página de idioma e código indicada.

[out] lplpBuffer

Tipo: LPVOID*

Quando esse método retorna, contém o endereço de um ponteiro para as informações de versão solicitadas no buffer apontado por pBlock. A memória apontada por lplpBuffer é liberada quando a memória pBlock associada é liberada.

[out] puLen

Tipo: PUINT

Quando esse método retorna, contém um ponteiro para o tamanho dos dados solicitados apontados por lplpBuffer: para valores de informações de versão, o comprimento em caracteres da cadeia de caracteres armazenada em lplpBuffer; para valores de matriz de tradução, o tamanho em bytes da matriz armazenada em lplpBuffer; e para o bloco raiz, o tamanho em bytes da estrutura.

Retornar valor

Tipo: BOOL

Se a estrutura de informações de versão especificada existir e as informações de versão estiverem disponíveis, o valor retornado não será zero. Se o endereço do buffer de comprimento for zero, nenhum valor estará disponível para o nome de informações de versão especificado.

Se o nome especificado não existir ou o recurso especificado não for válido, o valor retornado será zero.

Comentários

Essa função funciona em imagens de arquivo de 16, 32 e 64 bits.

Veja a seguir as informações de versão predefinidas Cadeias de caracteres Unicode.

Comentários InternalName ProductName
CompanyName LegalCopyright ProductVersion
FileDescription LegalTrademarks PrivateBuild
FileVersion OriginalFilename SpecialBuild
 

Exemplos

O exemplo a seguir mostra como enumerar os idiomas de versão disponíveis e recuperar o valor da cadeia de caracteres FileDescription para cada idioma.

Chame as funções GetFileVersionInfoSize e GetFileVersionInfo antes de chamar VerQueryValue para inicializar corretamente o buffer pBlock .

// Structure used to store enumerated languages and code pages.

HRESULT hr;

struct LANGANDCODEPAGE {
  WORD wLanguage;
  WORD wCodePage;
} *lpTranslate;

// Read the list of languages and code pages.

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++ )
{
  hr = StringCchPrintf(SubBlock, 50,
            TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"),
            lpTranslate[i].wLanguage,
            lpTranslate[i].wCodePage);
	if (FAILED(hr))
	{
	// TODO: write error handler.
	}

  // Retrieve file description for language and code page "i". 
  VerQueryValue(pBlock, 
                SubBlock, 
                &lpBuffer, 
                &dwBytes); 
}

Observação

O cabeçalho winver.h define VerQueryValue como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winver.h (inclua Windows.h)
Biblioteca Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

Confira também

Conceitual

GetFileVersionInfo

GetFileVersionInfoSize

Referência

Cadeia de caracteres

StringFileInfo

Stringtable

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var

VarFileInfo

Informações sobre versão