Partager via


Fonction VerQueryValueA (winver.h)

Récupère les informations de version spécifiées à partir de la ressource d’informations de version spécifiée. Pour récupérer la ressource appropriée, avant d’appeler VerQueryValue, vous devez d’abord appeler la fonction GetFileVersionInfoSize, puis la fonction GetFileVersionInfo.

Syntaxe

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

Paramètres

[in] pBlock

Type : LPCVOID

Ressource d’informations de version retournée par la fonction GetFileVersionInfo.

[in] lpSubBlock

Type : LPCTSTR

Valeur d’informations de version à récupérer. La chaîne doit se composer de noms séparés par des barres obliques inverses (\) et doit avoir l’une des formes suivantes.

\

Bloc racine. La fonction récupère un pointeur vers la structure VS_FIXEDFILEINFO pour la ressource d’informations de version.

\VarFileInfo\Translation

Tableau de traduction dans une structure d’informations de variable Var , membre Valeur de cette structure. La fonction récupère un pointeur vers ce tableau d’identificateurs de langue et de page de codes. Une application peut utiliser ces identificateurs pour accéder à une structure de stringTable spécifique à une langue (à l’aide de la szKey membre) dans la ressource d’informations de version.

\StringFileInfo\lang-codepage\string-name

Valeur dans une structure StringTable spécifique au langage. La nom lang-codepage est une concaténation d’une paire d’identificateurs de langue et de page de codes trouvée sous la forme d’une DWORD dans le tableau de traduction de la ressource. Ici, la nom de lang-codepage doit être spécifiée sous forme de chaîne hexadécimale. Le nom de chaîne doit être l’une des chaînes prédéfinies décrites dans la section Remarques suivante. La fonction récupère une valeur de chaîne spécifique à la langue et à la page de codes indiquées.

[out] lplpBuffer

Type : LPVOID*

Lorsque cette méthode est retournée, contient l’adresse d’un pointeur vers les informations de version demandées dans la mémoire tampon pointée par pBlock. La mémoire pointée par lplpBuffer est libérée lorsque la mémoire p Block associée est libérée.

[out] puLen

Type : PUINT

Lorsque cette méthode est retournée, contient un pointeur vers la taille des données demandées pointées par lplpBuffer: pour les valeurs d’informations de version, longueur en caractères de la chaîne stockée à lplpBuffer; pour les valeurs du tableau de traduction, la taille en octets du tableau stockée à lplpBuffer; et pour le bloc racine, la taille en octets de la structure.

Valeur de retour

Type : BOOL

Si la structure d’informations de version spécifiée existe et que les informations de version sont disponibles, la valeur de retour est différente de zéro. Si l’adresse de la mémoire tampon de longueur est égale à zéro, aucune valeur n’est disponible pour le nom d’informations de version spécifié.

Si le nom spécifié n’existe pas ou si la ressource spécifiée n’est pas valide, la valeur de retour est égale à zéro.

Remarques

Cette fonction fonctionne sur les images de fichier 16,32 et 64 bits.

Les chaînes Unicode des informations de version prédéfinies sont les suivantes.

Commentaires InternalName ProductName
CompanyName LegalCopyright ProductVersion
FileDescription LegalTrademarks PrivateBuild
FileVersion OriginalFilename SpecialBuild
 

Exemples

L’exemple suivant montre comment énumérer les langues de version disponibles et récupérer la valeur de chaîne FileDescription pour chaque langue.

Veillez à appeler les fonctions GetFileVersionInfoSize et GetFileVersionInfo avant d’appeler VerQueryValue pour initialiser correctement la mémoire tampon 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); 
}

Note

L’en-tête winver.h définit VerQueryValue comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winver.h (inclure Windows.h)
bibliothèque Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

Voir aussi

conceptuelle

GetFileVersionInfo

GetFileVersionInfoSize

de référence

chaîne

StringFileInfo

StringTable

VS_FIXEDFILEINFO

VS_VERSIONINFO

var

VarFileInfo

informations de version