Freigeben über


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

GetFileVersionInfo-

GetFileVersionInfoSize-

Referenz-

Zeichenfolgen-

StringFileInfo-

StringTable-

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var-

VarFileInfo-

Versionsinformationen