Функция 58 - работа с файловой системой.
Параметры:
- eax = 58
- ebx = указатель на информационную структуру
Возвращаемое значение:
Общий формат информационной структуры:
- +0: dword: номер подфункции
- +4: dword: номер блока
- +8: dword: размер
- +12 = +0xC: dword: указатель на данные
- +16 = +0x10: dword: указатель на память для работы системы
(4096 байт)
- +20 = +0x14: n db: ASCIIZ-строка с именем файла
Уточнения - в документации на соответствующую подфункцию.
Имя файла нечувствительно к регистру латинских букв,
русские буквы должны быть заглавными.
Формат имени файла:
/base/number/dir1/dir2/.../dirn/file,
где /base/number идентифицирует устройство, на котором ищется файл:
одно из
- /RD/1 = /RAMDISK/1 для доступа к рамдиску
- /FD/1 = /FLOPPYDISK/1 для доступа к первому флоппи-дисководу,
/FD/2 = /FLOPPYDISK/2 для второго флоппи-дисковода
- /HD/x = /HARDDISK/x - устаревший вариант доступа к жёсткому диску
(в этом случае база определяется подфункцией 7 функции 21),
x - номер раздела (считая с 1)
- /HD0/x, /HD1/x, /HD2/x, /HD3/x для доступа соответственно
к устройствам IDE0 (Primary Master), IDE1 (Primary Slave),
IDE2 (Secondary Master), IDE3 (Secondary Slave);
x - номер раздела на выбранном винчестере, изменяется от 1 до 255
(на каждом из винчестеров нумерация начинается с 1)
Замечания:
- В первых двух случаях допускается использование FIRST вместо 1,
SECOND вместо 2, но использовать эту возможность
не рекомендуется для удобства перехода на будущие расширения.
- Накладывается ограничение n≤39.
- Имена папок и файла dir1,...,dirn,file должны быть в формате 8.3:
имя не более 8 символов, точка, расширение не более 3 символов.
Хвостовые пробелы игнорируются. Других пробелов быть не должно.
Если имя занимает ровно 8 символов, точку можно опустить
(хотя пользоваться этим не рекомендуется для удобства перехода
на будущие расширения).
- Функция не поддерживает папок на рамдиске.
Примеры:
- '/RAMDISK/FIRST/KERNEL.ASM',0
'/rd/1/kernel.asm',0
- '/HD0/1/kernel.asm',0
- '/hd0/1/menuet/pics/tanzania.bmp',0
Доступные подфункции: