我用SetupDiEnumDeviceInterfaces函数 返回值是0,然后GetLastError();得到值是259,说是没有可用的数据
我用SetupDiEnumDeviceInterfaces函数返回值是0,然后GetLastError();得到值是259,说是没有可用的数据了...
我用SetupDiEnumDeviceInterfaces函数 返回值是0,然后GetLastError();得到值是259,说是没有可用的数据了
展开
1个回答
展开全部
BOOL bResult; // 取得一个该GUID相关的设备信息集句柄
hDevInfoSet=::SetupDiGetClassDevs(&lpGuid,//&struct _GUID(UsbClassGuid), // class GUID
NULL, // 无关键字
NULL, // 不指定父窗口句柄
if (hDevInfoSet==INVALID_HANDLE_VALUE){pp=1;//return 0;
//AfxMessageBox("获取相关的设备信息集GUID句柄失败!");
} // 申请设备接口数据空间else{pDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, INTERFACE_DETAIL_SIZE);
pDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
nCount = 0;
bResult = TRUE; // 设备序号=0,1,2... 逐一测试设备接口,到失败为止
while (bResult){ifdata.cbSize = sizeof(ifdata); // 枚举符合该GUID的设备接口
bResult = ::SetupDiEnumDeviceInterfaces( hDevInfoSet, // 设备信息集句柄
NULL, // 不需额外的设备描述
&lpGuid, // GUID
(ULONG)nCount, // 设备信息集里的设备序号
&ifdata); // 设备接口信息
pp=GetLastError();
if (bResult){// 取得该设备接口的细节(设备路径)
bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄
&ifdata, // 设备接口信息
pDetail, // 设备接口细节(设备路径)
INTERFACE_DETAIL_SIZE, // 输出缓冲区大小
NULL, // 不需计算输出缓冲区大小(直接用设定值)
NULL); // 不需额外的设备描述
if (bResult){// 复制设备路径到输出缓冲区
Sdn=pDetail->DevicePath;
// 调整计数值nCount++;}}}// 释放设备接口数据空间
::GlobalFree(pDetail); // 关闭设备信息集句柄
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询