Поделиться через


Функция 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 (см. раздел "Примечания")

См. также

AddDevice

DriverEntry

IRP_MN_QUERY_DEVICE_RELATIONS

IRP_MN_QUERY_ID

IRP_MN_START_DEVICE

IoReportDetectedDevice

IoReportResourceForDetection