c++ 查询pidvid 信息

#include <setupapi.h>
#include <initguid.h>
#pragma comment(lib,"setupapi.lib")

DEFINE_GUID (UsbClassGuid, 0xa5dcbf10L, 0x6530, 0x11d2, 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xed);

 

void CCheckPidVidDlg::OnBnClickedButton1()
{
    HDEVINFO hDevInfo;
    SP_DEVICE_INTERFACE_DATA spDevData;
    PSP_DEVICE_INTERFACE_DETAIL_DATA pDetail;
    BOOL bRes = TRUE;
    int nCount = 0;
    hDevInfo = ::SetupDiGetClassDevs((LPGUID)&UsbClassGuid,NULL,NULL,DIGCF_PRESENT|DIGCF_INTERFACEDEVICE);
    if (hDevInfo != INVALID_HANDLE_VALUE)
    {
        pDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT,1024);
        pDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
        while (bRes)
        {            
            spDevData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
            bRes = ::SetupDiEnumDeviceInterfaces(hDevInfo,NULL,(LPGUID)&UsbClassGuid,nCount,&spDevData);
            if (bRes)
            {
                bRes = ::SetupDiGetInterfaceDeviceDetail(hDevInfo,&spDevData,pDetail,1024,NULL,NULL);
                if (bRes)
                {
                    CString szStr = pDetail->DevicePath;
                    nCount ++;
                }
            }
        }
        ::GlobalFree(pDetail);
        ::SetupDiDestroyDeviceInfoList(hDevInfo);
    }

}
 


版权声明:本文为sunfei0630原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。