Есть legacy драйвер, ни к какому железу не привязанный. Соответственно, устанавливается и стартует через SCManager, после чего прямо в DriverEntry создается FDO и SymbolicLink к нему. Все работает.
Возникла необходимость перехода на WDM с использованием интерфейса. Выползли проблемы:
1) При попытке выполнить IoRegisterDeviceInterface прямо на FDO — недопустимая операция с устройством (правильно, так и должно быть, судя по раскопкам этот путь в корне неверный, привожу только для полноты картины)
2) При попытке найти какой-нибудь левый PDO и подключиться к нему — та же картина. Вопрос: Можно ли найти и использовать левый PDO ?
3) При попытке сделать как положено, т. е. вынести создание устройства в AddDevice — AddDevice не вызывается, драйвер не запускается с сообщением "все устройства, связанные с данной службой остановлены". Вопрос: Как заставить вызываться AddDevice ?
PS. Можно ли обойти указанные проблемы, если устанавливать драйвер через inf ? Там, вроде, можно прописать интерфейсы сразу. Но избавит ли это от вызова IoRegisterDeviceInterface ?