下面这段代码是为了获取本机USB设备驱动handle的,可是逐句运行的时候,
SetupDiGerClassDevs返回值老是 INVALID_HANDLE_VALUE。
#pragma comment(lib,"setupapi") //ERROR linkerror 1120
#include<Windows.h>
#include<SetupAPI.h>
#include<iostream>
#include<initguid.h> //GUDI header
#include<Usbiodef.h> //USB GUID header
//USB 设备的GUID
BOOL GetDevs(HDEVINFO &hdevino) {
hdevino = SetupDiGetClassDevs((LPGUID)&GUID_DEVINTERFACE_USB_DEVICE, 0, 0, DIGCF_DEFAULT | DIGCF_DEVICEINTERFACE);
if (hdevino = INVALID_HANDLE_VALUE)
return false;
else
return true;
}
void EnumDevice(HDEVINFO &hdevino,SP_DEVINFO_DATA &DeviceInfoData) {
for (DWORD i = 0; SetupDiEnumDeviceInfo(hdevino, i, &DeviceInfoData); i++)
std::cout << "element is " << i << std::endl;
}
int main()
{
HDEVINFO deinfo;
SP_DEVINFO_DATA DeviceInfoData;
if (GetDevs(deinfo) == true)
{
std::cout << "succeed" << std::endl;
EnumDevice(deinfo, DeviceInfoData);
}
else {
std::cout << "fail" << std::endl;
}
return 0;
}
大侠们,帮帮忙把把问题所在,论坛新人,还没有币给大家。。sorry
** 如果函数运行成功,返回设备信息结构的句柄,该结构包含与指定参数匹配的所有已安装设备。如果失败,则返回INVALID_HANDLE_VALUE。调用GetLastError可以获得更多错误信息。**
返回错误0018 ,我晕 ,GetLastError(),会 返回 这个吗??十六进制??不是 DWORD 类型吗?