全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1459
推到 Plurk!
推到 Facebook!

USB Detect @@

缺席
brian_chen
一般會員


發表:14
回覆:20
積分:6
註冊:2007-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-12 14:34:04 IP:59.120.xxx.xxx 訂閱
在usbview上可以順利偵測 usb 的插拔動作
後來我把他移植到自己的程式中(原封不動,只是改成Class,方便以後使用)
可是不管怎麼樣,都會在IOCTL_USB_GET_NODE_INFORMATION這邊傳回 false
不知道是什麼原因....

希望有大大可以幫我看一下
<textarea name="code" class="c#" rows="10" cols="60"> //取出有問題的片段 DWORD TForm1::EnumerateHostController(HANDLE HostControllerHandle) { DWORD BytesReturned; bool Success; char RootHubName[256] = "\\\\.\\"; HANDLE RootHubHandle; PUSBDEVICEINFO info; info = NULL; info = (PUSBDEVICEINFO) alloca(sizeof(USBDEVICEINFO)); info->HubInfo = (PUSB_NODE_INFORMATION)alloca(sizeof(USB_NODE_INFORMATION)); //原程式的sizeof(USB_NODE_INFORMATION) = 76,移植程式的sizeof(USB_NODE_INFORMATION) = 73 //為什麼會有差異@@ Success = DeviceIoControl(HostControllerHandle, IOCTL_GET_HCD_DRIVERKEY_NAME, &UnicodeName,sizeof(UnicodeName),&UnicodeName, sizeof(UnicodeName), &BytesReturned, NULL); //這邊執行完,原始程式跟我移植過去的 UnicodeName 有差異。之後附圖1a 跟 1b。 if(Success) { Success = DeviceIoControl(HostControllerHandle, IOCTL_USB_GET_ROOT_HUB_NAME, &UnicodeName, sizeof(UnicodeName),&UnicodeName, sizeof(UnicodeName), &BytesReturned, NULL); //這邊執行完,原始程式跟我移植過去的 UnicodeName 有差異,跟前圖一樣 //前面資料相同,後面字元都顯示亂碼,非"/0" if(Success) { WideCharToMultiByte(CP_ACP, 0, &UnicodeName.Name[0], (UnicodeName.Length)/2, &RootHubName[4], 252, NULL,NULL); RootHubHandle = CreateFile(RootHubName, GENERIC_WRITE, FILE_SHARE_WRITE, &SA, OPEN_EXISTING, 0, NULL); if(RootHubHandle != INVALID_HANDLE_VALUE) { // Root hub is open. Collect the node information Success = DeviceIoControl(RootHubHandle, IOCTL_USB_GET_NODE_INFORMATION, info->HubInfo, sizeof(USB_NODE_INFORMATION), info->HubInfo, sizeof(USB_NODE_INFORMATION), &BytesReturned, NULL); //結果回傳:原程式為true,移植程式為false //之後就跳出來了 GetLastError() 傳回 122 if (!Success) return GetLastError(); else { // Get the ports and take the data GetPortData(RootHubHandle, info->HubInfo->u.HubInformation.HubDescriptor.bNumberOfPorts, 0); } } //CloseHandle(RootHubHandle); } } return 0; } </textarea> 問題就是,都沒改什麼,怎麼會有差異,也不能執行 附圖1a:原始程式執行 附圖1b:移植程式執行
編輯記錄
brian_chen 重新編輯於 2007-07-12 14:46:42, 註解 無‧
brian_chen 重新編輯於 2007-07-12 14:47:20, 註解 無‧
brian_chen 重新編輯於 2007-07-12 14:47:50, 註解 無‧
系統時間:2024-04-24 17:54:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!