当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

列举系统设备[VC/C++编程]

赞助商链接



  本文“列举系统设备[VC/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);
}


  以上是“列举系统设备[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 列举系统设备
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .