首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

if(SetupDiEnumDeviceInterfaces(info,

2012-01-10 
看看系统物理设备枚举的代码问题,谢谢!!!GUID guidDevice_CLASS_GUID//在头文件已经定义过了SP_DEVICE_I

看看系统物理设备枚举的代码问题,谢谢!!!
GUID guid=Device_CLASS_GUID;//在头文件已经定义过了

SP_DEVICE_INTERFACE_DATA ifdata = {sizeof(SP_DEVICE_INTERFACE_DATA)};
SP_DEVINFO_DATA did = {sizeof(SP_DEVINFO_DATA)};
SP_DEVICE_INTERFACE_DETAIL_DATA didd={sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA)};

HDEVINFO info = SetupDiGetClassDevs(NULL, NULL,NULL,DIGCF_ALLCLASSES);
for(int index=0;;index++)
{
if(SetupDiEnumDeviceInterfaces(info,
&did, 
&guid,
index,
&ifdata))
{
if(SetupDiGetDeviceInterfaceDetail(info,&ifdata,&didd,offsetof (SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath) + sizeof(TCHAR),NULL,NULL))
{

SetupDiOpenDeviceInterface(info, didd.DevicePath, 0, &ifdata);
SetupDiGetDeviceRegistryProperty(info,
&did,
SPDRP_MFG,
NULL,
(PBYTE) mfgname,
sizeof(mfgname),
NULL);
MessageBox(s);//s.Format("%d",mfgname)
}



}
else
{
 

break;
}

}
  SetupDiDestroyDeviceInfoList(info);

问题是SetupDiEnumDeviceInterfaces函数总是返回false,用GetLastError查看提示是”没有可用的数据了“。此函数一次都不执行,SetupDiGetClassDevs函数执行是成功的,麻烦大家帮吗看一看,谢谢!

[解决办法]
SetupDiGetClassDevs的第一个参数应该跟SetupDiEnumDeviceInterfaces的第三个参数匹配。恰好第一个设备接口不是你希望的类型。
[解决办法]
你调用SetupDiGetClassDevs函数的时候没有加DIGCF_DEVICEINTERFACE标志。

热点排行