VerQueryValueA 函式 (winver.h)

從指定的版本資訊資源擷取指定的版本資訊。 若要擷取適當的資源,您必須先呼叫 GetFileVersionInfoSize 函式,然後再呼叫 GetFileVersionInfo 函式。

語法

BOOL VerQueryValueA(
  [in]  LPCVOID pBlock,
  [in]  LPCSTR  lpSubBlock,
  [out] LPVOID  *lplpBuffer,
  [out] PUINT   puLen
);

參數

[in] pBlock

類型: LPCVOID

GetFileVersionInfo 函式所傳回的版本信息資源。

[in] lpSubBlock

類型: LPCTSTR

要擷取的版本資訊值。 字串必須由反斜杠分隔的名稱 (\) ,而且必須具有下列其中一種形式。

\

根區塊。 函式會擷取版本資訊資源 VS_FIXEDFILEINFO 結構的指標。

\VarFileInfo\Translation

Var 變數信息結構中的轉譯數位—這個結構的 Value 成員。 函式會擷取這個語言陣列和代碼頁標識碼的指標。 應用程式可以使用這些標識碼,在版本信息資源中使用 szKey 成員) 來存取語言特定的 StringTable 結構 (。

\StringFileInfo\lang-codepage\string-name

語言特定 StringTable 結構中的值。 lang-codepage 名稱是語言和代碼頁標識符組的串連,可在資源的翻譯陣列中找到為 DWORD。 在這裡, lang-codepage 名稱必須指定為十六進位字串。 字串名稱必須是下列一節中所述的其中一個預先定義字串。 函式會擷取指定的語言和代碼頁特定的字串值。

[out] lplpBuffer

類型: LPVOID*

當這個方法傳回時,會包含 pBlock 所指向之緩衝區中所要求版本資訊的指標位址。 釋放相關聯的 pBlock 記憶體時,會釋放 lplpBuffer 所指向的記憶體。

[out] puLen

類型: PUINT

當這個方法傳回時,會包含 lplpBuffer 所指向之所要求數據大小的指標:對於版本資訊值,儲存在 lplpBuffer 之字串的長度;若為轉譯數位值,則為儲存在 lplpBuffer 之陣列的大小,以位元組為單位;若為根區塊,則為 結構的大小,以位元組為單位。

傳回值

類型: BOOL

如果指定的版本信息結構存在,且版本資訊可用,則傳回值為非零。 如果長度緩衝區的位址為零,則指定的版本資訊名稱沒有可用的值。

如果指定的名稱不存在或指定的資源無效,則傳回值為零。

備註

此函式適用於16位、32位和64位檔案映像。

以下是預先定義的版本資訊 Unicode 字串。

註解 InternalName ProductName
CompanyName LegalCopyright ProductVersion
FileDescription LegalTrademarks PrivateBuild
FileVersion OriginalFilename SpecialBuild
 

範例

下列範例示範如何列舉可用的版本語言,並擷取每個語言的 FileDescription 字串值。

請務必先呼叫 GetFileVersionInfoSize 和 GetFileVersionInfo 函式,再呼叫 VerQueryValue 以正確初始化 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); 
}

注意

winver.h 標頭會將 VerQueryValue 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。

規格需求

需求 值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 winver.h (包含 Windows.h)
程式庫 Version.lib
Dll Api-ms-win-core-version-l1-1-0.dll

另請參閱

概念

GetFileVersionInfo

GetFileVersionInfoSize

參考

字串

StringFileInfo

StringTable

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var

VarFileInfo

版本資訊