2

对于获取 CPU 的硬件信息,我觉得有点菜鸟,所以我提出了这个要求:硬盘驱动器、CD/DVD/蓝光阅读器、软盘,如果可能的话 USB。我一直在看 MSDN GetDriveType但似乎我不擅长搜索或者我不明白。任何的想法?

4

3 回答 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 回答