VerQueryValueA-Funktion (winver.h)
Ruft die angegebenen Versionsinformationen aus der angegebenen Versionsinformationsressource ab. Um die entsprechende Ressource abzurufen, müssen Sie vor dem Aufrufen von VerQueryValue zuerst die GetFileVersionInfoSize-Funktion und dann die GetFileVersionInfo-Funktion aufrufen.
Syntax
BOOL VerQueryValueA(
[in] LPCVOID pBlock,
[in] LPCSTR lpSubBlock,
[out] LPVOID *lplpBuffer,
[out] PUINT puLen
);
Parameter
[in] pBlock
Typ: LPCVOID
Die von der GetFileVersionInfo-Funktion zurückgegebene Versionsinformationsressource.
[in] lpSubBlock
Typ: LPCTSTR
Der abzurufende Versionsinformationswert. Die Zeichenfolge muss aus Namen bestehen, die durch umgekehrte Schrägstriche (\) getrennt sind, und sie muss eine der folgenden Formen aufweisen.
\
Der Stammblock. Die Funktion ruft einen Zeiger auf die VS_FIXEDFILEINFO-Struktur für die Versionsinformationsressource ab.
\VarFileInfo\Translation
Das Übersetzungsarray in einer Var-Variableninformationsstruktur– das Value-Element dieser Struktur. Die Funktion ruft einen Zeiger auf dieses Array von Sprach- und Codepagebezeichnern ab. Eine Anwendung kann diese Bezeichner verwenden, um auf eine sprachspezifische StringTable-Struktur (mithilfe des szKey-Elements ) in der Versionsinformationsressource zuzugreifen.
\StringFileInfo\lang-codepage\string-name
Ein -Wert in einer sprachspezifischen StringTable-Struktur . Der Name der Lang-Codepage ist eine Verkettung eines Sprach- und Codepagebezeichnerpaars, das als DWORD im Übersetzungsarray für die Ressource gefunden wird. Hier muss der Name der lang-codepage als hexadezimale Zeichenfolge angegeben werden. Der Name der Zeichenfolge muss eine der vordefinierten Zeichenfolgen sein, die im folgenden Abschnitt "Hinweise" beschrieben werden. Die Funktion ruft einen Zeichenfolgenwert ab, der für die angegebene Sprache und Codepage spezifisch ist.
[out] lplpBuffer
Typ: LPVOID*
Wenn diese Methode zurückgibt, enthält die Adresse eines Zeigers auf die angeforderten Versionsinformationen im Puffer, auf den pBlock verweist. Der speicher, auf den lplpBuffer verweist, wird freigegeben, wenn der zugeordnete pBlock-Speicher freigegeben wird.
[out] puLen
Typ: PUINT
Wenn diese Methode zurückgibt, enthält einen Zeiger auf die Größe der angeforderten Daten, auf die von lplpBuffer verwiesen wird: bei Versionsinformationswerten die Länge in Zeichen der bei lplpBuffer gespeicherten Zeichenfolge; für Übersetzungsarraywerte die Größe des Arrays, das in lplpBuffer gespeichert ist, in Byte; und für den Stammblock die Größe der Struktur in Byte.
Rückgabewert
Typ: BOOL
Wenn die angegebene Versionsinformationsstruktur vorhanden ist und Versionsinformationen verfügbar sind, ist der Rückgabewert ungleich null. Wenn die Adresse des Längenpuffers null ist, ist kein Wert für den angegebenen Versionsinformationsnamen verfügbar.
Wenn der angegebene Name nicht vorhanden ist oder die angegebene Ressource ungültig ist, ist der Rückgabewert null.
Hinweise
Diese Funktion funktioniert für 16-, 32- und 64-Bit-Dateibilder.
Im Folgenden sind unicode-Zeichenfolgen mit vordefinierten Versionsinformationen aufgeführt.
Kommentare | InternalName | ProductName |
CompanyName | LegalCopyright | ProductVersion |
FileDescription | LegalTrademarks | PrivateBuild |
FileVersion | OriginalFilename | SpecialBuild |
Beispiele
Das folgende Beispiel zeigt, wie Sie die verfügbaren Versionssprachen auflisten und den FileDescription-Zeichenfolgenwert für jede Sprache abrufen.
Rufen Sie unbedingt die Funktionen GetFileVersionInfoSize und GetFileVersionInfo auf, bevor Sie VerQueryValue aufrufen, um den pBlock-Puffer ordnungsgemäß zu initialisieren.
// 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);
}
Hinweis
Der winver.h-Header definiert VerQueryValue als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winver.h (windows.h einschließen) |
Bibliothek | Version.lib |
DLL | Api-ms-win-core-version-l1-1-0.dll |
Siehe auch
Konzept
Referenz