我对获取CPU的硬件信息感到有些不高兴,所以我提出了这个要求:硬盘驱动器,CD / DVD /蓝光阅读器,软盘以及USB是否可能。 我一直在寻找MSDN GetDriveType但似乎我不善于搜索或我不理解它。有什么想法吗?
答案 0 :(得分:2)
我不确定您对链接到的文档有什么不了解...
该函数接受的唯一参数是您想要获取信息的驱动器的根目录(包括尾部反斜杠)。该函数返回一个值,指示驱动器的类型。显示的图表给出了可能的返回值以及它们各自的含义。
例如:
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
function并指定SPDRP_REMOVAL_POLICY
属性。
答案 1 :(得分:2)
如果要确定设备是USB设备,可以打开其句柄并使用DeviceIoControl()发送IOCTL查询以获取设备所连接的总线类型。
EnumUsbDrivesLetters - 帖子是俄语的,但它包含C ++源代码,因此可以很容易地理解这个问题。
干杯,安德里
答案 2 :(得分:1)
我知道Windows中唯一具有该信息的一体化API是WMI,但它的使用并不是非常简单。另一方面,许多程序使用直通控制代码或SMART_RCV_DRIVE_DATA等I / O控制代码直接与设备通信。
(我不知道Speccy是如何工作的,但我猜它会使用这些方法的组合来获取所需的系统信息。)