共用方式為


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 清單前面的 硬體識別碼 。 如果此值大於 1,HardwareID 緩衝區中的第一個字串就是硬體識別符。 如果此值小於或等於 1,則沒有硬體識別碼。

CompatIDsLength

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

如果 CompatIDsLength 為非零值,CompatIDs 清單會包含一或多個 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 模型一節中的硬體識別碼和相容的標識碼。

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

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

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

備註

裝置 的硬體識別碼相容識別符 會依下列順序在 INF 模型區段中 指定:

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

例如,根據 INF 模型區段中指定硬體識別碼和相容標識碼的清單而定,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