Странности MS-DOS IOCTL
Вчера перерыл весь Интернет по сабжу. Искал даже в MSDN, но и там нету полного описания MS-DOS IOCTLParametersBlock. Судя по TechHelp блок возвращаемый Int 21h 44h CX=0680h занимает в памяти 32+n*x байтов, так как возвращаются значения для каждой дорожки диска запрашиваемого устройства. Проблема в том что ни в одном другом источнике такого не говорится. Стоит вопрос: как правильно работать с IOCTL и какого размера буффер надо подавать DOS в DS:DX для получения параметров устройства? Пожалуйста, помогите....
А чего сделать-то нужно?
Type SectorLayout = Record
SectorNumber : Word;
SectorSize : Word;
end;
SectorsPerTrackCount : Word;
SectorsSizes : Array[0..63] Of SectorLayout;
Т.к. секторов на дорожке больше 64 DOS не поддерживает.
Теперь всё пашет как надобно.
Поправка: для номера сектора отводится 6 бит (можно считать, что аппаратно), при этом нумерация начинается с 1, т.о. максимальное количесво секторов - 63. DOS здесь абсолютно ни при чем.