1301509935 发表于 2021-5-20 14:24

枚举系统中所有硬件设备

虽然简单,但是实用
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
DWORD i,j;
int ret=0;

hDevInfo = SetupDiGetClassDevs((LPGUID) &GUID;_DEVCLASS_MOUSE, 0, 0,DIGCF_PRESENT);//DIGCF_PROFILE);//
/*
  GUID_DEVCLASS_FDC软盘控制器
  GUID_DEVCLASS_DISPLAY显示卡
  GUID_DEVCLASS_CDROM光驱
  GUID_DEVCLASS_KEYBOARD键盘
  GUID_DEVCLASS_COMPUTER计算机
  GUID_DEVCLASS_SYSTEM系统
  GUID_DEVCLASS_DISKDRIVE磁盘驱动器
  GUID_DEVCLASS_MEDIA声音、视频和游戏控制器
  GUID_DEVCLASS_MODEMMODEM
  GUID_DEVCLASS_MOUSE鼠标和其他指针设备
  GUID_DEVCLASS_NET网络设备器
  GUID_DEVCLASS_USB通用串行总线控制器
  GUID_DEVCLASS_FLOPPYDISK软盘驱动器
  GUID_DEVCLASS_UNKNOWN未知设备
  GUID_DEVCLASS_SCSIADAPTERSCSI 和 RAID 控制器
  GUID_DEVCLASS_HDCIDE ATA/ATAPI 控制器
  GUID_DEVCLASS_PORTS端口(COM 和 LPT)
  GUID_DEVCLASS_MONITOR监视器
  */
      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;
      char buffer;
      DWORD buffersize =sizeof(buffer);
      while (!SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData;, SPDRP_FRIENDLYNAME, &DataT;, (PBYTE)buffer,buffersize,&buffersize;))
      {
                if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
                {
                // Change the buffer size.
                //if (buffer) LocalFree(buffer);
                //buffer = (PSP_INF_INFORMATION)LocalAlloc(LPTR,buffersize);
               // <!----><!---->
                }
                else {

      // Insert error handling here.
                break;
                }
      }
      if (buffer != NULL && i == 0)
      {
//            temp.Format("");
//            str += temp;
      }
//      temp.Format("%s",buffer);
//      str += temp;
      if (buffer) Lo**** Hidden Message *****

页: [1]
查看完整版本: 枚举系统中所有硬件设备