如何模仿Everest获取详细硬件信息,如光驱序列号、光驱缓存大小

「已注销」 2010-04-28 09:15:25
目前我只是想知道如何获取光驱序列号(硬件生产厂商分配的,不可改变的)和缓存大小,

同时对Everest的获取如此详细信息的能力很佩服,不知Everest是通过什么方法获取的。

如图:



我用了很多方法都没有获得到,实在是不知道该怎么做了,希望各位给些建议。

下面是我用的方法:

1、GetVolumeInformation 网上很多人都说用这个函数,但这个函数只能在光驱中有光盘的时候有返回值,而我想在没有光驱的时候也获得,就像Everest一样。

2、WMI的Win32_CDROMDrive,但这里的序列号成员只能在vista版本以上的系统使用,我想在至少xp系统上获得,同样就像Everest一样。
如:
SerialNumber
Data type: uint16
Access type: Read-only

Number supplied by the manufacturer that identifies the physical media. Example: WD-WM3493798728.

Windows Server 2003, Windows XP, Windows 2000, Windows NT 4.0, and Windows Me/98/95: This property is not available.

3、WMI的Win32_PhysicalMedia,不知道为什么我获取到的序列号总是为空,不知道为什么获取SerialNumber获取不到。而且很多其他成员也都是获取不到。

4、DeviceIoControl发送IOCTL_CDROM_GET_CONFIGURATION 控制码,或许是我不会用,总是返回失败,错误信息,为参数不对。网上说是调用两次,第一次获取outputbuffer的大小,但我不知道为什么获取不到,也就是DeviceIoControl的倒数第二个参数总为0;
这个控制码是我安装了WDK之后才存在定义的,难道这个控制码只能在驱动中使用?(注:我对驱动开发还不了解)

5、DeviceIoControl发送IOCTL_CDROM_READ_TOC_EX 。
这个我也是没有获得成功。

写出上面几点,我只是想说,我想办法去获取了,但最终没有获取到。。

希望大家给些提示,如果您能测试下能否获取到,那更加感谢。



...全文
326 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbhuanggang 2010-04-29
  • 打赏
  • 举报
回复
个人感觉还是用DeviceIoControl比较好。
「已注销」 2010-04-29
  • 打赏
  • 举报
回复
没人?…………………………

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧