ДрвФильтр дисковых операций: непонятки с IRP_MJ_DIRECTORY_CONTROL

Тема в разделе "WASM.NT.KERNEL", создана пользователем sasha_s, 17 апр 2009.

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Есть драйверок, который следит за обращениями к одной из папок, которая зашарена. При обращении к ней он выдает содержимое, которое генерирует сам.
    Делается это след. образом:
    1) в обработке IRP_MJ_CREATE (PreCreate) анализируется путь, если наш -- то сразу возвращаем FLT_PREOP_SUCCESS_WITH_CALLBACK, иначе FLT_PREOP_SUCCESS_NO_CALLBACK.
    2) после того как вернули FLT_PREOP_SUCCESS_WITH_CALLBACK вызовется обработчик PostCreate. В нем устанавливаю контекст FltSetStreamHandleContext и возвращаю FLT_POSTOP_FINISHED_PROCESSING.
    3) Далее вызывается мой обработчик IRP_MJ_DIRECTORY_CONTROL (PreDirControl), в котором я анализирую установленли мой контекст и набиваю несуществующий контент.

    Так вот далее самое интересное, при обращении по сетке к шаре -- все работает. При обращении к данной папке локально, все вызвается кроме моего обработчика IRP_MJ_DIRECTORY_CONTROL, в котором я и набиваю содержимое. Т.е. вызывается PreCreate, PostCreate, но далее ничего не идет.

    Как сделать чтобы и при обращении локально вызывался мой обработчик IRP_MJ_DIRECTORY_CONTROL?