szhonger
驱动牛犊
驱动牛犊
  • 注册日期2003-02-20
  • 最后登录2011-07-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:740回复:0

怎样向设备鼠标写命令???帮帮我...

楼主#
更多 发布于:2003-06-16 21:07
我有个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_ 我都试过了,
/******************************************/


游客

返回顶部