次の方法で共有


SP_DRVINFO_DETAIL_DATA_W構造体 (setupapi.h)

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

構文

typedef struct _SP_DRVINFO_DETAIL_DATA_W {
  DWORD     cbSize;
  FILETIME  InfDate;
  DWORD     CompatIDsOffset;
  DWORD     CompatIDsLength;
  ULONG_PTR Reserved;
  WCHAR     SectionName[LINE_LEN];
  WCHAR     InfFileName[MAX_PATH];
  WCHAR     DrvDescription[LINE_LEN];
  WCHAR     HardwareID[ANYSIZE_ARRAY];
} SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W;

メンバーズ

cbSize

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

InfDate

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

CompatIDsOffset

HardwareID バッファーの先頭からのオフセット (文字単位)。

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

CompatIDsLength

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

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

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

Reserved

引っ込み思案。 内部使用のみ。

SectionName[LINE_LEN]

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

InfFileName[MAX_PATH]

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

DrvDescription[LINE_LEN]

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

HardwareID[ANYSIZE_ARRAY]

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

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

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

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

備考

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

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

たとえば、ハードウェア ID と互換性のある ID の一覧が INF Models セクションで指定されている方法に応じて、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 バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
ヘッダー setupapi.h (Setupapi.h を含む)

関連項目

互換性のある ID の

ハードウェア ID

INF DDInstall セクション

INF Models セクション

SetupDiGetDriverInfoDetail の