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 |
関連項目
概念
リファレンス