Products
GG网络技术分享 2025-11-12 19:04 3
根据您给的代码片段和说说您正在用Windows API中的SetupDiGetClassDevs和SetupDiEnumDeviceInfo函数来枚举系统中的USB设备信息。
初始化设备信息句柄:
cpp
HDEVINFO hDevInfo = SetupDiGetClassDevs;
这行代码创建了一个设备信息集合句柄hDevInfo,用于存储系统中全部类别的设备信息。参数中:

NULL 表示不指定具体的类名,所以呢获取全部类别的设备。NULL 表示不用特定的枚举器。NULL 表示不需要父窗口句柄。DIGCF_ALLCLASSES 和 DIGCF_PRESENT 是标志,分别表示获取全部类别的设备和获取当前存在的设备。枚举设备信息:
cpp
SP_DEVINFO_DATA DeviceInfoData;
DeviceInfoData.cbSize = sizeof;
for ; Index++) {
// 获取设备信息
}
这段代码通过循环调用SetupDiEnumDeviceInfo函数来枚举设备信息。SetupDiEnumDeviceInfo函数的参数包括:
DeviceInfoSet: 设备信息句柄。MemberIndex: 当前枚举的设备索引,初始为0。DeviceInfoData: 用于存储设备信息的结构体。循环中的SetupDiEnumDeviceInfo函数返回TRUE时 表示成功获取了一个设备信息;返回FALSE时表示Yi枚举完全部设备,或者发生错误。
获取设备详细信息:
您兴许还需要获取设备的具体信息, 如设备名称、结实件ID、兼容ID等。这Neng通过调用SetupDiGetDeviceRegistryProperty函数实现, 如下所示:
cpp
TCHAR buffer;
DWORD bufferSize = sizeof;
if buffer, bufferSize, NULL)) {
// 打印设备名称
wprintf;
}
清理材料:
在枚举完全部设备后不要记不得释放设备信息句柄,以避免内存泄漏:
cpp
SetupDiDestroyDeviceInfoList;
通过这些个步骤,您得Neng够成功地枚举系统中全部USB设备的详细信息。Ru果在枚举过程中遇到问题, 比方说SetupDiEnumDeviceInfo返回FALSE,请检查错误代码以确定问题所在并进行相应的错误处理。
Demand feedback