SetupDiGetDeviceInterfaceDetailA 函数 (setupapi.h)

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

语法

WINSETUPAPI BOOL SetupDiGetDeviceInterfaceDetailA(
  [in]            HDEVINFO                           DeviceInfoSet,
  [in]            PSP_DEVICE_INTERFACE_DATA          DeviceInterfaceData,
  [out, optional] PSP_DEVICE_INTERFACE_DETAIL_DATA_A 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 缓冲区的大小。 缓冲区必须至少 (偏移量 ( (SP_DEVICE_INTERFACE_DETAIL_DATA、 DevicePath) + size 为 (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 处返回所需的缓冲区大小,并失败并返回ERROR_INSUFFICIENT_BUFFER GetLastError
  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)
Library Setupapi.lib

另请参阅

SetupDiEnumDeviceInterfaces

SetupDiGetClassDevs