1

私は、Windows ドライブで低レベルで操作する必要があるプロジェクトに取り組んでおり、主に Windows API 呼び出しを使用しています。しかし、ドライブを操作する前に、そこに存在するパーティションの種類を知る必要があります。

これは、MBR でフォーマットされたディスクではかなり簡単です。

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

DRIVE_LAYOUT_INFORMATION_EXの配列を含むformat の構造体を返しますPARTITION_INFORMATION_EX。MBR ディスクでは、要素にPARTITION_INFORMATION_EX.Mbr.PartitionTypeはパーティション タイプの一意の識別子が含まれます。NTFS0x07Extended0x05

ただし、これは GPT ディスクではそれほど単純ではありません。パーティションの先頭から識別子を読み取れることはわかっていますが、これは などの API 呼び出しで処理したいと考えていますDeviceIoControlDeviceIoControlGPT ディスクで実行するPARTITION_INFORMATION_EX.Mbr.PartitionTypeと、通常の値とはまったく異なる値が含まれます。

GUID は、パーティションの種類ではなく、パーティションの目的を教えてくれるだけなので、私には役に立たないことに注意してください。ドライブがNTFS、FATなどであるかどうかを調べようとしています。

4

3 に答える 3