Как отловить остановку двигателя HDD?

Тема в разделе "WASM.WIN32", создана пользователем HCode, 26 июл 2007.

  1. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    тупанул, действительно, если PF будет на IDT как процессор узнает обработчик этого исключения.
     
  2. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    нет, суть такая: IDT разделяется на 2 страницы, на первой находятся несколько первых обработчиков, на второй -- все остальные (включая 0Eh). Первая страница делается неприсутствующей (NP). Обработчик #PF должен рапознавать page fault'ы на 1й странице IDT и соответственно обрабатывать их, начиная от парсинга инструкции вплоть до вызова целевого обработчика исключения.
    Пример реализации есть в ядре Win9x -- как официальный способ обхода pentium F0 bug. Это к тому, что сама по себе разбитая на 2 страницы IDT не должна вызывать подозрений. ;) Хз есть ли такое в NT/XP, не проверял.
     
  3. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Тема сразу же пошла налево, причем уверенными шагами! :)

    Хорошо, попробуем сначала - существует ли легальный способ отлавливать IRP, связанные со сменой режима электропитания, без создания драйвера (у MS REM'а, что-то было про CallGate в нулевое кольцо).
     
  4. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    угу, есть такая буква,сам делал. Кстати, тоже на Win98. Интересную фишку тогда обнаружил. Мануалы
    утверждают, что GD в DR7 сбрасывается при входе обработчик int 1 (что неверно при вызове обработчика
    инструкцией int 01). Так вот, если IDT разбить на 2 странички таким образом, чтобы дескриптор int 1 был
    Not Present, то GD сбрасывается и при входе в обработчик #PF.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    _BC_
    подозрение вызовет не родной обработчик PF.
    Можно имзенть значение неэкспортируемой переменной KiDebugRoutine, и ловить исключения так.
     
  6. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    ну на той же 9х целиком его и не надо менять, достаточно пропатчить F0-часть и включить (afair в msconfig) обработку F0 bug'а. А vmm32.vxd в 9х на патч проверить гораздо сложнее, чем тот же ntoskrnl в nt. Да и... кому это сейчас может приспичить, разбираться в ядре 9х... ;)
     
  7. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Люди добрые, да помогите!
     
  8. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Бог поможет... :)