다음을 통해 공유


KeDelayExecutionThread 함수(wdm.h)

KeDelayExecutionThread 루틴은 지정된 간격 동안 현재 스레드를 경고 가능 또는 비인증 대기 상태로 전환합니다.

구문

NTSTATUS KeDelayExecutionThread(
  [in] KPROCESSOR_MODE WaitMode,
  [in] BOOLEAN         Alertable,
  [in] PLARGE_INTEGER  Interval
);

매개 변수

[in] WaitMode

호출자가 대기 중인 프로세서 모드( KernelMode 또는 UserMode일 수 있음)를 지정합니다. 하위 수준 드라이버는 KernelMode를 지정해야 합니다.

[in] Alertable

대기가 경고 가능한 경우 TRUE 를 지정합니다. 하위 수준 드라이버는 FALSE를 지정해야 합니다.

[in] Interval

대기가 발생할 절대 또는 상대 시간을 100나노초 단위로 지정합니다. 음수 값은 상대 시간을 나타냅니다. 절대 만료 시간은 시스템 시간의 변경 내용을 추적합니다. 상대 만료 시간은 시스템 시간 변경의 영향을 받지 않습니다.

반환 값

KeDelayExecutionThread 는 지연이 완료된 방법을 설명하는 다음 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
지정된 간격이 경과하여 지연이 완료되었습니다.
STATUS_ALERTED
스레드에 경고가 표시되어 지연이 완료되었습니다.
STATUS_USER_APC
사용자 모드 APC는 지정된 간격 이 만료되기 전에 배달되었습니다.
 

NT_SUCCESS 매크로는 이러한 모든 상태 값을 "성공" 값으로 인식합니다.

설명

만료 시간이 계산되고 현재 스레드가 대기 상태에 놓입니다. 지정된 간격이 지나면 스레드가 대기 상태를 종료하고 준비 상태로 되어 실행될 수 있게 됩니다.

경고 가능 매개 변수는 스레드를 경고할 수 있는 시기와 대기 상태가 결과적으로 중단되는 시기를 결정합니다. 자세한 내용은 대기 및 APC를 참조하세요.

WaitMode 매개 변수가 UserMode이면 대기 중에 커널 스택을 교환할 수 있습니다. 따라서 호출자는 UserMode 인수를 사용하여 KeDelayExecutionThread를 호출할 때 스택에 매개 변수를 전달하려고 시도해서는 안됩니다.

KeDelayExecutionThread가 STATUS_USER_APC 또는 STATUS_ALERTED 상태 함께 일찍 반환될 수 있으므로 WaitMode 매개 변수가 UserMode이거나 경고 가능TRUE인 경우 KeDelayExecutionThread의 반환 값을 검사 것이 특히 중요합니다.

사용자가 중단할 수 있는 모든 장기 대기는 UserMode 대기이고 경고 가능FALSE로 설정해야 합니다.

가능한 경우 경고 가능FALSE 로 설정하고 WaitModeKernelMode로 설정하여 드라이버 복잡성을 줄여야 합니다. 이 지침의 주요 예외는 대기가 장기 대기인 경우입니다.

지연의 만료 시간은 지연이 만료되는 절대 시간 또는 현재 시스템 시간을 기준으로 하는 시간으로 표현됩니다. Interval 매개 변수 값이 양수이면 만료 시간은 절대 시간입니다. 이 값이 음수이면 만료 시간은 상대적인 시간입니다.

만료 시간은 시스템 클록을 기준으로 측정되며, 타이머가 만료되는 시기를 운영 체제에서 감지할 수 있는 정확도는 시스템 클록의 세분성에 의해 제한됩니다. 자세한 내용은 타이머 정확도를 참조하세요.

요구 사항

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

추가 정보

KeQuerySystemTime