SetupDiEnumDeviceInterface的傳回值總是0(false)...USB的問題 |
尚未結案
|
allentcute
一般會員 發表:1 回覆:0 積分:0 註冊:2005-04-10 發送簡訊給我 |
我用的是cypress 的MCU (CY7C68013 FX2)...我想寫ㄧ個API 來跟 MCU 交換資料
由於看過許多先進的文章,也到MSDN看過SetupDi的命令.....那我就copyㄧ段程式來試試看.....程式碼如下
bool TForm1::GetDevicePath(LPGUID lpGuid, char * pszDevicePath) { HDEVINFO hDevInfoSet; SP_INTERFACE_DEVICE_DATA deviceInfoData; PSP_DEVICE_INTERFACE_DETAIL_DATA pDetail; ULONG predictedLength = 0; ULONG requiredLength = 0; bool bResult; int nIndex=0 ; DWORD errorcode; hDevInfoSet = SetupDiGetClassDevs( lpGuid, NULL, NULL, (DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)); if(hDevInfoSet == INVALID_HANDLE_VALUE) return FALSE; deviceInfoData.cbSize = sizeof(deviceInfoData); // nIndex=m_nIndex; bResult = SetupDiEnumDeviceInterfaces( hDevInfoSet, NULL, lpGuid, (ULONG)nIndex, &deviceInfoData); if(!bResult) errorcode=GetLastError(); // return FALSE; SetupDiGetInterfaceDeviceDetail ( hDevInfoSet, &deviceInfoData, NULL, // probing so no output buffer yet 0, // probing so output buffer length of zero &requiredLength, NULL); predictedLength = requiredLength; pDetail = (struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A *) malloc (predictedLength); pDetail->cbSize = sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA_A); bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, &deviceInfoData, pDetail, predictedLength, &requiredLength, NULL); if(bResult) { strcpy(pszDevicePath, pDetail->DevicePath); } GlobalFree(pDetail); SetupDiDestroyDeviceInfoList(hDevInfoSet); return bResult; }其中SetupDiEnumDeviceInterface();回傳值總是0;其實就是表示沒有device?? MSDN的說明是nIndex先從0開始...依序加1.直到傳回值是0為止.nIndex就表示有多少個同GUID的DEVICE在PC上.... 我的GUID由.INF檔看到是 0x36fc9e60c46511cf8056444553540000...此CLASSGUID是屬於USB的 而且從HLM/SYSTEM/ENUM/USB 看到的GUID也是一樣.... 但為什麼SetupDiEnumDeviceInterface()回傳值總是0 請各位先進大大...救救我 發表人 - allentcute 於 2005/04/22 19:40:49 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |