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

SetupDiEnumDeviceInterface的傳回值總是0(false)...USB的問題

尚未結案
allentcute
一般會員


發表:1
回覆:0
積分:0
註冊:2005-04-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-22 17:04:12 IP:61.222.xxx.xxx 未訂閱
我用的是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
系統時間:2024-04-24 18:24:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!