WMI:Win32_DiskDrive 获取物理磁盘驱动器上的总扇区

Yeo*_*Yeo 5 python wmi winapi pywin32 disk

我尝试使用Win32_DiskDrive获取磁盘的最大总扇区,但它们都返回错误的值。我使用HxD,该程序返回准确的值。我尝试使用 fdisk 获取 Linux 中的总扇区,它也准确返回。

我注意到Win32_DiskDrive MSDN中有一条注释如下:

该属性的值是通过 BIOS 中断 13h 的扩展功能获得的。如果驱动器使用转换方案来支持高容量磁盘大小,则该值可能不准确。请咨询制造商以获取准确的驱动器规格。

但我没明白这是什么意思?以及如何解决这个问题?

更新1:

这是我的 python 脚本的片段代码。

必需:PythonPyWin32WMI

import wmi

c = wmi.WMI()
for diskDrive in c.query("SELECT * FROM Win32_DiskDrive"):
    print diskDrive.Name, "\nTotal Sector: ", diskDrive.TotalSectors
Run Code Online (Sandbox Code Playgroud)

更新2:

根据要求,这里是检测到 HxD 总扇区的 WMI 片段。

  • WMI: 625137345(顶部)
  • HxD: 625142448(底部)

部门差异截图

更新3:

如果有兴趣,你也可以在自己的计算机上尝试一下,看看Win32_DiskDrive是否报告准确的结果。我在许多其他计算机(WinXP & 7)和其他存储设备(硬盘、闪存盘等)上尝试过此操作,但所有结果都不准确。

要尝试请安装PythonPyWin32WMI

非常感谢

Chi*_*ata 0

您说这个片段不适用于特定的硬盘吗?您能否向我们提供该硬盘的详细信息以及您如何知道它不正确。

但是,请尝试使用纯 winapi 方法。可以轻松地DeviceIoControl使用 来执行此操作。请参阅cpp 中的完整代码清单

我知道有一种方法可以用 python 编写 C++,祝你好运:)