共用方式為


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

位移,以字元為單位,從 HardwareID 開頭 緩衝區開始 CompatIDs 清單。

這個值也可以用來判斷 CompatIDs 清單前面是否有 硬體標識碼。 如果此值大於 1,HardwareID 緩衝區中的第一個字串就是硬體識別符。 如果此值小於或等於 1,則沒有任何硬體識別碼。

CompatIDsLength

CompatIDs 清單的長度,以字元為單位,從 HardwareID 緩衝區開頭開始的位移 CompatIDsOffset

如果 CompatIDsLength 為非零,CompatIDs 清單就會在清單結尾包含一或多個以 NULL 結尾加上其他 NULL 字元的 NULL 終止字串。

如果 CompatIDsLength 為零,CompatIDs 清單會是空的。 在此情況下,清單結尾沒有額外的NULL字元。

Reserved

保留。 僅供內部使用。

SectionName[LINE_LEN]

NULL 終止的字串,其中包含此驅動程式的 INF DDInstall 區段名稱。 這必須是基本 DDInstall 區段名稱,例如 InstallSec,而不需要任何 OS/架構特定的擴充功能。

InfFileName[MAX_PATH]

NULL 終止的字串,其中包含此驅動程式之 INF 檔案的完整名稱。

DrvDescription[LINE_LEN]

描述驅動程式的NULL終止字串。

HardwareID[ANYSIZE_ARRAY]

緩衝區,其中包含標識符清單(單一 硬體標識符,後面接著 兼容標識符清單)。 這些識別碼會對應至 INF Models 區段中的硬體識別碼和相容識別碼,

清單中的每個識別碼都是以 NULL 結尾的字串。

如果硬體標識碼存在(也就是說,如果 CompatIDsOffset 大於一個),則會在緩衝區開頭找到這個單一 NULL 終止的字元串。

如果 CompatIDs 清單不是空的(也就是說,如果 CompatIDsLength 不是零),CompatIDs 清單會從此緩衝區開頭 CompatIDsOffset 位移開始,並以清單結尾的額外 NULL 字元終止。

言論

硬體識別碼 和裝置 兼容標識碼 會以下列順序指定於 INF Models 區段

  • 第一個識別碼 (如果指定)是裝置的硬體識別碼。
  • 其餘標識碼(如果指定)是裝置的相容標識碼。
當您剖析 HardwareID 緩衝區時,您必須確定您已正確判斷緩衝區中的數據結尾。 請注意,緩衝區不一定會終止雙 NULL。

例如,根據 硬體標識符清單兼容標識符的清單,INF Models 區段中指定的方式HardwareID 緩衝區可能類似下列任一項:

  • \0
  • <HWID>\0
  • <HWID>\0<COMPATID_1>\0...<COMPATID_N>\0\0
  • \0<COMPATID_1>\0...<COMPATID_N>\0\0
正確剖析此緩衝區的演演算法必須使用 CompatIDsOffsetCompatIDsLength 字段來擷取 硬體標識符兼容的標識符,如下列程式代碼範例所示:
// 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)

另請參閱

相容的標識碼

硬體識別碼

INF DDInstall 區段

INF Models 區段

SetupDiGetDriverInfoDetail