python读写磁盘扇区数据_WMI:Win32_DiskDrive获取物理磁盘dri上的总扇区

通过WMI查询Win32_DiskDrive获取磁盘大小后,发现磁盘报告的大小小于实际可读取的大小。通过调整文件打开方式,如设置buffering=0,可以读取到更多字节。使用read1方法可以获取最后几个字节,以确定实际磁盘大小。此方法解决了读取磁盘最后部分的问题,但可能因内部缓冲区对齐而有所限制。
摘要由CSDN通过智能技术生成

WMI报告驱动器比实际大小小几MB。我认为这与Windows如何处理汽缸/磁头/扇区有关。在

我的解决方案是读取超过报告的驱动器大小的末尾,直到出现错误:import wmi

disks = wmi.WMI().Win32_DiskDrive(MediaType="Removable Media")

for disk in disks:

disk_size = int(disk.size)

sector_size = disk.BytesPerSector

print(disk.name, "reported size:", disk_size)

with open(disk.name, "rb") as f:

f.seek(disk_size)

while True:

try:

f.read(sector_size)

disk_size += sector_size

except PermissionError:

break

print(disk.name, "readable size:", disk_size)

对于两个不同的32GB SD卡,我得到以下结果:

^{pr2}$

但是,实际的驱动器实际上还有1024到2048个字节,我们仍然无法读取,我不确定如何获取它们。但是,这比我们之前丢失的几个MB要好。在

编辑:似乎是buffering导致了读取最后几个字节的问题。如果我这样做,我可以读取剩余的字节open(disk.name, "rb", buffering=0)。但是ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C/C是一种编程语言,而WMI是Windows Management Instrumentation的缩写,它是Windows操作系统的一个功能,用于管理和监控计算机系统的各种资源和组件。而Win32_DiskDriveWMI的一个类,用于管理和获取计算机系统中的磁盘驱动器的信息。这个类提供了许多属性和方法,可以帮助我们获取和操作磁盘驱动器的各种信息。 在C/C编程语言中,我们可以使用WMIWin32_DiskDrive类来获取和操作磁盘驱动器的信息。首先,我们需要初始化WMI,然后使用WMI查询语言来查询Win32_DiskDrive类的实例。通过遍历这些实例,我们可以获取磁盘驱动器的各种属性,如驱动器的名称、序列号、容量、型号等等。我们可以通过调用相应的方法,如获取磁盘驱动器的序列号、格式化磁盘等,来操作磁盘驱动器。 具体来说,在C/C中可以使用WMI API编写相关的代码来获取和操作磁盘驱动器的信息。我们需要包含相关的头文件,并使用WMI API中的函数和结构体来实现相应的功能。首先,我们需要初始化WMI和连接到本地计算机的WMI服务。然后,使用WMI查询语句来查询Win32_DiskDrive类的实例。通过遍历这些实例,我们可以获取磁盘驱动器的各种属性,并将其打印或存储起来。此外,我们还可以调用相应的方法来进行磁盘驱动器的操作,如格式化磁盘、扩展磁盘分区等等。 之,使用C/C编程语言结合WMIWin32_DiskDrive类,我们可以进行磁盘驱动器的信息获取和操作。这对于需要获取和管理计算机系统中磁盘驱动器的应用程序是非常有用的。同时,这也展示了C/C语言的灵活性和与Windows操作系统底层API的结合能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值