Функция IoReportRootDevice (ntddk.h)
IoReportRootDevice сообщает об устройстве, которое не может быть обнаружено драйвером PnP в диспетчер PnP. IoReportRootDevice позволяет создавать только одно устройство на драйвер.
Синтаксис
NTSTATUS IoReportRootDevice(
[in] PDRIVER_OBJECT DriverObject
);
Параметры
[in] DriverObject
Указатель на объект драйвера драйвера, который обнаружил устройство.
Возвращаемое значение
IoReportRootDevice возвращает STATUS_SUCCESS при успешном выполнении или соответствующий код ошибки при сбое.
Замечания
Драйверы для устройств, которые не могут быть обнаружены водителем PnP шины, используют IoReportRootDevice для отправки сообщения об устройстве в систему. Устройства, которые могут быть обнаружены водителем PnP шины, должны сообщаться в ответ на запрос IRP_MN_QUERY_DEVICE_RELATIONS.
Драйвер обычно вызывает эту подпрограмму из подпрограммы DriverEntry.
IoReportRootDevice помечает устройство как корневое перечисленное устройство, и эта идентификация сохраняется во время загрузки системы. Диспетчер PnP "обнаруживает" устройство в списке, перечисляемом корнем, и настраивает его как устройство PnP: диспетчер PnP запрашивает сведения об устройстве, определяет соответствующие драйверы и вызывает их AddDevice подпрограммы и отправляет все соответствующие PnP IRPs.
Система создает одну строку идентификатора оборудования для устройства в формате ROOT\Driver, где Driver — имя службы драйвера. Драйвер может предоставлять дополнительные идентификаторы оборудования или совместимые идентификаторы, обрабатывая запрос IRP_MN_QUERY_ID.
Модуль записи драйверов должен предоставить INF-файл, соответствующий любому из указанных идентификаторов оборудования или совместимых идентификаторов. INF-файл должен указать исходный драйвер, который вызвал IoReportRootDevice в качестве драйвера для загрузки этих идентификаторов. Система использует эти сведения для перестроения стека драйверов для устройства, например при перезапуске. Вызывающие IoReportRootDevice должны работать в IRQL = PASSIVE_LEVEL в контексте системного потока.
Драйверы должны использовать IoReportDetectedDevice для создания отчетов о аппаратных устройствах, использующих ресурсы, но не могут быть обнаружены драйвером PnP вместо IoReportRootDevice.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows 8 и более поздних версиях Windows. |
целевая платформа | Всеобщий |
заголовка | ntddk.h (include Ntddk.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (см. раздел "Примечания") |