目前我只是想知道如何获取光驱序列号(硬件生产厂商分配的,不可改变的)和缓存大小,
同时对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 。
这个我也是没有获得成功。
写出上面几点,我只是想说,我想办法去获取了,但最终没有获取到。。
希望大家给些提示,如果您能测试下能否获取到,那更加感谢。