7
物理ドライブの合計サイズ(未割り当て+プライマリパーティション+拡張パーティションサイズ)を取得しようとしています。C++のウィンドウでハードディスクの合計サイズを取得
Iは\\.\PhysicalDriveX
として、ディスク名を持っている私は、GetDiskFreeSpaceEx
を使用して試みたが、パーティションが、それはパーティションの合計サイズを返し、この場合には、拡張パーティションである場合には、正しい結果を与えません。
BOOL ret = FALSE;
ULARGE_INTEGER ulFreeSpace;
ULARGE_INTEGER ulTotalSpace;
ULARGE_INTEGER ulTotalFreeSpace;
__int64 ulTotalUsedSpace = 0;
GetDiskFreeSpaceEx(szBuffer, &ulFreeSpace, &ulTotalSpace, &ulTotalFreeSpace);
*diskSize = ulTotalSpace.QuadPart;
私はIOCTL_DISK_GET_DRIVE_LAYOUT_EX を使用してのDeviceIoControlを使用してパーティション情報を取得することができますが、私は、拡張パーティションのサイズについて混乱取得しています。
Windows上のC++でハードディスクの合計サイズを正確に取得できる方法はありますか?
おかげルディが、今それは私の作品私は、論理ドライブであるドライブを知っていますか1つの以上の質問があります。私はebrを読んだり、DeviceIoControlから行うことができますか? – singh
'DeviceIoControl'は、パーティション情報を必要とするならば、パーティションではなくディスクで直接動作します。別のSO質問の候補です。 –
IOCTL_DISK_GET_DRIVE_GEOMETRYは、合計サイズをバイト単位(実際のディスクサイズよりもわずか数K)小さくする方法が不正です。代わりにIOCTL_DISK_GET_LENGTH_INFOを使用することをお勧めします。 – Calmarius