Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Удаление раздела HDD


Автор: jakimushka 30.8.2009, 13:38
А как удалить раздел? пробую IOCTL_DISK_SET_DRIVE_LAYOUT_EX с обнулением всех разделов partition table. Ошибку не возвращает, но и не удаляет. Обнуляю таким вот образом:
Код

        ptr->PartitionEntry[1].PartitionNumber = 0; 
        ptr->PartitionEntry[1].RewritePartition = 1; 
        ptr->PartitionEntry[1].StartingOffset.QuadPart = 0; 
        ptr->PartitionEntry[1].PartitionLength.QuadPart = 0; 
        ptr->PartitionEntry[1].Mbr.BootIndicator = 0; 
        ptr->PartitionEntry[1].Mbr.RecognizedPartition = 0; 
        ptr->PartitionEntry[1].Mbr.HiddenSectors = 0; 
        ptr->PartitionEntry[1].Mbr.PartitionType = 0;
        ptr->PartitionEntry[1].RewritePartition = 0;
        ptr->PartitionEntry[1].PartitionStyle = (PARTITION_STYLE)0;

Пробую WriteFile в первый сектор 
    
Код

      mbr.rt[1].ActFlag = 0;
          mbr.rt[1].Begin_Hd = 0;
          mbr.rt[1].Begin_SecTrk = 0;
          mbr.rt[1].SysCode = 0;
          mbr.rt[1].End_Hd = 0;
          mbr.rt[1].End_SecTrk = 0;
          mbr.rt[1].RelSec = 0;
          mbr.rt[1].Size = 0;

пишется, ошибки не возникает, раздел не удаляется, когда опять считываю то получаю старые значения. 
Как правильно?

Да, и еще: есть у нас на жестком диске 3 раздела 1-й, 2-й, и 3-й занимают соответственно 1-ю, 2-ю и 3-ю ячейку в partition table. Пробуем удалить 2-й с помощью Disk Management. Удаляется, 3-й раздел записывается во вторую ячейку partition table. Когда пробую это сделать вручную так же ничего не получается. Как это сделать правильно?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)