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 IRP를 보냅니다.

시스템은 드라이버가 드라이버의 서비스 이름인 ROOT\Driver 형식의 디바이스에 대한 단일 하드웨어 ID 문자열을 생성합니다. 드라이버는 IRP_MN_QUERY_ID 요청을 처리하여 추가 하드웨어 ID 또는 호환 ID를 제공할 수 있습니다.

드라이버 작성기는 지정된 하드웨어 ID 또는 호환 ID와 일치하는 INF 파일을 제공해야 합니다. INF 파일은 IoReportRootDevice 를 호출한 원래 드라이버를 해당 ID에 대해 로드할 드라이버로 지정해야 합니다. 시스템은 이 정보를 사용하여 디바이스에 대한 드라이버 스택을 다시 빌드합니다(예: 다시 시작). IoReportRootDevice의 호출자는 시스템 스레드의 컨텍스트에서 IRQL = PASSIVE_LEVEL 실행되어야 합니다.

드라이버는 IoReportDetectedDevice 를 사용하여 리소스를 사용하지만 IoReportRootDevice 대신 PnP 버스 드라이버에서 검색할 수 없는 하드웨어 디바이스를 보고해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 이상 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(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