線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3624
推到 Plurk!
推到 Facebook!

手邊若只有標準的HID Mouse , 要如何確認自己寫的HID API ReadFile函式動作正確無誤呢???

缺席
HUNK999
初階會員


發表:9
回覆:35
積分:28
註冊:2009-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-23 20:21:56 IP:220.130.xxx.xxx 未訂閱
Google一下 , 

USB HID API 的函式無法直接讀取Mouse與Keyboard 的原始資料 , 原因是OS已經介入控制.

我現在能正常使用的函式為 : CreateFile 開啟裝置 , 以VID與PID filter 到想要控制的裝置 , 回報 ReportLength..etc.....

一使用ReadFile就出現問題 , GetLastError 的值 = 6 , 查詢MSDN資料顯示該Handle沒成功 ...

是否只有USBIO Deforbiddenor 的程式架構 , 才能做讀取控制呢? 一般OS控制的 USB HID Mouse 裝置 , 使用ReadFile是無法讀取資料的?


[code cpp]
請在此區域輸入程式碼
...
...
m_hHidIn = GetDeviceHandle(guid,hDeviceInfo, dwIndex,TRUE); // 取得Device to PC的資訊
...
...
BYTE byBufIn[8]; //宣告讀取資料的緩衝區
...
ReadFile(m_hHidIn,byBufIn,5,&ulBytes,NULL); //讀取滑鼠4Byte資料 ( ReportID ) = 5
...
//取得5個Byte資料
D1 = byBufIn[0]; //Report ID
D2 = byBufIn[1];
D3 = byBufIn[2];
D4 = byBufIn[3];
D5 = byBufIn[4];
...
...

HANDLE GetDeviceHandle(GUID guid, HANDLE hDev, DWORD dwDevice, BOOL bIn) //GetDeviceHandle 副程式
{
...
...
hDevice = CreateFile(pDeviceDetail->DevicePath,
GENERIC_READ, // read , Device to PC
0, //*** FILE_SHARE_WRITE|FILE_SHARE_READ, //系統獨占設備,此值設定為 0 ???
NULL,
OPEN_EXISTING,
0,
NULL);
...
...
}
[/code]
謝謝
編輯記錄
HUNK999 重新編輯於 2009-07-23 20:28:12, 註解 無‧
HUNK999 重新編輯於 2009-07-23 20:32:47, 註解 無‧
HUNK999 重新編輯於 2009-07-23 20:33:50, 註解 無‧
HUNK999 重新編輯於 2009-07-27 14:04:16, 註解 無‧
HUNK999 重新編輯於 2009-07-27 14:04:27, 註解 無‧
HUNK999
初階會員


發表:9
回覆:35
積分:28
註冊:2009-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-27 11:34:28 IP:220.130.xxx.xxx 未訂閱
       hDevice = CreateFile(pDeviceDetail->DevicePath,   
/*GENERIC_READ | */GENERIC_WRITE, // write : PC to Device
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
int ErrorCode = GetLastError(); //if GENERIC_READ : reject (error code=5


可能是這原因了! OS獨佔HID Mouse的Read Pipe , 因此只能使用GENERIC_WRITE獲取資訊 ,
如果設定GENERIC_READ或者GENERIC_READ | GENERIC_WRITE值 ,
ErrorCode 會等於5 , (拒絕訪問)

ErrorCode List:
http://blog.csdn.net/psongchao/archive/2007/04/04/1551594.aspx
編輯記錄
HUNK999 重新編輯於 2009-07-27 14:16:23, 註解 無‧
系統時間:2017-10-19 19:05:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!