如何确定特定驱动器的类型?

发布于 2024-10-17 13:46:37 字数 214 浏览 4 评论 0 原文

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

I feel somewhat noob yet with this of getting the Information of Hardware of the CPU, so i come with this request: Hard Drive, CD/DVD/Bluray reader, Floppy and if it's possible USB.
I've been looking on MSDN GetDriveType but seems i'm bad at searching or i don't understand it. Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

放我走吧 2024-10-24 13:46:37

我不确定您对链接到的文档有什么不理解的地方...

该函数接受的唯一参数是您想要获取有关信息的驱动器的根目录(包括尾部反斜杠)。该函数返回一个值,指示驱动器的类型。显示的图表给出了可能的返回值以及每个值的含义。

例如:

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 属性。

I'm not sure what you didn't understand about the documentation you linked to...

The sole argument accepted by the function is the root directory of the drive you want to get information about (including a trailing backslash). The function returns a value indicating which type of drive that is. A chart is shown that gives the possible return values and what each of them mean.

For example:

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

It also says that if you want to determine whether a drive is a USB-type drive, you need to call the SetupDiGetDeviceRegistryProperty function and specify the SPDRP_REMOVAL_POLICY property.

睫毛溺水了 2024-10-24 13:46:37

如果要确定设备是 USB 设备,可以打开其句柄并使用 DeviceIoControl() 发送 IOCTL 查询来获取设备所连接的总线类型。

EnumUsbDrivesLetters - 该帖子是俄语的但它包含C++源代码,因此很容易理解。

干杯,安德烈

If you want to determine that a device is USB device, you can open its handle and send IOCTL queries using DeviceIoControl() to get bus type a device is connected to.

EnumUsbDrivesLetters - the post is in Russian but it contains C++ source code, so the matter could be understood easily.

Cheers, Andriy

羞稚 2024-10-24 13:46:37

据我所知,唯一具有该信息的 Windows 一体式 API 是 WMI< /a>,但使用起来并不是很简单。另一方面,许多程序使用直通控制代码或 I/O 控制代码(例如 SMART_RCV_DRIVE_DATA

(我不知道 Speccy 是如何工作的,但我猜它使用了这些方法的组合来获取所需的系统信息。)

The only all-in-one API I know of for Windows with that information is WMI, but it's not terribly simple to use. On the other hand, many programs communicate with devices directly, using pass-through control codes, or I/O control codes like SMART_RCV_DRIVE_DATA.

(I don't know how Speccy works, but I'm guessing it uses a combination of these methods to get the system info needed.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文