다음을 통해 공유


RtlRunOnceBeginInitialize 함수(ntddk.h)

RtlRunOnceBeginInitialize 루틴은 일회성 초기화를 시작합니다.

구문

NTSYSAPI NTSTATUS RtlRunOnceBeginInitialize(
  [in, out] PRTL_RUN_ONCE RunOnce,
  [in]      ULONG         Flags,
  [out]     PVOID         *Context
);

매개 변수

[in, out] RunOnce

RTL_RUN_ONCE 일회성 초기화 구조에 대한 포인터입니다.

[in] Flags

드라이버는 필요에 따라 다음 플래그 중 하나 이상을 지정할 수 있습니다.

RTL_RUN_ONCE_ASYNC

비동기적으로 초기화를 수행합니다. 드라이버는 여러 완료 시도를 병렬로 수행할 수 있습니다. 이 플래그를 사용하는 경우 이 플래그도 지정하지 않으면 이 루틴에 대한 후속 호출이 실패합니다.

RTL_RUN_ONCE_CHECK_ONLY

초기화를 시작하지 말고 검사 초기화가 이미 발생했는지 확인합니다. RtlRunOnceBeginInitialize가 STATUS_SUCCESS 반환하면 초기화가 성공하고 *Context에 초기화된 데이터가 포함됩니다.

[out] Context

초기화된 데이터를 수신하는 PVOID 변수에 대한 포인터를 지정합니다. *Context 값은 루틴이 STATUS_SUCCESS 반환하는 경우에만 유효합니다.

반환 값

RtlRunOnceBeginInitialize 는 다음 NTSTATUS 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
일회성 초기화가 이미 완료되었습니다. 초기화된 데이터는 컨텍스트 가 가리키는 메모리 위치에 저장됩니다.
STATUS_PENDING
호출자가 일회성 초기화를 성공적으로 시작했습니다. 이제 호출자가 드라이버별 초기화 단계를 수행한 다음 RtlRunOnceComplete 를 호출하여 초기화를 완료합니다.

설명

또는 드라이버가 RtlRunOnceExecuteOnce 를 호출하고 RunOnceInitialization 루틴을 제공하여 일회성 초기화를 수행할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 및 이후 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

추가 정보

RTL_RUN_ONCE

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization