Dos: Проблема При Работе С Файлами Из Tsr-программы

Тема в разделе "Другие", создана пользователем -, 27 ноя 2011.

  1. Гость

    Здравствуйте. Пишу на C и ассемблере (tcc/tasm) резидентную программу под DOS, которая должна перехватывать прерывание клавиатуры и сохранять на диске файл. На виртуальной машине Windows ntvdm всё работает, а на VMware Player (который, как я понял, ближе к реальному DOS) виснет при попытке создать файл. Пробовал работать с файлами как с помощью стандартных библиотечных функций C, так и напрямую вызывать функции DOS int 21h.

    В обработчике прерываний сохраняю все регистры (pusha/popa), устанавливаю свой ds и свой стек (потом естественно возвращаю обратно). Кроме этого, устанавливаю свой ID процесса (адрес PSP) с помощью функции DOS 50h. И всё равно виснет.

    Установил, что виснет при вызове функции DOS создания файла. Может быть я что-то ещё забыл инициализировать в обработчике прерывания?
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Зойберг
    руками файл создать получается?
     
  3. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Как на счет DOSBox? В ней не пробовал? Считаю что для испытания твоей программы она подойдет не хуже VMware.
     
  4. Гость

    r04
    Совсем вручную не пробовал,но пробовал создавать таким же образом (с помощью int 21h) из основной программы, не TSR - всё работает нормально.

    lazybiz
    DOSBox посмотрю, о результатах отпишусь.
     
  5. Гость

    Попробовал DosBox - там работает нормально. Но всё же как ntvdm, так и DosBox используют по сути Windows-овскую файловую систему. А VMware - чистый досовский FAT. Значит всё-таки принципиально работа с файловой системой DOS всё же неверна.
     
Загрузка...

Поделиться этой страницей