利用Setupapi 能获得设备的具体信息的问题... Setupapi 利用这个 我可以获得设备管理器中的 所有的硬件设备的描述!但是我想更详细的获得设备的资料 像 设备的厂商id阿 这些在设备管理器中可以在设备的属性中看到 但是怎么在程序中抓到这些 信息?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include <stdio.h> #include <windows.h> #include <setupapi.h> #include <devguid.h> #pragma comment(lib, "setupapi") int main(int argc, char* argv[]) { // 得到设备信息集 HDEVINFO hDevInfo = SetupDiGetClassDevs( (LPGUID)&GUID_DEVCLASS_CDROM, NULL, 0, DIGCF_PRESENT/* | DIGCF_ALLCLASSES*/); if (hDevInfo == INVALID_HANDLE_VALUE) { printf("Error! SetupDiGetClassDevs() return %d\n", GetLastError()); SetupDiDestroyDeviceInfoList(hDevInfo); return 0; } TCHAR szBuf[MAX_PATH]; SP_DEVINFO_DATA spDevInfoData = {sizeof(SP_DEVINFO_DATA)}; // 开始列举设备 for (DWORD i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &spDevInfoData); i++) { // 得到设备类描述 if ( SetupDiGetClassDescription( &spDevInfoData.ClassGuid, szBuf, MAX_PATH, NULL) ) { printf("\n%03d : ClassDescription = %s\n", i, szBuf); } // 得到设备实例的唯一标识ID(由注册表路径组成) if ( SetupDiGetDeviceInstanceId( hDevInfo, &spDevInfoData, szBuf, MAX_PATH, NULL) ) { printf("%03d : InstanceId = %s\n", i, szBuf); } // 得到设备名称 if ( SetupDiGetDeviceRegistryProperty( hDevInfo, &spDevInfoData, SPDRP_DEVICEDESC, NULL, (PBYTE)szBuf, MAX_PATH, NULL) ) { printf("%03d : DeviceDesc = %s\n", i, szBuf); } // 得到设备型号 if ( SetupDiGetDeviceRegistryProperty( hDevInfo, &spDevInfoData, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szBuf, MAX_PATH, NULL) ) { printf("%03d : FriendName = %s\n", i, szBuf); } // 得到设备在注册表中的子路径 if ( SetupDiGetDeviceRegistryProperty( hDevInfo, &spDevInfoData, SPDRP_DRIVER, NULL, (PBYTE)szBuf, MAX_PATH, NULL) ) { printf("%03d : Regedit Path = %s\n", i, szBuf); } } printf("\nCdrom count = %d\n", i); getchar(); return 0; } /*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监视器*/自己搞定了 怎么把一个画图程序做一个类 请问,自己构造的war3数据包为何总是send失败? CCheckListBox是怎么加到对话框的? 为什么修改工程文件夹名称后再打开工程就出现错误? vc6 调用delphi dll的问题 关于winio的问题!谢谢各位! 想要VC6直接支持Access2000,我要怎么办? 谁有MFC的架构图(表) 共享软件的注册功能是怎么实现的呀!! 我要编一个DOS下的菜单程序,谁能帮助我! 求助 VFW中capCaptureSequence()的一个简单问题???
#include <windows.h>
#include <setupapi.h>
#include <devguid.h>
#pragma comment(lib, "setupapi")
int main(int argc, char* argv[])
{
// 得到设备信息集
HDEVINFO hDevInfo = SetupDiGetClassDevs(
(LPGUID)&GUID_DEVCLASS_CDROM,
NULL,
0,
DIGCF_PRESENT/* | DIGCF_ALLCLASSES*/);
if (hDevInfo == INVALID_HANDLE_VALUE)
{
printf("Error! SetupDiGetClassDevs() return %d\n", GetLastError());
SetupDiDestroyDeviceInfoList(hDevInfo);
return 0;
}
TCHAR szBuf[MAX_PATH];
SP_DEVINFO_DATA spDevInfoData = {sizeof(SP_DEVINFO_DATA)};
// 开始列举设备
for (DWORD i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &spDevInfoData); i++)
{
// 得到设备类描述
if ( SetupDiGetClassDescription(
&spDevInfoData.ClassGuid,
szBuf,
MAX_PATH,
NULL) )
{
printf("\n%03d : ClassDescription = %s\n", i, szBuf);
}
// 得到设备实例的唯一标识ID(由注册表路径组成)
if ( SetupDiGetDeviceInstanceId(
hDevInfo,
&spDevInfoData,
szBuf,
MAX_PATH,
NULL) )
{
printf("%03d : InstanceId = %s\n", i, szBuf);
}
// 得到设备名称
if ( SetupDiGetDeviceRegistryProperty(
hDevInfo,
&spDevInfoData,
SPDRP_DEVICEDESC,
NULL,
(PBYTE)szBuf,
MAX_PATH,
NULL) )
{
printf("%03d : DeviceDesc = %s\n", i, szBuf);
}
// 得到设备型号
if ( SetupDiGetDeviceRegistryProperty(
hDevInfo,
&spDevInfoData,
SPDRP_FRIENDLYNAME,
NULL,
(PBYTE)szBuf,
MAX_PATH,
NULL) )
{
printf("%03d : FriendName = %s\n", i, szBuf);
}
// 得到设备在注册表中的子路径
if ( SetupDiGetDeviceRegistryProperty(
hDevInfo,
&spDevInfoData,
SPDRP_DRIVER,
NULL,
(PBYTE)szBuf,
MAX_PATH,
NULL) )
{
printf("%03d : Regedit Path = %s\n", i, szBuf);
}
}
printf("\nCdrom count = %d\n", i);
getchar();
return 0;
}
/*
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监视器
*/自己搞定了