IoRegisterDriverReinitialization 함수(ntddk.h)

IoRegisterDriverReinitialization 루틴은 초기화 또는 다시 초기화하는 동안 드라이버에서 호출되어 드라이버가 초기화되기 전에 다시 호출되도록 다시 초기화 루틴을 등록하고 시스템의 초기화가 완료될 수 있습니다.

구문

void IoRegisterDriverReinitialization(
  [in]           PDRIVER_OBJECT       DriverObject,
  [in]           PDRIVER_REINITIALIZE DriverReinitializationRoutine,
  [in, optional] PVOID                Context
);

매개 변수

[in] DriverObject

DriverEntry 루틴에 입력된 드라이버 개체에 대한 포인터입니다.

[in] DriverReinitializationRoutine

드라이버의 루틴 다시 초기화에 대한 포인터입니다.

[in, optional] Context

드라이버의 다시 초기화 루틴에 전달할 컨텍스트에 대한 포인터입니다.

반환 값

없음

설명

드라이버는 DriverEntry 루틴이 STATUS_SUCCESS 반환하는 경우에만 이 루틴을 호출할 수 있습니다. 드라이버 제공 다시 초기화 루틴에서 레지스트리를 사용해야 하는 경우 DriverEntry 루틴에는 RegistryPath 가 이 호출에서 다시 초기화 루틴에 전달된 컨텍스트의 일부로 가리키는 문자열의 복사본이 포함되어야 합니다.

드라이버가 동적으로 로드되는 경우 일반적으로 실행되는 시스템 중에 이 문제가 발생할 수 있으므로 다시 초기화 큐에 대한 모든 참조를 동기화해야 합니다.

DriverReinitializationRoutine에 대한Count 입력은 현재 호출을 포함하여 이 루틴이 호출된 횟수를 나타냅니다.

DriverEntry 루틴은 IoRegisterDriverReinitialization을 한 번만 호출할 수 있습니다. 다른 드라이버의 다시 초기화 루틴이 컨트롤을 반환한 후 다시 초기화 루틴을 다시 실행해야 하는 경우 다시 초기화 루틴은 드라이버의 다시 초기화 루틴을 실행해야 하는 횟수만큼 IoRegisterDriverReinitialization을 호출할 수도 있습니다.

일반적으로 다시 초기화 루틴이 있는 드라이버는 PnP 및 레거시 디바이스를 모두 제어하는 상위 수준 드라이버입니다. 이러한 드라이버는 PnP 관리자가 검색하는 디바이스(및 PnP 관리자가 드라이버의 AddDevice 루틴을 호출하는 디바이스)에 대한 디바이스 개체를 만들 뿐만 아니라 PnP 관리자가 검색하지 않는 레거시 디바이스에 대한 디바이스 개체도 만들어야 합니다. 드라이버는 다시 초기화 루틴을 사용하여 해당 디바이스 개체를 만들고 기본 디바이스의 다음 하위 드라이버 위에 드라이버를 계층화할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

추가 정보

DRIVER_OBJECT

IoRegisterBootDriverReinitialization