как получить нотификацию о создании \\Device\\WinDfs\\Root ?

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

  1. genesis

    genesis New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    43
    Всем доброго времени суток.

    очень хочется стать(сесть, лечь) фильтром на сей чудный девайс ))) Что в общем сделать совершенно не сложно -

    Код (Text):
    1.     PDEVICE_OBJECT pRawDeviceObject = 0;
    2.     PFILE_OBJECT pFileObject = 0;
    3.     NTSTATUS status = IoGetDeviceObjectPointer(
    4.         SimpleUString(L"\\Device\\WinDfs\\Root"),
    5.         FILE_READ_ATTRIBUTES,
    6.         &pFileObject,
    7.         &pRawDeviceObject
    8.         );
    9.     if (NT_SUCCESS(status))
    10.     {
    11.         // тут нужная черная магия...
    12.     }
    все работает при мануальном старте драйвера, однако при старте вместе с системой, мы стартуем раньше создания этого устройства, тоесть, когда его еще нет...

    как бы получить нотификацию о его создании? Лезут в голову только брутальные варианты, типа похучить IoCreateDevice, или создать тред в DeviceEntry, и там с некоторым интервалом проверять, не появилось ли устройство...

    Например для FILE_DEVICE_*_FILE_SYSTEM можно использовать IoRegisterFsRegistrationChange... А как быть с этим устройством?
     
  2. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    А указать порядок загрузки, при котором твой драйвер грузится непосредственно после "чудного девайса" никак не подходит?
     
  3. genesis

    genesis New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    43
    неа, кроме этого мы делаем еще много чего, и много интересного в системе можно так пропустить...
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Никак. Дело в том, что внутри IoCreateDevice() не вызываются никакие колбеки, на которые можно было бы подписаться.

    Похоже, что это единственные варианты, не самые плохие, кстати. Ну разве, что сам DFS-драйвер не создаёт какие-либо событие, но это маловероятно. Можно ещё поковырять WMI на эту тему, но тоже вряд ли.