比如获取以下信息:
Vendor=SAMSUNG//品牌
Model=CD-ROM SC-152A//型号
谢谢
Vendor=SAMSUNG//品牌
Model=CD-ROM SC-152A//型号
谢谢
解决方案 »
- 怎么调试这个C++ COM组件呢?
- 问一个XML方面比较初级的问题
- 求救!loadlibrary("***.dll")失败-找不到指定的模块
- 求助:如何用ActiveX控件启动系统本地的exe文件
- 你有没有《深入浅出FMC》(第二版)书上的代码?
- 晦涩的语法!请指教!!
- 大家看看这个DLL,是微软的可以绝对读盘的DLL写法,可是好象不行,不知道为什么??
- Matlab6.5编译器与VC接口配置的问题
- OnPaint()中的一部分代码怎么一直没有运行?
- 程序最小化到托盘区后,我的图形菜单的图标不见了!!!请大家帮帮忙,好吗?
- 一个简单浏览器开发问题,急用。。帮帮忙。。。。
- 看看吧!不知道这个函数是做什么的
下面是完整的可运行程序。#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;
}