2015-10-01 107 views
0

我試圖製作一個簡單的控制檯程序,用於讀取插入USB的鼠標的所有信號。我遇到了一個問題:GetCommState(nCom,& dcb)總是返回零,這對我的任務不是非常有用。 下面是代碼:GetCommState始終爲假

int _tmain(int argc, TCHAR *argv[]) { 
DCB dcb; 
HANDLE hCom; 
BOOL fSuccess; 
TCHAR *pcCommPort = TEXT("\\\\.\\HCD0"); // USB name 

// Open a handle to the specified com port. 
hCom = CreateFile(pcCommPort, 
        GENERIC_READ | GENERIC_WRITE, 
        0,  // must be opened with exclusive-access 
        NULL, // default security attributes 
        OPEN_EXISTING, // must use OPEN_EXISTING 
        0,  // not overlapped I/O 
        NULL); // hTemplate must be NULL for comm devices 

if (hCom == INVALID_HANDLE_VALUE) { 
    // Handle the error. 
    printf("CreateFile failed with error %d.\n", GetLastError()); 
    Sleep(15000); 
    return (1); 
} 

// Initialize the DCB structure. 
SecureZeroMemory(&dcb, sizeof(DCB)); 
dcb.DCBlength = sizeof(DCB); 



// Build on the current configuration by first retrieving all current 
// settings. 
fSuccess = GetCommState(hCom, &dcb); 

if (!fSuccess) { 
    // Handle the error. 
    printf("GetCommState failed with error %s.\n", GetLastError()); 

    printf("Cannot get first time"); 
    Sleep(12000); 
    return (2); 
} 
....... 

GetLastError()返回1,卻潛伏着對於這個問題給我任何結果。

這僅僅是一個msdn示例中的副本,但它發生了它並不適合我。

請告訴我:我應該改變什麼使它返回非零值,讓我繼續完成另一部分任務。

回答

2

USB鼠標與COM端口無關,因此調用GetCommState根本沒有意義。

一個串行鼠標是硬件是從1995年左右過時。現代USB鼠標是基於USB HID協議。