SP_DRVINFO_DETAIL_DATA_A構造 (setupapi.h)

SP_DRVINFO_DETAIL_DATA構造体には、特定のドライバー情報構造に関する詳細情報が含まれています。

構文

typedef struct _SP_DRVINFO_DETAIL_DATA_A {
  DWORD     cbSize;
  FILETIME  InfDate;
  DWORD     CompatIDsOffset;
  DWORD     CompatIDsLength;
  ULONG_PTR Reserved;
  CHAR      SectionName[LINE_LEN];
  CHAR      InfFileName[MAX_PATH];
  CHAR      DrvDescription[LINE_LEN];
  CHAR      HardwareID[ANYSIZE_ARRAY];
} SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;

メンバー

cbSize

SP_DRVINFO_DETAIL_DATA構造体のサイズ (バイト単位)。

InfDate

このドライバーの INF ファイルの日付。

CompatIDsOffset

CompatIDs リストが開始する HardwareID バッファーの先頭からのオフセット (文字単位)。

この値を使用して、CompatIDs リストの前に ハードウェア ID があるかどうかを判断することもできます。 この値が 1 より大きい場合、 HardwareID バッファーの最初の文字列はハードウェア ID です。 この値が 1 以下の場合、ハードウェア ID はありません。

CompatIDsLength

HardwareID バッファーの先頭からオフセット CompatIDsOffset から始まる CompatIDs リストの長さ (文字数)。

CompatIDsLength が 0 以外の場合、CompatIDs リストには、リストの末尾に追加の NULL 文字を含む NULL で終わる 1 つ以上の文字列が含まれます。

CompatIDsLength が 0 の場合、CompatIDs リストは空です。 その場合、リストの末尾に追加の NULL 文字はありません。

Reserved

予約済み。 内部使用専用です。

SectionName[LINE_LEN]

このドライバーの INF DDInstall セクション の名前を含む NULL で終わる文字列。 これは、OS/アーキテクチャ固有の拡張機能を使用せずに、InstallSec などの基本的な DDInstall セクション名である必要があります。

InfFileName[MAX_PATH]

このドライバーの INF ファイルの完全修飾名を含む NULL で終わる文字列。

DrvDescription[LINE_LEN]

ドライバーを記述する NULL で終わる文字列。

HardwareID[ANYSIZE_ARRAY]

ID の一覧 (1 つの ハードウェア ID の後に 互換性のある ID の一覧が続く) を含むバッファー。 これらの ID は、 INF モデル セクションのハードウェア ID と互換性のある ID に対応します。

リスト内の各 ID は NULL で終わる文字列です。

ハードウェア ID が存在する場合 (つまり、 CompatIDsOffset が 1 より大きい場合)、この単一の NULL で終わる文字列はバッファーの先頭にあります。

CompatIDs リストが空でない場合 (つまり、 CompatIDsLength が 0 でない場合)、CompatIDs リストは、このバッファーの先頭からオフセット CompatIDsOffset から開始され、リストの末尾に追加の NULL 文字で終了します。

注釈

デバイスの ハードウェア ID互換性のある ID は、「 INF モデル」セクション で次の順序で指定します。

  • 最初の ID (指定されている場合) は、デバイスのハードウェア ID です。
  • 残りの ID (指定されている場合) は、デバイスの互換性のある ID です。
HardwareID バッファーを解析するときは、バッファー内のデータの末尾が正しく決定されていることを確認する必要があります。 バッファーが必ずしも二重 NULL で終了されるとは限らないことに注意してください。

たとえば、[INF モデル] セクションハードウェア ID互換性のある ID の一覧がどのように指定されているかに応じて、HardwareID バッファーは次のようになります。

  • \0
  • <HWID>\0
  • <HWID>\0<COMPATID_1>\0...<>COMPATID_N\0\0
  • \0<COMPATID_1>\0...<>COMPATID_N\0\0
このバッファーを正しく解析するアルゴリズムでは、次のコード例に示すように、 CompatIDsOffset フィールドと CompatIDsLength フィールドを使用して ハードウェア ID互換性のある ID を抽出する必要があります。
// parse the hardware ID, if it exists
if (CompatIDsOffset > 1)
{
    // Parse for hardware ID from index 0. 
    // This is a single NULL-terminated string
}
 // Parse the compatible IDs, if they exist
if (CompatIDsLength > 0)
{
    // Parse for list of compatible IDs from CompatIDsOffset. 
    // This is a double NULL-terminated list of strings (i.e. MULTI-SZ)
}

注意

setupapi.h ヘッダーは、SP_DRVINFO_DETAIL_DATAをエイリアスとして定義します。これは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
Header setupapi.h (Setupapi.h を含む)

こちらもご覧ください

互換性 ID

Hardware ID (ハードウェア ID)

INF DDInstall セクション

INF Models セクション

SetupDiGetDriverInfoDetail