Я пытаюсь написать свой первый драйвер PCI с использованием WDF.
Я в основном взял базовый шаблон проекта c kmdf из Visual Studio, добавил несколько соответствующих соответствующих обратных вызовов PNP и отредактировал файл .inf в включите идентификатор оборудования для подключенного устройства.
Из файла .inf:
[Standard.NT$ARCH$]
%cvbkmd.DeviceDesc%=cvbkmd_Device, PCI\VEN_1172&DEV_424F; hw-id
После установки драйвера через devcon я вижу что-то странное:
После нескольких сбоев в диспетчере устройств я вижу 2 экземпляра устройства в одном классе устройств. один - программный драйвер (находится под ROOT), а другой - надлежащее устройство PCI.
Наблюдая за трассировкой отладки драйвера в TraceView, я вижу, что все обратные вызовы событий устройства вызываются дважды. один раз для каждого счетчика. когда они вызываются с помощью перечислителя PCI, я получаю ожидаемые параметры от устройства PCI. например EVT_WDF_DEVICE_PREPARE_HARDWARE обратный вызов вызывается один раз с пустым списком TranlatedResources и один раз с ресурсами устройства PCI.
Я попытался выполнить windows восстановление и переустановить драйвер, но проблема все еще существует.
Так что может быть причиной установки моего устройства под ROOT?