SetupDiGetDeviceInterfaceDetailW 函数 (setupapi.h)

SetupDiGetDeviceInterfaceDetail 函数返回有关设备接口的详细信息。

语法

WINSETUPAPI BOOL SetupDiGetDeviceInterfaceDetailW(
  [in]            HDEVINFO                           DeviceInfoSet,
  [in]            PSP_DEVICE_INTERFACE_DATA          DeviceInterfaceData,
  [out, optional] PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData,
  [in]            DWORD                              DeviceInterfaceDetailDataSize,
  [out, optional] PDWORD                             RequiredSize,
  [out, optional] PSP_DEVINFO_DATA                   DeviceInfoData
);

参数

[in] DeviceInfoSet

指向 设备信息集 的指针,其中包含要检索详细信息的接口。 此句柄通常由 SetupDiGetClassDevs返回。

[in] DeviceInterfaceData

指向 SP_DEVICE_INTERFACE_DATA 结构的指针,该结构指定要检索详细信息 DeviceInfoSet 中的接口。 此类型的指针通常由 SetupDiEnumDeviceInterfaces返回。

[out, optional] DeviceInterfaceDetailData

指向 SP_DEVICE_INTERFACE_DETAIL_DATA 结构的指针,用于接收有关指定接口的信息。 此参数是可选的,可以 NULL。 如果 DeviceInterfaceDetailSize 为零,则此参数必须 NULL。 如果指定此参数,调用方必须在调用此函数之前将 DeviceInterfaceDetailData.cbSize 设置为 sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA)。 cbSize 成员始终包含数据结构的固定部分的大小,而不是反映末尾可变长度字符串的大小。

[in] DeviceInterfaceDetailDataSize

DeviceInterfaceDetailData 缓冲区的大小。 缓冲区必须至少为 (offsetof(SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath) + sizeof(TCHAR) 字节,才能包含结构的固定部分,并且单个 NULL 终止空MULTI_SZ字符串。

如果 deviceInterfaceDetailData 为 NULL ,则此参数必须为零。

[out, optional] RequiredSize

指向类型为 DWORD 的变量的指针,该变量接收 DeviceInterfaceDetailData 缓冲区所需的大小。 此大小包括结构的固定部分的大小以及可变长度设备路径字符串所需的字节数。 此参数是可选的,可以 NULL

[out, optional] DeviceInfoData

指向接收支持所请求接口的设备相关信息的缓冲区的指针。 调用方必须将 DeviceInfoData.cbSize 设置为sizeof(SP_DEVINFO_DATA)。 此参数是可选的,可以 NULL

返回值

SetupDiGetDeviceInterfaceDetail 返回 TRUE(如果函数未出错)。 如果函数以错误完成,则返回 FALSE,可以通过调用 getLastError来检索失败的错误代码。

言论

使用此函数获取有关接口的详细信息通常是一个双重过程:

  1. 获取所需的缓冲区大小。 使用 NULLDeviceInterfaceDetailData 指针、DeviceInterfaceDetailDataSize、有效的 RequiredSize 变量 调用 setupDiGetDeviceInterfaceDetail。 为了响应此类调用,此函数返回所需的缓冲区大小,RequiredSize 失败,GetLastError 返回ERROR_INSUFFICIENT_BUFFER。
  2. 分配适当大小的缓冲区,并再次调用函数以获取接口详细信息。
此函数返回的接口详细信息包含可传递给 Win32 函数的设备路径,例如 CreateFile。 请勿尝试分析设备路径符号名称。 可以在系统启动时重复使用设备路径。

SetupDiGetDeviceInterfaceDetail 可用于仅获取 deviceInfoData 。 如果接口存在但 DeviceInterfaceDetailDataNULL,则此函数将失败,GetLastError 返回ERROR_INSUFFICIENT_BUFFER,并且 DeviceInfoData 结构会填充有关公开接口的设备的信息。

注意

setupapi.h 标头将 SetupDiGetDeviceInterfaceDetail 定义为基于 UNICODE 预处理器常量定义自动选择此函数的 ANSI 或 Unicode 版本的别名。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Microsoft Windows 2000 及更高版本的 Windows 中可用。
目标平台 桌面
标头 setupapi.h (包括 Setupapi.h)
Setupapi.lib
API 集 ext-ms-win-setupapi-classinstallers-l1-1-2(在 Windows 10 版本 10.0.14393 中引入)

另请参阅

SetupDiEnumDeviceInterfaces

SetupDiGetClassDevs