c++ - 如何使用 Windows API 检索 HD 供应商/序列号

标签 c++ c windows

我说的是物理 磁盘驱动器,而不是卷/分区/逻辑驱动器。因此,通常建议的 GetVolumeInformation 函数不适用于我的情况。

确切地说:我正在直接使用尚未分区的磁盘。 我通过 CreateFile 函数打开它的句柄:

hDisk = CreateFile(
    _T("\\\\.\\PHYSICALDRIVE0"),
    GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_READ|FILE_SHARE_WRITE,
    NULL,
    OPEN_EXISTING,
    FILE_FLAG_OVERLAPPED|FILE_FLAG_NO_BUFFERING,
    NULL);

我可以使用这个句柄直接在磁盘上读/写。还可以使用 DeviceIoControl 函数查询各种磁盘属性。但是我找不到查询磁盘供应商/串行属性的方法,这些属性在设备管理器中可见。

最佳答案

看看DiskId32 .源代码也在那里。这个想法是将 DFP_RECEIVE_DRIVE_DATADeviceIoControl 一起使用。

关于c++ - 如何使用 Windows API 检索 HD 供应商/序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396216/

相关文章:

c++ - 为什么 fprintf 在缺少 width 参数时导致内存泄漏和行为不可预测

c++ - std::condition_variable::wait_until 的实现

c - 如何在C中以编程方式查找leap年

Windows 环境 OpenACC

windows - DOSKEY 召回别名

C++继承问题

c++ - 在 OS X 10.8 上使用 SDL 2 启动速度非常慢

java - PPP 的免费 C/C++ 和 Java 实现?

c - C库和标准库有什么区别?

windows - 适用于 Windows 的 GIT Bash 没有给出任何结果并返回到命令提示符