首页
社区
课程
招聘
[旧帖] 请教遍历设备管理器的方法 0.00雪花
发表于: 2010-5-18 21:23 7221

[旧帖] 请教遍历设备管理器的方法 0.00雪花

2010-5-18 21:23
7221
请问各位大侠,要查找某个设备的驱动是否安装,我原本想查找注册表,但是导师说不行。只好遍历设备管理器但又不知如何用C++遍历设备管理器,网上找的那个,代码补全。不知各位大侠有什么好方法!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 249
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
2010-5-19 10:10
0
雪    币: 1205
活跃值: (5094)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
不会吧,部分 API 其实也是读注册表的。

(部分历遍设备的 API 也是读注册表的)

读注册表就行, 建议你自行分析注册表,设备有分类的,如显卡为“display”,声音及多媒体为“media”等

(有 ? 和 !的设备也要分析下)

安装和删除也有专门的 API 如: UpdateDriverForPlugAndPlayDevices 等

多个相同硬件的, 也可以用 API 得到驱动名, 如:EnumDisplayDevices、waveOutGetNumDevs等(实际上也读注册表的)

检查设备性能用:GetDeviceCaps(我用 DELPHI 的,代码就不发了)

还有, 这几天我在想一个最好的方法来得到本机所有分区(如:C:\、D:\、E:\),因一直用 DELPHI, 所以对系统机制不是很明白,看到 MSDN 上用的全是一对以上的 API, 如 FindFirstVolume、FindVolumeClose 等,方法是很正规,但速度就......

  (因一直用 delphi, 里面没上面的 API 声明)

  delphi 内部好像这个是更好的方法,比上面的还要快:

function DirectoryExists(const Directory: string): Boolean;
var
  Code: Integer;
begin
  Code := GetFileAttributes(PChar(Directory));
  Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0);
end;

到现在几天了,还是想不明白, 我到底要用正规的方法,还是更快的方法???
2010-5-22 10:21
0
雪    币: 209
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
方向大概就是利用WMI,或者参考微软的Devcon.exe
2010-5-23 11:21
0
游客
登录 | 注册 方可回帖
返回
//