Re[2]: PAGE FAULT 0Eh
От: altx  
Дата: 08.03.05 15:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, altx, Вы писали:


A>>Описание ситуации:

A>>Под W2K SP4 запущен драйвер фильтра ФС. По control code посланному из user mode драйвер приатачивается к диску C: . Вся его работа на данном этапе заключается в подключении, собственно к диску, и пропускании через себя запросов, ничего при этом над ними не выполняя. Шаблоном для всех необходимых действий явл. функции из FileSpy.
A>>Проблема:
A>>Запуск проходит успешно, драйвер успешно приатачивается к диску C:, и, как можно проследить через softice, пропускает запросы далее, вниз по стеку. Однако, при попытке открытия любого файла, расположенного скажем на раб. столе, или создании нового, скажем, в блокноте появляется SoftIce с Page Fault 0Eh Fault=0000. В стеке вызовов последним вызовом явл ntoskrnl!NtReadFile. Прикрученный к драйверу driver verifier ничего не дает. После сворачивания softice по F5 система не выпадает в BSOD(!) а продолжает "работать" при 100%-ной загрузке CPU.
A>>Что здесь не так?! С какой стороны смотреть на проблему, учитывая что до присоединения драйвера все работает нормально.

А>Ну в том, что система вижила после page fault'а ничего удивительного нет. Бывает такое. И как правило при этом у нее крутится вечный цикл внутри.


А>0) Пропустить запрос совсем ничего не выполняя все-таки нельзя Как минимум нужно Irp Stack Location поправить.
А>Вот такое там есть ?
А>

А>// Get this driver out of the driver stack and get to the next driver as
А>// quickly as possible.
Irp->>CurrentLocation++;
Irp->>Tail.Overlay.CurrentStackLocation++;

А>// Now call the appropriate file system driver with the request.
А>return IoCallDriver( filterDevExt->lowerFSDeviceObject, Irp );
А>


есть такое
IoSkipCurrentIrpStackLocation( Irp );
//
// Now call the next file system driver with the request.
//

status = IoCallDriver( ((PFILESPY_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->AttachedToDeviceObject, Irp );


А>1) Почему упала... нужно смотреть на инструкции, вызвавшие падение. Разобраться, что это за кривой параметр и откуда он там взялся.
А>Если есть SRC (те самые), посмотреть, на чем упала и как мы могли дойти до такой жизни.


так вот как бы так узнать после какого-такого действия драйвера происходит page fault ведь последняя команда в стеке ntoskrnl!NtReadFile...
...кроме того, у меня есть подозрение насчет FAST I/O — я не включал его поддержку в свой драйвер может быть из-за этого ветка FAST I/O всего стека драйверов остается не задействованной и выдает такую муть?! или FAST I/O это не обязалово ?! (хотя на osr пишут что вроде как обяз...?!)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.