Fonction VerQueryValueA (winver.h)

Récupère les informations de version spécifiées à partir de la ressource d’informations sur la 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 sur la 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 , le membre Value de cette structure. La fonction récupère un pointeur vers ce tableau d’identificateurs de langue et de page de code. Une application peut utiliser ces identificateurs pour accéder à une structure StringTable spécifique au langage (à l’aide du membre szKey ) dans la ressource d’informations de version.

\StringFileInfo\lang-codepage\string-name

Valeur dans une structure StringTable spécifique au langage. Le nom de la page lang-code est une concaténation d’une paire d’identificateurs de langue et de page de code trouvée en tant que DWORD dans le tableau de traduction de la ressource. Ici, le nom lang-codepage doit être spécifié sous la forme d’une 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 code indiquées.

[out] lplpBuffer

Type : LPVOID*

Lorsque cette méthode retourne, 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 pBlock associée est libérée.

[out] puLen

Type : PUINT

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

Valeur retournée

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 zéro.

Remarques

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

Voici des chaînes Unicode d’informations de version prédéfinies.

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); 
}

Notes

L’en-tête winver.h définit VerQueryValue comme un 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winver.h (inclure Windows.h)
Bibliothèque Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

Voir aussi

Conceptuel

GetFileVersionInfo

GetFileVersionInfoSize

Référence

Chaîne

StringFileInfo

StringTable

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var

VarFileInfo

Informations sur la version