繁体   English   中英

使用IOCTL_DISK_SET_DRIVE_LAYOUT创建分区后,如何在此新创建的分区中创建新卷?

[英]After partition was created using IOCTL_DISK_SET_DRIVE_LAYOUT, how do I create new volume in this newly created partition?

我正在尝试创建一个新分区,对其进行格式化,并使用IOCTL_SET_DRIVE_LAYOUT通过Python ctypes为其分配新的驱动器 我最初的编码尝试是使用此SO页面完成的: 分配更多内存时,Python ctypes结构被覆盖 您可以在那里看到class DeviceIoControl的定义。

我使用IOCTL_DISK_CREATE_DISK成功初始化了磁盘,并使用IOCTL_DISK_SET_DRIVE_LAYOUT创建了具有一定大小的新分区,以下是“磁盘管理”中的结果:

分区创建成功

..但是,如何在磁盘新创建的分区中创建新卷?

我尝试使用Win32_Volume的格式方法,但Win32_Volume仅返回连接到现有分区的所有n个现有驱动器号,而在我的情况下,该驱动器号尚未分配。

有什么建议吗?

长话短说(这确实是长话!),结果,我错误地选择了错误的PartitionType 以前,我使用PARTITION_EXTENDED 0x05,在尝试了另一个值:PARTITION_IFS 0x07后,Windows直接要求我格式化分区。 为了避免这种情况,如这里所要求的,我们必须等待几秒钟以使新的驱动器号可用,然后调用kernel32.GetLogicalDriveStringsA来查询新的驱动器(在创建分区并进行比较之前,必须先调用此驱动器)两者,您将获得新的驱动器号)。 如果有可用的驱动器号,我们可以轻松地调用Win32_Volume Format方法来格式化驱动器。

这是低级kernel32调用+ WMI的组合,可以成功解决此问题。 如果所有功能都在WMI中可用,对我们来说将更加容易。 但是,是的,这不是我们在这里遇到的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM