gpt4 book ai didi

c++ - 在 C++ 中获取 GPT 磁盘上特定分区的分区类型

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:50 25 4
gpt4 key购买 nike

我正在从事一个项目,该项目要求我在 Windows 驱动器上进行低级别操作,并且我主要使用 Windows API 调用来执行此操作。但在我可以对驱动器进行操作之前,我需要知道其上存在的分区类型。

这在 MBR 格式化的磁盘上相当简单,因为

DeviceIoControl(...,IOCTL_DISK_GET_DRIVE_LAYOUT_EX,...);

返回格式为 DRIVE_LAYOUT_INFORMATION_EX 的结构,其中包含 PARTITION_INFORMATION_EX 数组。在 MBR 磁盘上,PARTITION_INFORMATION_EX.Mbr.PartitionType 元素包含分区类型的唯一标识符,例如对于 NTFS,它是 0x07,对于 Extended,它是 0x05

然而,这在 GPT 磁盘上并不是那么简单。 我知道我可以从分区的开头读取标识符,但我更愿意使用 API 调用来处理这个问题,例如 DeviceIoControl。当我在 GPT 磁盘上运行 DeviceIoControl 时,PARTITION_INFORMATION_EX.Mbr.PartitionType 包含与通常存在的值完全不同的值。

请注意,GUID 对我没有用,因为它只告诉我分区的用途,而不是分区的类型。我正在尝试确定驱动器是 NTFS、FAT 等。

最佳答案

对于代码中的 GPT 分区,当您调用 DeviceIoControl() 时,此调用将返回 PARTITION_INFORMATION_EX 对象中的分区信息。如果您看到 PARTITION_INFORMATION_EX 结构,MBR 和 GPT 磁盘有两个独立的结构。所以在获取PARTITION_INFORMATION_EX对象中的信息时,首先要确认磁盘类型是GPT还是MBR,如果是GPT则可以通过GUID比较得到具体的分区类型。

关于c++ - 在 C++ 中获取 GPT 磁盘上特定分区的分区类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25190476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com