不太懂,貌似跟操作系统相关。
一些操作系统需要驱动才能注册USB口

解决方案 »

  1.   

    USB HUB PORT ?步骤:
    1 搜索 HUB GUID ,透过 Setup*** 
    2 判断 hispeed or fullspeed
    3 deviocontrol 获得 hub port 数量
    4 相加得到PORT总数5 如果只查 root hub,靠Name 或者 devinst parent 关系确定。慢慢长路 ...
      

  2.   

    DWORD GetUSBPortNum(DWORD &nPortNum)
    {
    nPortNum = 0;
    DWORD m_dwRet = ERROR_SUCCESS;  
    char szUSBDeviceID[255];
    memset(szUSBDeviceID, 0, sizeof(szUSBDeviceID)); DWORD uReturned = 0;
    IEnumWbemClassObject *ppEnum = NULL;
        IWbemClassObject *pUSBHub[12]; char *chPropertyValue = NULL;    
     
        const BSTR bstrClass = SysAllocString(L"Win32_USBHub");   
         
    hr = pServices->CreateInstanceEnum(bstrClass, 
                                   WBEM_FLAG_RETURN_IMMEDIATELY,
       NULL,
                                           &ppEnum);
    if (hr != WBEM_S_NO_ERROR)
    {
    m_dwRet = ERROR_GET_USB_PORT_INFORMATION;
            sprintf(fbuf, "Log\\%08X", m_dwRet);
    sprintf(sExpect, "Get USB port num");  
            sprintf(sRead, "Fail to Get USB port num");
            CreateFailLog(fbuf, sExpect, sRead);
            return m_dwRet;
    }

    SysFreeString(bstrClass);
    hr = ppEnum->Next(WBEM_INFINITE, 12, pUSBHub, &uReturned); 
        ppEnum->Release();
        if (FAILED(hr) || (uReturned == 0))

    m_dwRet = ERROR_GET_USB_PORT_INFORMATION;
            sprintf(fbuf, "Log\\%08X", m_dwRet);
    sprintf(sExpect, "Get USB port num");  
            sprintf(sRead, "Fail to Get USB port num");
            CreateFailLog(fbuf, sExpect, sRead);
            return m_dwRet;
    }  nPortNum = uReturned;
    }