Кстати комментарий к 18/11
>Полная версия таблицы интересна только для ядра и, в сущности, непонятно, нафига её вообще возвращают приложениям по запросу.
В дальнейшем ты неоднокртно ссылаешься на эту же самую подфункцию. Несправедливое замечание мне кажется.
Работа с файловой системой
Mario79
Хорошо, перенесу как 0-ю подфункцию 70-й функции.
В документации я действительно неоднократно ссылаюсь на 18.11, но я везде имею в виду короткую версию таблицы.
Хорошо, перенесу как 0-ю подфункцию 70-й функции.
В документации я действительно неоднократно ссылаюсь на 18.11, но я везде имею в виду короткую версию таблицы.
Ушёл к умным, знающим и культурным людям.
Извиняюсь за оффтоп, но что случилось с shade.msu.ru? Очень часто не работает. Не могу скачать доки... Кстати, svn-сервер тоже ошибки пишет
Сервер shade.msu.ru будет не доступен по вечерам (где-то с 9 вечера до 9 утра) - из-за пожара в МГУ.
Теперь функции работы с поддержкой длинных имён будут идти как подфункции 70-й. Пока доступно только чтение - подфункция 0.
diamond
>Функция 58, подфункция 8 - LBA-чтение с устройства.
>Функция считывает данные физического жёсткого диска; если по каким-то причинам нужны данные конкретного раздела,
>придётся определять начальный сектор этого раздела [либо напрямую через MBR, либо из расширенной структуры,
>возвращаемой той же подфункцией 11 функции 18].
>Функция 58, подфункция 8 - LBA-чтение с устройства.
>Функция считывает данные физического жёсткого диска; если по каким-то причинам нужны данные конкретного раздела,
>придётся определять начальный сектор этого раздела [либо напрямую через MBR, либо из расширенной структуры,
>возвращаемой той же подфункцией 11 функции 18].
Сам себе противоречишь.В документации я действительно неоднократно ссылаюсь на 18.11, но я везде имею в виду короткую версию таблицы.
Ну не везде, ну в одном месте (ровно в одном!) я ссылаюсь именно на поля длинной версии таблицы... Но при этом из длинной версии нужны только два поля, идентифицирующие раздел (причём они действительно могут представлять самостоятельный интерес), а поля с информацией о FAT не нужны (кто-нибудь может предложить какое-нибудь разумное применение?) и к тому же имеют смысл только пока поддерживается исключительно FAT.
Ушёл к умным, знающим и культурным людям.
diamond
Ну, я же оставил на данные каждого раздела по 100 байт, можно в них и значения для других файловых систем возвращать.
Я посмотрел код в fs_lfn.inc сначала ни хрена не понял, так как код сильно отличался от fs.inc, потом сел и внимательно по командам разобрал код. ДА все четко и достаточно оптимально, к тому же добавлять новые функции и устройства достаточно просто (это я к тому, что скоро начну прикручивать драйвер сидюка к этому коду, вот только стандарт по возвращаемой структуре директории окончательно утрясем). В общем, респект тебе большой.
Ну, я же оставил на данные каждого раздела по 100 байт, можно в них и значения для других файловых систем возвращать.
Я посмотрел код в fs_lfn.inc сначала ни хрена не понял, так как код сильно отличался от fs.inc, потом сел и внимательно по командам разобрал код. ДА все четко и достаточно оптимально, к тому же добавлять новые функции и устройства достаточно просто (это я к тому, что скоро начну прикручивать драйвер сидюка к этому коду, вот только стандарт по возвращаемой структуре директории окончательно утрясем). В общем, респект тебе большой.
По поводу последнего замечания по функции 58/3:
Почему бы не сделать доступной функцию усечения файла. я тут реализовывал кое-какие алгоритмы, и мне без этой функции никак не удастся уменьшить файл в размере, только если переписать его функцией 58/1, чего я не хочу, т.к. это потребует загрузки всего файла в память.Код обработки записи данных для жёсткого диска интерпретирует нулевое значение поля +8 как указание усечения файла до размера, указанного в поле +4. Однако код обработки 58-й функции блокирует эту возможность для приложений, сразу возвращая управление (с eax=0) в случае нулевого размера.
Ну вообще-то я разрабатываю новые версии существующих подфункций 58-й функции в рамках 70-й функции...
P.S. Код, вызвавший это замечание, располагается между метками "no_checks_for_kernel" и "fs_read" файла fs.inc.
P.S. Код, вызвавший это замечание, располагается между метками "no_checks_for_kernel" и "fs_read" файла fs.inc.
Ушёл к умным, знающим и культурным людям.
all
Добавил LFN-чтение папок в соответствии с новым стандартом (как подфункцию 1 функции 70).
Добавил LFN-чтение папок в соответствии с новым стандартом (как подфункцию 1 функции 70).
Ушёл к умным, знающим и культурным людям.
Изменение: теперь 70.0 и 70.1 возвращают не общий размер, а число прочитанных байт/блоков.
diamond
Мне не совсем понятно. Если раньше можно было узнать размер папки, прочтя всего 1 вход, размер возвращался в EBX, то теперь как?
Что у тебя возвращается в 32 байтном заголовке буфера? Размер всей папки или размер, запрошенный приложением? Мне кажется для упрощения кодирования надо возвращать полный размер в ECX.
Мне не совсем понятно. Если раньше можно было узнать размер папки, прочтя всего 1 вход, размер возвращался в EBX, то теперь как?
Что у тебя возвращается в 32 байтном заголовке буфера? Размер всей папки или размер, запрошенный приложением? Мне кажется для упрощения кодирования надо возвращать полный размер в ECX.
Я автоматически обновляю документацию при изменении системных функций
http://diamondz.land.ru/klbr_doc/7001.htm
В 32-байтном заголовке возвращается и то, и то. Теперь в ebx просто записывается значение другого поля.
P.S. Для определения числа файлов в папке можно читать 0 входов. Заголовок при этом корректно заполняется.
http://diamondz.land.ru/klbr_doc/7001.htm
В 32-байтном заголовке возвращается и то, и то. Теперь в ebx просто записывается значение другого поля.
P.S. Для определения числа файлов в папке можно читать 0 входов. Заголовок при этом корректно заполняется.
Ушёл к умным, знающим и культурным людям.
Я вот тут подумал, может быть, наряду с существующей структурой
ввести структуру типа
? В некоторых случаях это явно удобнее...
Code: Select all
dd номер функции
4*dd параметры
n*db ASCIIZ-имя
Code: Select all
dd номер функции
4*dd параметры
db 0 ; чтобы не путалось со старым форматом
dd указатель на ASCIIZ-имя
Ушёл к умным, знающим и культурным людям.
Who is online
Users browsing this forum: No registered users and 23 guests