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

CompatID 列表开始的 HardwareID 缓冲区开头的偏移量(以字符为单位)。

此值还可用于确定 CompatID 列表之前是否有 硬件 ID 。 如果此值大于 1,则 HardwareID 缓冲区中的第一个字符串是硬件 ID。 如果此值小于或等于 1,则没有硬件 ID。

CompatIDsLength

CompatID 列表的长度(以字符为单位),从 CompatIDsOffset 偏移量开始,从 HardwareID 缓冲区的开头开始。

如果 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]

一个缓冲区,其中包含 ID 列表 (单个 硬件 ID ,后跟 ) 兼容 ID 的列表。 这些 ID 对应于 INF 模型部分中的硬件 ID 和兼容 ID。

列表中的每个 ID 都是以 NULL 结尾的字符串。

如果硬件 ID 存在 (也就是说,如果 CompatIDsOffset 大于一) ,则会在缓冲区的开头找到此以 NULL 结尾的单个字符串。

如果 CompatIDs 列表不为空, (也就是说,如果 CompatIDsLength) 不为零,则 CompatIDs 列表从此缓冲区开头的偏移量 CompatIDsOffset 开始,并在列表末尾以附加 NULL 字符结尾。

注解

设备 的硬件 ID兼容 ID 按以下顺序在 INF 模型部分中 指定:

  • 如果指定) 为设备的硬件 ID,则 (第一个 ID。
  • 如果指定的) 是设备的兼容 ID,则其余 ID (。
分析 HardwareID 缓冲区时,必须确保正确确定缓冲区中数据的末尾。 请注意,缓冲区不一定以双 NULL 结尾。

例如,根据硬件 ID兼容 ID 列表在 INF 模型部分中的指定方式, HardwareID 缓冲区可以类似于以下任何一种:

  • \0
  • <HWID>\0
  • <HWID>\0<COMPATID_1>\0...<COMPATID_N>\0\0
  • \0<COMPATID_1>\0...<>COMPATID_N\0\0
正确分析此缓冲区的算法必须使用 CompatIDsOffsetCompatIDsLength 字段提取 硬件 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 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
Header setupapi.h (包括 Setupapi.h)

另请参阅

Compatible IDs

硬件 ID

INF DDInstall 节

INF Models 节

SetupDiGetDriverInfoDetail