Re[3]: Перевести драйвер на WDM с IoRegisterDeviceInterface
От: Maxim S. Shatskih Россия  
Дата: 17.08.05 08:24
Оценка:
Совершенно верно. IoRegisterDeviceInterface требует PDO, коего у legacy драйвера нет по определению.

PDO получается двумя способами:
а) возврат указателя на устройство в ответе на MN_QUERY_RELATIONS/BusRelations
б) IoReportDetectedDevice (для software-only устройств — в параметры передать все нули). Такой вызов создаст временный PDO "на лету".

Путь а) требует bus driverа, который бы такое сделал. Практически все bus drivers в системе — строят этот ответ на основне инфы, снятой с железа. Единственное (почти что) исключение — это root enumerator, который перечисляет ноды в реестре. Ноду можно создать вызовом SetupDiCreateDeviceInstance (кажется, он так назывался), или же установив INF.

Еще раз — делать такое для software-only модуля вряд ли оправдано. Одна лишь необходимость INF файла — та еще радость. Неоправданное усложнение задачи, оно же "овердизайн".

S>Маленькая поправка: Ваш девайс вообще не имеет девноды, поэтому даже до проверки

>флагов не дойдет, раньше рюхнется. Кстати, и PDO и девнода для legacy драйвера

А можно доказательство этого утверждения — с помощью WinDbg, WinObj или тому подобных тулов?

Легаси драйвер вообще не имеет отношения ни к PnP, ни к power management.
Занимайтесь LoveCraftом, а не WarCraftом!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.