rt,谢谢大家!

解决方案 »

  1.   

    就这样写的,不知道有没有问题:
    GUID* guid;
    guid=(GUID*)(void*)&Guid;

    HDEVINFO DeviceInfoSet;
     
    DeviceInfoSet=SetupDiGetClassDevs(guid,NULL,NULL,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
    if(DeviceInfoSet==INVALID_HANDLE_VALUE)
    {
    MessageBox("ERROR1");
    return;
    }
    DWORD nIndex=0;
    BOOL bRet=TRUE; SP_DEVICE_INTERFACE_DATA devInterfaceData= {0};;
    devInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);
    SP_DEVICE_INTERFACE_DETAIL_DATA devInterfaceDetail;
    devInterfaceDetail.cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
    DWORD dwSize=0; SP_DEVINFO_DATA  DevInfo1   =   {0};   
    DevInfo1.cbSize = sizeof(SP_DEVINFO_DATA); for(;bRet;nIndex++)
    {
    bRet=SetupDiEnumDeviceInterfaces(DeviceInfoSet,NULL,guid,nIndex,&devInterfaceData);
    if(!bRet)
    {
    MessageBox("ERROR2");
    break;
    }
    SetupDiGetDeviceInterfaceDetail(DeviceInfoSet,&devInterfaceData,NULL,0,&dwSize,NULL);
    PSP_INTERFACE_DEVICE_DETAIL_DATA pDevIfDetail ;
    pDevIfDetail =new SP_INTERFACE_DEVICE_DETAIL_DATA[dwSize];
    pDevIfDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); SP_DEVINFO_DATA  DevInfo   =   {0};   
    DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);
    if(!SetupDiGetDeviceInterfaceDetail(DeviceInfoSet,&devInterfaceData,pDevIfDetail,dwSize, NULL, &DevInfo))   
    {   
    //free((PVOID)   pDevIfDetail); 
    delete pDevIfDetail;
    continue;   
    }   

    TCHAR   fname[256]   =   {0};   
    if(!SetupDiGetDeviceRegistryProperty(DeviceInfoSet, &DevInfo, SPDRP_FRIENDLYNAME, NULL, (PBYTE) fname, sizeof(fname), NULL) &&     
    !SetupDiGetDeviceRegistryProperty(DeviceInfoSet, &DevInfo, SPDRP_DEVICEDESC, NULL, (PBYTE) fname, sizeof(fname), NULL))   
    {   
    MessageBox("ERROR3");
    }   // IUPnPDevice::FriendlyName(pbstr);
    MessageBox(devInterfaceDetail. DevicePath);
    free((PVOID)pDevIfDetail); 
    } SetupDiDestroyDeviceInfoList(DeviceInfoSet);
      

  2.   

    http://www.codeguru.com/forum/archive/index.php/t-331907.html