Работа с файловой системой

Kernel architecture questions
  • Mario79
    Хорошо, перенесу как 0-ю подфункцию 70-й функции.
    В документации я действительно неоднократно ссылаюсь на 18.11, но я везде имею в виду короткую версию таблицы.
    Ушёл к умным, знающим и культурным людям.
  • Извиняюсь за оффтоп, но что случилось с shade.msu.ru? Очень часто не работает. Не могу скачать доки... Кстати, svn-сервер тоже ошибки пишет
  • Сервер shade.msu.ru будет не доступен по вечерам (где-то с 9 вечера до 9 утра) - из-за пожара в МГУ.
  • Теперь функции работы с поддержкой длинных имён будут идти как подфункции 70-й. Пока доступно только чтение - подфункция 0.
  • diamond
    >Функция 58, подфункция 8 - LBA-чтение с устройства.
    >Функция считывает данные физического жёсткого диска; если по каким-то причинам нужны данные конкретного раздела,
    >придётся определять начальный сектор этого раздела [либо напрямую через MBR, либо из расширенной структуры,
    >возвращаемой той же подфункцией 11 функции 18].
    В документации я действительно неоднократно ссылаюсь на 18.11, но я везде имею в виду короткую версию таблицы.
    Сам себе противоречишь.
  • Ну не везде, ну в одном месте (ровно в одном!) я ссылаюсь именно на поля длинной версии таблицы... Но при этом из длинной версии нужны только два поля, идентифицирующие раздел (причём они действительно могут представлять самостоятельный интерес), а поля с информацией о FAT не нужны (кто-нибудь может предложить какое-нибудь разумное применение?) и к тому же имеют смысл только пока поддерживается исключительно FAT.
    Ушёл к умным, знающим и культурным людям.
  • diamond
    Ну, я же оставил на данные каждого раздела по 100 байт, можно в них и значения для других файловых систем возвращать.

    Я посмотрел код в fs_lfn.inc сначала ни хрена не понял, так как код сильно отличался от fs.inc, потом сел и внимательно по командам разобрал код. ДА все четко и достаточно оптимально, к тому же добавлять новые функции и устройства достаточно просто (это я к тому, что скоро начну прикручивать драйвер сидюка к этому коду, вот только стандарт по возвращаемой структуре директории окончательно утрясем). В общем, респект тебе большой.
  • По поводу последнего замечания по функции 58/3:
    Код обработки записи данных для жёсткого диска интерпретирует нулевое значение поля +8 как указание усечения файла до размера, указанного в поле +4. Однако код обработки 58-й функции блокирует эту возможность для приложений, сразу возвращая управление (с eax=0) в случае нулевого размера.
    Почему бы не сделать доступной функцию усечения файла. я тут реализовывал кое-какие алгоритмы, и мне без этой функции никак не удастся уменьшить файл в размере, только если переписать его функцией 58/1, чего я не хочу, т.к. это потребует загрузки всего файла в память.
  • Ну вообще-то я разрабатываю новые версии существующих подфункций 58-й функции в рамках 70-й функции...
    P.S. Код, вызвавший это замечание, располагается между метками "no_checks_for_kernel" и "fs_read" файла fs.inc.
    Ушёл к умным, знающим и культурным людям.
  • all
    Добавил LFN-чтение папок в соответствии с новым стандартом (как подфункцию 1 функции 70).
    Ушёл к умным, знающим и культурным людям.
  • Изменение: теперь 70.0 и 70.1 возвращают не общий размер, а число прочитанных байт/блоков.
  • diamond
    Мне не совсем понятно. Если раньше можно было узнать размер папки, прочтя всего 1 вход, размер возвращался в EBX, то теперь как?
    Что у тебя возвращается в 32 байтном заголовке буфера? Размер всей папки или размер, запрошенный приложением? Мне кажется для упрощения кодирования надо возвращать полный размер в ECX.
  • Я автоматически обновляю документацию при изменении системных функций
    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 25 guests