一些观察:
DevIoCtl
应该用来调用byref(BytesReturned)
。ctypes.cast
的第一个参数必须是“可以解释为指针的对象”。但是,您要投射的是原始bytes
对象(来自output[:BytesReturned.value]
)。- 此时,您从中返回的
__DeviceIoControl
是一个新的Pythonbytes
对象。对ctypes数组对象的原始引用已超出范围。因此,它很有可能已经被垃圾回收和/或重用。
FWIW,我只是使用ctypes尝试使用Windows
IOCTL调度。也使用
\.PysicalDrive0和
IOCTL_DISK_GET_DRIVE_GEOMETRY。
我做了这个要点。



