程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 枚舉系統設備

枚舉系統設備

編輯:關於C++

#include <windows.h>
#include <stdio.h>
#include <setupapi.h>
#include <devguid.h>
#include <regstr.h>
#include <shlwapi.h>
#pragma comment(lib,"setupapi.lib")

#define BUFSIZE1024
#define SM_SERVERR289
void main()
{
  HDEVINFO hDevInfo;
  SP_DEVINFO_DATA DeviceInfoData;
  DWORD i;
  hDevInfo = SetupDiGetClassDevs((LPGUID) &GUID_DEVCLASS_CDROM, 0, 0,DIGCF_PRESENT);
  /*
  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 1;
  }
  // 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[2048];
    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("<VALUE>% s</VALUE>",buffer);
      str += temp;
      if (buffer) LocalFree(buffer);
    }
    if (i != 0)
    {
      temp.Format("</光盤驅動器>");
      str += temp;
    }
    if ( GetLastError()!=NO_ERROR &&
    GetLastError()!=ERROR_NO_MORE_ITEMS )
    {
      return 1;
    }

  // Cleanup
  SetupDiDestroyDeviceInfoList(hDevInfo);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved