SetupGetBinaryField 関数 (setupapi.h)
[この機能は、「要件」セクションに示されているオペレーティング システムで使用できます。 今後のバージョンでは変更されるか、利用できなくなる場合もあります。 SetupAPI は、アプリケーションのインストールに使用されなくなりました。 代わりに、アプリケーション インストーラーを開発するために Windows インストーラーを使用します。 SetupAPI は、デバイス ドライバーのインストールに引き続き使用されます。]
SetupGetBinaryField 関数は、INF ファイル セクションの行から、指定したフィールドから行の末尾までバイナリ データを取得します。
構文
WINSETUPAPI BOOL SetupGetBinaryField(
[in] PINFCONTEXT Context,
[in] DWORD FieldIndex,
[in, out] PBYTE ReturnBuffer,
[in] DWORD ReturnBufferSize,
[in, out] LPDWORD RequiredSize
);
パラメーター
[in] Context
行の INF コンテキスト。
[in] FieldIndex
バイナリ データの取得元となる指定した行内の開始フィールドの 1 から始まるインデックス。 バイナリ データは、この時点から行の末尾まで、各フィールドから構築されます。 各フィールドは 1 バイトに対応し、16 進数表記です。 この関数では、 FieldIndex が 0 の場合は無効です。
[in, out] ReturnBuffer
バイナリ データを受け取るバッファーへのオプションのポインター。 宛先バッファーのサイズがソース バッファーと同じか大きくなるようにする必要があります。 関数を 1 回呼び出して、必要なバッファー サイズを取得し、必要なメモリを割り当ててから、2 回目に関数を呼び出してデータを取得できます。 この手法を使用すると、バッファー サイズが不十分なため、エラーを回避できます。 「解説」を参照してください。
[in] ReturnBufferSize
ReturnBuffer が指すバッファーのサイズ (文字単位)。 この数値には 、null ターミネータが含まれます。
[in, out] RequiredSize
ReturnBuffer を指すバッファーに必要なサイズを文字で受け取る変数へのオプションのポインター。 この数値には 、null ターミネータが含まれます。 必要なサイズが ReturnBufferSize で指定された値より大きい場合、関数は失敗し、 GetLastError の呼び出しはERROR_INSUFFICIENT_BUFFERを返します。
戻り値
関数が成功した場合、戻り値は 0 以外の値になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
SetupGetBinaryField が取得するフィールドが 0 から FF の範囲内の有効な 16 進数でない場合、GetLastError はERROR_INVALID_DATAを返します。
解説
この関数が NULL の ReturnBuffer で呼び出され、ReturnBufferSize が 0 の場合、この関数は、指定されたデータを保持するために必要なバッファー サイズを RequiredSize が指す変数に格納します。 こので関数が成功した場合、戻り値は 0 以外の値になります。 それ以外の場合、戻り値は 0 で、 GetLastError を呼び出すことで拡張エラー情報を取得できます。
この関数のしくみを理解するには、INF ファイルから次の行を検討してください。
X=34,FF,00,13
前の行で SetupGetBinaryField が呼び出された場合、バイナリ値 34、FF、00、および 13 は ReturnBuffer で指定されたバッファーに格納されます。
この関数の Unicode バージョンでは、バッファー サイズ ReturnBufferSize と RequiredSize は文字数で指定されます。 この数値には 、null ターミネータが含まれます。 この関数の ANSI バージョンでは、サイズはバイト数で指定されます。
この関数が NULL の ReturnBuffer で呼び出され、ReturnBufferSize が 0 の場合、この関数は、指定されたデータを保持するために必要なバッファー サイズを RequiredSize が指す変数に格納します。 こので関数が成功した場合、戻り値は 0 以外の値になります。 それ以外の場合、戻り値は 0 で、 GetLastError を呼び出すことで拡張エラー情報を取得できます。
したがって、関数を 1 回呼び出して、必要なバッファー サイズを取得し、必要なメモリを割り当ててから、もう一度関数を呼び出してデータを取得できます。 この手法を使用すると、バッファー サイズが不十分なため、エラーを回避できます。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | setupapi.h |
Library | Setupapi.lib |
[DLL] | Setupapi.dll |