Sto cercando di ottenere la dimensione totale di un'unità fisica (non allocata + partizioni primarie + dimensioni partizioni estese).Ottieni la dimensione totale di un disco rigido in C++ windows
devo nome del disco come \\.\PhysicalDriveX
Ho provato ad utilizzare GetDiskFreeSpaceEx
ma non dà risultato corretto quando la partizione è una partizione estesa, in questo caso restituisce la dimensione totale della partizione.
BOOL ret = FALSE;
ULARGE_INTEGER ulFreeSpace;
ULARGE_INTEGER ulTotalSpace;
ULARGE_INTEGER ulTotalFreeSpace;
__int64 ulTotalUsedSpace = 0;
GetDiskFreeSpaceEx(szBuffer, &ulFreeSpace, &ulTotalSpace, &ulTotalFreeSpace);
*diskSize = ulTotalSpace.QuadPart;
posso ottenere informazioni partizione utilizzando DeviceIoControl utilizzando IOCTL_DISK_GET_DRIVE_LAYOUT_EX ma io sono sempre confuso circa le dimensioni della partizione estesa.
C'è un modo per ottenere con precisione la dimensione totale di un disco rigido in C++ su Windows ??
Grazie Rudi, ora funziona per me ho un'altra domanda come faccio a sapere quale unità è un'unità logica. Voglio dire, dovrei leggere l'ebr o può essere fatto da DeviceIoControl ??? – singh
'DeviceIoControl' funziona direttamente con i dischi piuttosto che con le partizioni, se vuoi informazioni sulla partizione, è candidata per un'altra domanda SO :) –
IOCTL_DISK_GET_DRIVE_GEOMETRY è un modo inaccurato per ottenere la dimensione totale in byte (pochi K più piccoli rispetto alla dimensione effettiva del disco). Suggerisco invece di utilizzare IOCTL_DISK_GET_LENGTH_INFO. – Calmarius