Всем доброго времени суток. очень хочется стать(сесть, лечь) фильтром на сей чудный девайс ))) Что в общем сделать совершенно не сложно - Код (Text): PDEVICE_OBJECT pRawDeviceObject = 0; PFILE_OBJECT pFileObject = 0; NTSTATUS status = IoGetDeviceObjectPointer( SimpleUString(L"\\Device\\WinDfs\\Root"), FILE_READ_ATTRIBUTES, &pFileObject, &pRawDeviceObject ); if (NT_SUCCESS(status)) { // тут нужная черная магия... } все работает при мануальном старте драйвера, однако при старте вместе с системой, мы стартуем раньше создания этого устройства, тоесть, когда его еще нет... как бы получить нотификацию о его создании? Лезут в голову только брутальные варианты, типа похучить IoCreateDevice, или создать тред в DeviceEntry, и там с некоторым интервалом проверять, не появилось ли устройство... Например для FILE_DEVICE_*_FILE_SYSTEM можно использовать IoRegisterFsRegistrationChange... А как быть с этим устройством?
А указать порядок загрузки, при котором твой драйвер грузится непосредственно после "чудного девайса" никак не подходит?
Никак. Дело в том, что внутри IoCreateDevice() не вызываются никакие колбеки, на которые можно было бы подписаться. Похоже, что это единственные варианты, не самые плохие, кстати. Ну разве, что сам DFS-драйвер не создаёт какие-либо событие, но это маловероятно. Можно ещё поковырять WMI на эту тему, но тоже вряд ли.