VerQueryValueA-Funktion (winver.h)
Ruft die angegebenen Versionsinformationen aus der angegebenen Versionsinformationsressource ab. Um die entsprechende Ressource abzurufen, müssen Sie vor dem Aufrufen 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 versionsinformationsressource, die von der GetFileVersionInfo-Funktion zurückgegeben wird.
[in] lpSubBlock
Typ: LPCTSTR-
Der abzurufende Versionsinformationswert. Die Zeichenfolge muss aus Namen bestehen, die durch umgekehrte Schrägstriche (\) getrennt sind und eine der folgenden Formen aufweisen muss.
\
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 – dem Value Member dieser Struktur. Die Funktion ruft einen Zeiger auf dieses Array von Sprach- und Codeseitenbezeichnern ab. Eine Anwendung kann diese Bezeichner verwenden, um in der Versionsinformationsressource auf eine sprachspezifische StringTable--Struktur zuzugreifen (mithilfe des szKey Members).
\StringFileInfo\lang-codepage\string-name
Ein Wert in einer sprachspezifischen StringTable- Struktur. Die lang-codepage Name ist eine Verkettung eines Sprach- und Codeseitenbezeichnerpaars, das als DWORD- im Übersetzungsarray für die Ressource gefunden wird. Hier muss die lang-codepage Name als hexadezimale Zeichenfolge angegeben werden. Der Zeichenfolgenname Name muss eine der vordefinierten Zeichenfolgen sein, die im folgenden Abschnitt "Hinweise" beschrieben sind. Die Funktion ruft einen Zeichenfolgenwert ab, der für die angegebene Sprache und Codepage spezifisch ist.
[out] lplpBuffer
Typ: LPVOID*
Wenn diese Methode zurückgegeben wird, enthält die Adresse eines Zeigers auf die angeforderten Versionsinformationen im Puffer, auf die durch pBlock-verwiesen wird. Der von lplpBuffer verweister Speicher wird freigegeben, wenn der zugeordnete pBlock Arbeitsspeicher freigegeben wird.
[out] puLen
Typ: PUINT-
Wenn diese Methode zurückgegeben wird, enthält sie einen Zeiger auf die Größe der angeforderten Daten, auf die durch lplpBufferverwiesen wird: für Versionsinformationswerte die Länge in Zeichen der Zeichenfolge, die bei lplpBuffergespeichert ist; für Übersetzungsarraywerte die Größe in Byte des Arrays, das bei lplpBuffergespeichert ist; und für den Stammblock die Größe in Byte der Struktur.
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, steht für den angegebenen Versionsinformationsnamen kein Wert zur Verfügung.
Wenn der angegebene Name nicht vorhanden ist oder die angegebene Ressource ungültig ist, ist der Rückgabewert null.
Bemerkungen
Diese Funktion funktioniert in 16-, 32- und 64-Bit-Dateibildern.
Im Folgenden sind vordefinierte Versionsinformationen unicode-Zeichenfolgen 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 aufzählen 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);
}
Anmerkung
Der winver.h-Header definiert VerQueryValue als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante 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 |
---|---|
mindestens unterstützte Client- | Windows 2000 Professional [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | winver.h (enthalten Windows.h) |
Library | Version.lib |
DLL- | Api-ms-win-core-version-l1-1-0.dll |
Siehe auch
Konzeptionelle
Referenz-