Re[2]: Как сопоставить логические диски физическому?
От: bigredcat  
Дата: 17.06.09 16:08
Оценка:
maks__

Спасибо.
Уже разобрался. Так и делаю... почти.
Мне была нужна поддержка динамических мультидисковых томов, поэтому небольшое дополнение

Вызываем DeviceIoControl с IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS в цикле,
пока DeviceIoControl == FALSE && GetLastError() == ERROR_MORE_DATA.

Основная задача при этом выделить буфер нужного размера, примерно так:
// Если функция DeviceIoControl == FALSE, проверяем код ошибки ...
if (GetLastError() == ERROR_MORE_DATA)
{
   // ... если есть еще данные, выделяем память нужного размера.
    LocalFree((HLOCAL)buf);
    bufSize = sizeof(VOLUME_DISK_EXTENTS) + 
        ((PVOLUME_DISK_EXTENTS)buf->NumberOfDiskExtents - 1) * sizeof (DISK_EXTENT);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.