Condividi tramite


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

GetFileVersionInfo

GetFileVersionInfoSize

Riferimento

Stringa

StringFileInfo

Stringtable

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var

VarFileInfo

Informazioni sulla versione