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

GetFileVersionInfo

GetFileVersionInfoSize

Referenz

String

StringFileInfo

Stringtable

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var

VarFileInfo

Versionsinformationen