VerQueryValueA 関数 (winver.h)

指定したバージョン情報リソースから、指定したバージョン情報を取得します。 適切なリソースを取得するには、 VerQueryValue を呼び出す前に、まず 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 メンバーです。 関数は、この言語とコード ページ識別子の配列へのポインターを取得します。 アプリケーションでは、これらの識別子を使用して、バージョン情報リソースの言語固有の StringTable 構造体 ( szKey メンバーを使用) にアクセスできます。

\StringFileInfo\lang-codepage\string-name

言語固有の StringTable 構造体の値。 lang-codepage 名は、リソースの翻訳配列で DWORD として見つかった言語とコード ページ識別子のペアを連結したものです。 ここでは、 lang-codepage 名を 16 進数の文字列として指定する必要があります。 文字列名は、次の「解説」セクションで説明する定義済みの文字列のいずれかである必要があります。 関数は、指定された言語とコード ページに固有の文字列値を取得します。

[out] lplpBuffer

種類: LPVOID*

このメソッドから制御が戻るときに、 pBlock が指すバッファー内の要求されたバージョン情報へのポインターのアドレスが格納されます。 lplpBuffer が指すメモリは、関連付けられている pBlock メモリが解放されると解放されます。

[out] puLen

型: PUINT

このメソッドが戻るときに、 には、 lplpBuffer が指す要求されたデータのサイズへのポインターが含まれます。バージョン情報の値の場合は、 lplpBuffer に格納されている文字列の文字数です。変換配列の値の場合は、 lplpBuffer に格納されている配列のサイズ (バイト単位)。ルート ブロックの場合は、 構造体のバイト単位のサイズ。

戻り値

種類: BOOL

指定したバージョン情報構造体が存在し、バージョン情報が使用可能な場合、戻り値は 0 以外です。 長さバッファーのアドレスが 0 の場合、指定したバージョン情報名に使用できる値はありません。

指定した名前が存在しない場合、または指定したリソースが無効な場合、戻り値は 0 になります。

注釈

この関数は、16 ビット、32 ビット、64 ビットのファイル イメージで動作します。

定義済みのバージョン情報 Unicode 文字列を次に示します。

説明 InternalName ProductName
CompanyName LegalCopyright ProductVersion
FileDescription LegalTrademarks PrivateBuild
FileVersion OriginalFilename SpecialBuild
 

次の例は、使用可能なバージョン言語を列挙し、各言語の FileDescription 文字列値を取得する方法を示しています。

VerQueryValue を呼び出して pBlock バッファーを適切に初期化する前に、必ず GetFileVersionInfoSize 関数と GetFileVersionInfo 関数を呼び出してください。

// 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 を含む)
Library Version.lib
[DLL] Api-ms-win-core-version-l1-1-0.dll

関連項目

概念

GetFileVersionInfo

GetFileVersionInfoSize

リファレンス

String

StringFileInfo

StringTable

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var

VarFileInfo

バージョン情報