Funzione VerQueryValueA (winver.h)
Recupera le informazioni sulla versione specificate dalla risorsa di informazioni sulla versione specificata. Per recuperare la risorsa appropriata, prima di chiamare VerQueryValue, è prima necessario chiamare la funzione GetFileVersionInfoSize e quindi la funzione GetFileVersionInfo .
Sintassi
BOOL VerQueryValueA(
[in] LPCVOID pBlock,
[in] LPCSTR lpSubBlock,
[out] LPVOID *lplpBuffer,
[out] PUINT puLen
);
Parametri
[in] pBlock
Tipo: LPCVOID
Risorsa delle informazioni sulla versione restituita dalla funzione GetFileVersionInfo .
[in] lpSubBlock
Tipo: LPCTSTR
Valore delle informazioni sulla versione da recuperare. La stringa deve essere costituita da nomi separati da barre rovesciate (\) e deve avere una delle forme seguenti.
\
Blocco radice. La funzione recupera un puntatore alla struttura VS_FIXEDFILEINFO per la risorsa di informazioni sulla versione.
\VarFileInfo\Translation
Matrice di traduzione in una struttura di informazioni sulle variabili Var , ovvero il membro Value di questa struttura. La funzione recupera un puntatore a questa matrice di identificatori della lingua e della tabella codici. Un'applicazione può usare questi identificatori per accedere a una struttura StringTable specifica del linguaggio (usando il membro szKey ) nella risorsa delle informazioni sulla versione.
\StringFileInfo\lang-codepage\string-name
Valore in una struttura StringTable specifica del linguaggio. Il nome lang-codepage è una concatenazione di una coppia di identificatori di lingua e tabella codici trovata come DWORD nella matrice di traduzione per la risorsa. Qui il nome lang-codepage deve essere specificato come stringa esadecimale. Il nome stringa deve essere una delle stringhe predefinite descritte nella sezione Osservazioni seguenti. La funzione recupera un valore stringa specifico della lingua e della tabella codici indicato.
[out] lplpBuffer
Tipo: LPVOID*
Quando questo metodo restituisce, contiene l'indirizzo di un puntatore alle informazioni sulla versione richieste nel buffer a cui fa riferimento pBlock. La memoria puntata da lplpBuffer viene liberata quando la memoria pBlock associata viene liberata.
[out] puLen
Tipo: PUINT
Quando questo metodo restituisce, contiene un puntatore alle dimensioni dei dati richiesti a cui punta lplpBuffer: per i valori delle informazioni sulla versione, la lunghezza in caratteri della stringa archiviata in lplpBuffer; per i valori della matrice di traduzione, le dimensioni in byte della matrice archiviate in lplpBuffer; e per il blocco radice, le dimensioni in byte della struttura.
Valore restituito
Tipo: BOOL
Se la struttura delle informazioni sulla versione specificata esiste e le informazioni sulla versione sono disponibili, il valore restituito è diverso da zero. Se l'indirizzo del buffer di lunghezza è zero, nessun valore è disponibile per il nome specificato delle informazioni sulla versione.
Se il nome specificato non esiste o la risorsa specificata non è valida, il valore restituito è zero.
Commenti
Questa funzione funziona su immagini di file a 16, 32 e a 64 bit.
Di seguito sono riportate le stringhe Unicode per le informazioni sulla versione predefinite.
Commenti | InternalName | ProductName |
CompanyName | LegalCopyright | ProductVersion |
FileDescription | LegalTrademarks | PrivateBuild |
FileVersion | OriginalFilename | SpecialBuild |
Esempio
Nell'esempio seguente viene illustrato come enumerare le lingue di versione disponibili e recuperare il valore stringa FileDescription per ogni lingua.
Assicurarsi di chiamare le funzioni GetFileVersionInfoSize e GetFileVersionInfo prima di chiamare VerQueryValue per inizializzare correttamente il 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);
}
Nota
L'intestazione winver.h definisce VerQueryValue come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winver.h (include Windows.h) |
Libreria | Version.lib |
DLL | Api-ms-win-core-version-l1-1-0.dll |
Vedi anche
Informazioni concettuali
Riferimento