对于获取 CPU 的硬件信息,我觉得有点菜鸟,所以我提出了这个要求:硬盘驱动器、CD/DVD/蓝光阅读器、软盘,如果可能的话 USB。我一直在看 MSDN GetDriveType但似乎我不擅长搜索或者我不明白。任何的想法?
问问题
5110 次
3 回答
4
我不确定您对链接到的文档有什么不了解...
该函数接受的唯一参数是您要获取有关信息的驱动器的根目录(包括尾部反斜杠)。该函数返回一个值,指示这是哪种类型的驱动器。显示的图表给出了可能的返回值以及它们各自的含义。
例如:
GetDriveType(_T("C:\\")) // returns DRIVE_FIXED if C:\ is my hard drive
GetDriveType(_T("A:\\")) // returns DRIVE_REMOVABLE if A:\ is my floppy drive
GetDriveType(_T("D:\\")) // returns DRIVE_CDROM if D:\ is a CD-ROM drive
GetDriveType(_T("N:\\")) // returns DRIVE_REMOTE if N:\ is a network drive
它还说,如果要确定驱动器是否为USB类型的驱动器,则需要调用该SetupDiGetDeviceRegistryProperty
函数并指定SPDRP_REMOVAL_POLICY
属性。
于 2011-02-17T07:43:49.380 回答
2
如果要确定设备是 USB 设备,可以打开其句柄并使用 DeviceIoControl() 发送 IOCTL 查询以获取设备连接的总线类型。
EnumUsbDrivesLetters - the post is in Russian but it contains C++ source code, so the matter could be understood easily.
Cheers, Andriy
于 2011-06-10T07:45:24.830 回答
1
我所知道的唯一具有该信息的 Windows 一体化 API 是WMI,但它的使用并不是非常简单。另一方面,许多程序使用传递控制代码或SMART_RCV_DRIVE_DATA等 I/O 控制代码直接与设备通信。
(我不知道Speccy是如何工作的,但我猜它使用这些方法的组合来获取所需的系统信息。)
于 2011-02-17T07:47:03.373 回答