【发布时间】:2012-04-11 16:59:07
【问题描述】:
我尝试使用Win32_DiskDrive 获取磁盘的最大总扇区,但它们都返回了不正确的值。我使用了HxD,这个程序返回了准确的值。我尝试使用 fdisk 获取 Linux 中的总扇区,它也可以准确返回。
我注意到Win32_DiskDrive MSDN 中有一条注释如下:
该属性的值是通过 BIOS 中断 13h 的扩展函数获得的。如果驱动器使用转换方案来支持大容量磁盘大小,则该值可能不准确。请咨询制造商以了解准确的驱动器规格。
但我不明白这是什么意思?以及如何解决这个问题?
更新 1:
这是我的 python 脚本的片段代码。
import wmi
c = wmi.WMI()
for diskDrive in c.query("SELECT * FROM Win32_DiskDrive"):
print diskDrive.Name, "\nTotal Sector: ", diskDrive.TotalSectors
更新 2:
根据要求,这是检测到 HxD 总扇区的 WMI 片段。
- WMI: 625137345(顶部)
- HxD: 625142448(底部)
更新 3:
如果有人有兴趣,你也可以在自己的电脑上试试,看看 Win32_DiskDrive 报告的结果是否准确。我用其他存储设备(硬盘、闪存盘等)在许多其他计算机(WinXP 和 7) 上尝试过此操作,但所有结果都不准确。
非常感谢
【问题讨论】:
-
您提到的注释没有提到Win32_DiskDrive WMI 类的
BytesPerSector属性,那么您从哪里获得该信息? -
@RRUZ 抱歉,我刚刚解决了我的问题,我的意思不是扇区大小,而是“总扇区”。
-
你的代码在哪里?您到底想在哪个平台上执行此操作?
-
@ChibuezeOpata:我已经更新了我的问题以提供一些代码片段。
标签: python winapi wmi disk pywin32