阅读:739回复:0
怎样向设备鼠标写命令???帮帮我...
我有个USB鼠标. 它上面有个LED 灯,我想做个 HID Clients 向它发送命令, 控制鼠标上灯的颜色.?(我没有USB鼠标上的Fireware, 但我有控制灯状态的\"命令码\");
我的做法如下: GUID HidGuid; HidD_GetHidGuid(&HidGuid); ..... hDevInfoSet = ::SetupDiGetClassDevs() ..... bResult = ::SetupDiEnumDeviceInterfaces( hDevInfoSet, // 设备信息集句柄 NULL, // 不需额外的设备描述 &HiGuid, // GUID (ULONG)nCount, // 设备信息集里的设备序号 &ifdata); // 设备接口信息 bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄 &ifdata, // 设备接口信息 pDetail, // 设备接口细节(设备路径) INTERFACE_DETAIL_SIZE, // 输出缓冲区大小 NULL, // 不需计算输出缓冲区 NULL); // 不需额外的设备描述 ::strcpy(pszDevicePath[nCount], pDetail->DevicePath); ::SetupDiDestroyDeviceInfoList(hDevInfoSet); ..... /******************************************** // pDetail->DevicePath 就是我的鼠标,这我可以肯定. /******************************************** hDevice= ::CreateFile(pDetail->DevicePath, GENERIC_WRITE /*| GENERIC_READ*/, FILE_SHARE_READ | ILE_SHARE_WRITE, NULL, OPEN_EXISTING 0, NULL); /******************************************/ /* 为什么上面的代码不能用GENERIC_READ*/ /******************************************/ HidD_GetPreparsedData(hDevice, &HidParsedData); HidP_GetCaps( HidParsedData ,&Capabilities); ... /******************************************/ /* 下面我就不会做了. // 用WriteFile(), 无论法什么都失败. ??????? // HIDD_*** 和HIDP_ 我都试过了, /******************************************/ |
|