Page 2 of 18
Posted: Wed Apr 26, 2006 6:20 pm
by Mario79
Кстати комментарий к 18/11
>Полная версия таблицы интересна только для ядра и, в сущности, непонятно, нафига её вообще возвращают приложениям по запросу.
В дальнейшем ты неоднокртно ссылаешься на эту же самую подфункцию. Несправедливое замечание мне кажется.
Posted: Wed Apr 26, 2006 8:12 pm
by diamond
Mario79
Хорошо, перенесу как 0-ю подфункцию 70-й функции.
В документации я действительно неоднократно ссылаюсь на 18.11, но я везде имею в виду короткую версию таблицы.
Posted: Wed Apr 26, 2006 11:14 pm
by Heavyiron
Извиняюсь за оффтоп, но что случилось с shade.msu.ru? Очень часто не работает. Не могу скачать доки... Кстати, svn-сервер тоже ошибки пишет
Posted: Thu Apr 27, 2006 9:00 am
by halyavin
Сервер shade.msu.ru будет не доступен по вечерам (где-то с 9 вечера до 9 утра) - из-за пожара в МГУ.
Posted: Thu Apr 27, 2006 9:19 am
by diamond
Теперь функции работы с поддержкой длинных имён будут идти как подфункции 70-й. Пока доступно только чтение - подфункция 0.
Posted: Thu Apr 27, 2006 9:04 pm
by Mario79
diamond
>Функция 58, подфункция 8 - LBA-чтение с устройства.
>Функция считывает данные физического жёсткого диска; если по каким-то причинам нужны данные конкретного раздела,
>придётся определять начальный сектор этого раздела [либо напрямую через MBR, либо из расширенной структуры,
>возвращаемой той же подфункцией 11 функции 18].
В документации я действительно неоднократно ссылаюсь на 18.11, но я везде имею в виду короткую версию таблицы.
Сам себе противоречишь.
Posted: Fri Apr 28, 2006 5:00 pm
by diamond
Ну не везде, ну в одном месте (ровно в одном!) я ссылаюсь именно на поля длинной версии таблицы... Но при этом из длинной версии нужны только два поля, идентифицирующие раздел (причём они действительно могут представлять самостоятельный интерес), а поля с информацией о FAT не нужны (кто-нибудь может предложить какое-нибудь разумное применение?) и к тому же имеют смысл только пока поддерживается исключительно FAT.
Posted: Fri Apr 28, 2006 7:38 pm
by Mario79
diamond
Ну, я же оставил на данные каждого раздела по 100 байт, можно в них и значения для других файловых систем возвращать.
Я посмотрел код в fs_lfn.inc сначала ни хрена не понял, так как код сильно отличался от fs.inc, потом сел и внимательно по командам разобрал код. ДА все четко и достаточно оптимально, к тому же добавлять новые функции и устройства достаточно просто (это я к тому, что скоро начну прикручивать драйвер сидюка к этому коду, вот только стандарт по возвращаемой структуре директории окончательно утрясем). В общем, респект тебе большой.
Posted: Thu May 04, 2006 1:15 am
by mike.dld
По поводу последнего замечания по функции 58/3:
Код обработки записи данных для жёсткого диска интерпретирует нулевое значение поля +8 как указание усечения файла до размера, указанного в поле +4. Однако код обработки 58-й функции блокирует эту возможность для приложений, сразу возвращая управление (с eax=0) в случае нулевого размера.
Почему бы не сделать доступной функцию усечения файла. я тут реализовывал кое-какие алгоритмы, и мне без этой функции никак не удастся уменьшить файл в размере, только если переписать его функцией 58/1, чего я не хочу, т.к. это потребует загрузки всего файла в память.
Posted: Fri May 05, 2006 3:53 pm
by diamond
Ну вообще-то я разрабатываю новые версии существующих подфункций 58-й функции в рамках 70-й функции...
P.S. Код, вызвавший это замечание, располагается между метками "no_checks_for_kernel" и "fs_read" файла fs.inc.
Posted: Fri May 05, 2006 4:04 pm
by diamond
all
Добавил LFN-чтение папок в соответствии с новым стандартом (как подфункцию 1 функции 70).
Posted: Wed May 10, 2006 5:13 pm
by diamond
Изменение: теперь 70.0 и 70.1 возвращают не общий размер, а число прочитанных байт/блоков.
Posted: Wed May 10, 2006 7:04 pm
by Mario79
diamond
Мне не совсем понятно. Если раньше можно было узнать размер папки, прочтя всего 1 вход, размер возвращался в EBX, то теперь как?
Что у тебя возвращается в 32 байтном заголовке буфера? Размер всей папки или размер, запрошенный приложением? Мне кажется для упрощения кодирования надо возвращать полный размер в ECX.
Posted: Wed May 10, 2006 8:02 pm
by diamond
Я автоматически обновляю документацию при изменении системных функций
http://diamondz.land.ru/klbr_doc/7001.htm
В 32-байтном заголовке возвращается и то, и то. Теперь в ebx просто записывается значение другого поля.
P.S. Для определения числа файлов в папке можно читать 0 входов. Заголовок при этом корректно заполняется.
Posted: Fri May 26, 2006 11:51 am
by diamond
Я вот тут подумал, может быть, наряду с существующей структурой
Code: Select all
dd номер функции
4*dd параметры
n*db ASCIIZ-имя
ввести структуру типа
Code: Select all
dd номер функции
4*dd параметры
db 0 ; чтобы не путалось со старым форматом
dd указатель на ASCIIZ-имя
? В некоторых случаях это явно удобнее...