HidD_GetAttributes 为啥总返回FALSE.
HANDLE h=CreateFile(m_list[i].m_linkname,0,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);
TRACE(m_list[i].m_linkname);
if(h== INVALID_HANDLE_VALUE)
continue;
HIDD_ATTRIBUTES attr={sizeof(HIDD_ATTRIBUTES)};
BOOL oKay=HidD_GetAttributes(h,&attr);
CloseHandle(h);
if(!oKay) continue;
if(attr.VendorID!=HID_VID ||
attr.ProductID !=HID_PID)
continue;
以上是照搬MSDN的源码.
并且有提及 Only user-mode applications 与 Kernel-mode drivers
上面的代码是要生成EXE的.user-mode
请问要如何才能成功返回TRUE.
[解决办法]
保证设备确实存在,文件名正确。
另外,
CreateFile(m_list[i].m_linkname,0, ...);
改为下面试下:
CreateFile(m_list[i].m_linkname, ENERIC_READ | GENERIC_WRITE, ...);
[解决办法]
嗯。
是 HID 类设备?
[解决办法]
不读就不好判断打开的是否为你所要操作的设备了。
我读从没出过问题呀,你用GetLastError()取一下错误代码看。