Удаление раздела
От: jakimushka  
Дата: 30.08.09 10:50
Оценка:
А как удалить раздел? пробую 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. Когда пробую это сделать вручную так же ничего не получается. Как это сделать правильно?
Re: Удаление раздела
От: MShura  
Дата: 30.08.09 15:36
Оценка:
Здравствуйте, jakimushka, Вы писали:

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


J>
        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;
J>

— сколько задаете разделов?
— нумерация 0 based
— удалить мешает выделенное
— для mbr разделов нужно занулить всё кроме RewritePartition
Re[2]: Удаление раздела
От: jakimushka  
Дата: 30.08.09 18:30
Оценка:
Вот я Василий Алибабаевич... до чего копипаст доводит. Долбался со вчерашнего вечера. Теперь все работает: удаляется, перемещается, красота! Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.