2,640
社区成员
发帖
与我相关
我的任务
分享
代码
/*名称:GetDevPath
功能:获取设备路径
参数:MemberIndex 设备列表的索引,txtpath文本缓存,以字符串保存设备路径
返回:-2表示结束,-1 表示不能获取GUID,0表示未找到设备,>0表示成功,且返回值为路径字符串长度
*/
int HidDevice::GetDevPath(DWORD MemberIndex,char *txtpath)
{
int ret;
DWORD Length,Required;
//获GUID
HidD_GetHidGuid(&HidGuid);
hDevInfo=SetupDiGetClassDevs(&HidGuid,NULL,NULL,DIGCF_PRESENT|DIGCF_INTERFACEDEVICE);
if (hDevInfo == INVALID_HANDLE_VALUE)
{
return -1;
}
//枚举设备
ret=SetupDiEnumDeviceInterfaces(hDevInfo,0,&HidGuid,MemberIndex,&devInfoData);
if (!ret)
if(MemberIndex==1)
{
// MessageBox(NULL,"未找到任何可用USB设备!",NULL,NULL);
return 0;
}
else
return -2;
//获detaildata结构数组的长度
SetupDiGetDeviceInterfaceDetail(hDevInfo,&devInfoData,NULL,0,&Length,NULL);
detailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(Length);
detailData->cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
//获detailData
ret=SetupDiGetDeviceInterfaceDetail(hDevInfo,&devInfoData,detailData,Length,&Required,NULL);
strcpy(txtpath,detailData->DevicePath);
return strlen(txtpath);
}