如何列出系统中的所有设备啊? 比如usb设备,pci设备....

解决方案 »

  1.   

    http://www.codeproject.com/treectrl/DeviceTree.asp?df=100&forumid=36935&exp=0&select=788044
      

  2.   

    下面引用CSDN的
    【枚举系统中已经安装的所有硬件设备】 taianmonkey [原作] 
    关键字 枚举,硬件设备 
    出处 
    实现的主要部分代码: #include <setupapi.h>
    #include <devguid.h>
    #include <regstr.h>
    #pragma comment(lib,"Setupapi.lib")CListBox m_strList;
    ........
    枚举所有硬件设备的主要实现代码:m_strList.ResetContent(); 
    HDEVINFO hDevInfo;
    SP_DEVINFO_DATA DeviceInfoData;
    DWORD i;
    // Create a HDEVINFO with all present devices.
    hDevInfo = SetupDiGetClassDevs(NULL,0,  0, DIGCF_PRESENT | DIGCF_ALLCLASSES );
    if (hDevInfo == INVALID_HANDLE_VALUE)
    {
      // Insert error handling here.
      return ;
    }// Enumerate through all devices in Set.
    DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
    for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)
    {
      DWORD DataT;
      LPTSTR buffer = NULL;
      DWORD buffersize = 0;   // Call function with null to begin with, 
      // then use the returned buffer size 
      // to Alloc the buffer. Keep calling until
      // success or an unknown failure.
       while (!SetupDiGetDeviceRegistryProperty( hDevInfo,
                         &DeviceInfoData, 
                         SPDRP_DEVICEDESC,
                        &DataT,
                        (PBYTE)buffer,
                        buffersize,
                         &buffersize))
      {
        if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
        {
          // Change the buffer size.
          if (buffer) LocalFree(buffer);
              buffer = (char*)LocalAlloc(LPTR,buffersize);
          else
          {
              // Insert error handling here.
              break;
          }
        } 
         m_strList.AddString(buffer);
        if (buffer) 
          LocalFree(buffer);
      }
      if ( GetLastError()!=NO_ERROR &&GetLastError()!=ERROR_NO_MORE_ITEMS )
      {
        // Insert error handling here.
        return ;
      }
         // Cleanup
      SetupDiDestroyDeviceInfoList(hDevInfo);
    }测试环境:WINXP,WIN2000以上操作系统!
      

  3.   

    http://www.codeguru.com/Cpp/W-P/system/hardwareinformation/article.php/c5727/
      

  4.   

    http://search.csdn.net/Expert/topic/2602/2602650.xml?temp=.4388544
      

  5.   

    是用ddk的代码,不是mfc的。设备的handle,objectname
      

  6.   

    看了src\wdm\hid\hclient\hclient.htm,收获不少,谢谢楼上的几位,尤其是yinzhaohui(一切努力) ( ) 。