私は、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
はパーティション タイプの一意の識別子が含まれます。NTFS
0x07
Extended
0x05
ただし、これは GPT ディスクではそれほど単純ではありません。パーティションの先頭から識別子を読み取れることはわかっていますが、これは などの API 呼び出しで処理したいと考えていますDeviceIoControl
。DeviceIoControl
GPT ディスクで実行するPARTITION_INFORMATION_EX.Mbr.PartitionType
と、通常の値とはまったく異なる値が含まれます。
GUID は、パーティションの種類ではなく、パーティションの目的を教えてくれるだけなので、私には役に立たないことに注意してください。ドライブがNTFS、FATなどであるかどうかを調べようとしています。