Можно ли получить DEVICE_OBJECT по имени интерфейса без посылки IRP_MJ_CREATE?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 09.02.20 23:10
Оценка:
Нужно динамически цеплять традиционный (не-PnP) драйвер-фильтр к различным устройствам. Для получения DEVICE_OBJECT по имени интерфейса везде предписывается использовать IoGetDeviceObjectPointer. Оно работает через ZwOpenFile/IoGetRelatedDeviceObject, а при открывании устройства ему посылается IRP_MJ_CREATE. Если драйвер устройства отвергает запрос (или вообще не обрабатывает IRP_MJ_CREATE) — объект получить не удается. В моем случае один из драйверов возвращает STATUS_INVALID_DEVICE_REQUEST.

IoAttachDevice не спасает — оно тоже работает через ZwOpenFile.

Есть какой-нибудь относительно честный способ получить DEVICE_OBJECT по имени интерфейса сразу из каталога объектов? Или только самому в том каталоге копаться?
DEVICE_OBJECT IoGetDeviceObjectPointer STATUS_INVALID_DEVICE_REQUEST IoAttachDevice ZwOpenFile IRP_MJ_CREATE
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.