Windows では、ac/c++ プログラムから処理しているディスクの種類を知ることはできますか? gpt や mbr は忘れて、基本か動的かを知るにはどうすればよいですか? プログラムの入力はドライブ文字またはディスクに関連する情報であり、出力は動的または基本的なものである必要があります。直接的な方法は必要ありません。長いプロセスであっても大丈夫です。msdn ではあまり見つかりませんでした。私を助けてください。
3 に答える
ウィンドウには方法がありますが、簡単ではありません。
ディスクがベーシックかダイナミックかを判断する直接的な API はありませんが、すべてのダイナミック ディスクには LDM 情報があります。
したがって、ドライブに LDM 情報を含むパーティションがある場合、それはダイナミック ディスクになります。
IOCTL_DISK_GET_DRIVE_LAYOUT_EX 制御コードを指定した DeviceIoControl() メソッドを使用して、この情報を取得できます。
MSDN http://msdn.microsoft.com/en-us/library/aa363785(VS.85).aspxによると
ディスクの種類の検出
特定のファイルまたはディレクトリが配置されているディスクの種類をプログラムで検出する特定の機能はありません。間接的な方法があります。
まず、GetVolumePathName を呼び出します。次に、CreateFile を呼び出して、パスを使用してボリュームを開きます。次に、IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS をボリューム ハンドルと共に使用してディスク番号を取得し、そのディスク番号を使用して "\?\PhysicalDriveX" などのディスク パスを作成します。最後に、IOCTL_DISK_GET_DRIVE_LAYOUT_EX を使用してパーティション リストを取得し、パーティション リストの各エントリの PartitionType を確認します。
GetDriveType() をチェックしてください。