KeSetEvent 함수(wdm.h)

KeSetEvent 루틴은 이벤트가 아직 신호를 받지 않은 경우 이벤트 개체를 신호 상태로 설정하고 이벤트 개체의 이전 상태를 반환합니다.

구문

LONG KeSetEvent(
  [in, out] PRKEVENT  Event,
  [in]      KPRIORITY Increment,
  [in]      BOOLEAN   Wait
);

매개 변수

[in, out] Event

호출자가 스토리지를 제공하는 초기화된 이벤트 개체에 대한 포인터입니다.

[in] Increment

이벤트를 설정하면 대기가 충족될 경우 적용할 우선 순위 증분을 지정합니다.

[in] Wait

KeSetEvent 호출 바로 뒤에 KeWaitXxx 루틴 중 하나를 호출할지 여부를 지정합니다. TRUE이면 KeSetEvent 호출 뒤에 KeWaitForMultipleObjects, KeWaitForMutexObject 또는 KeWaitForSingleObject를 호출해야 합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

반환 값

이벤트 개체의 이전 상태가 신호를 받으면 0이 아닌 값이 반환됩니다.

설명

KeSetEvent를 호출하면 이벤트가 신호 상태가 됩니다. 이벤트가 알림 이벤트인 경우 시스템은 이벤트 개체에서 가능한 한 많은 대기를 충족하려고 시도합니다. 이 이벤트는 KeClearEvent 또는 KeResetEvent에 대한 호출이 지워집니다. 이벤트가 동기화 이벤트인 경우 시스템에서 이벤트를 자동으로 지우기 전에 한 번의 대기가 충족됩니다.

KeSetEvent 루틴은 일시적으로 IRQL을 발생시킵니다. Wait 매개 변수가 FALSE이면 반환되기 전에 루틴이 호출 시작 시 있던 원래 값으로 IRQL을 복원합니다.

WAIT = TRUE이면 IRQL을 낮추지 않고 루틴이 반환됩니다. 이 경우 KeSetEvent 호출 바로 뒤에 KeWaitXxx 호출이 있어야 합니다. Wait = TRUE를 설정하면 호출자는 KeSetEvent 호출과 KeWaitXxx 호출 간에 불필요한 컨텍스트 전환이 발생하지 않도록 방지할 수 있습니다. KeWaitXxx 루틴은 반환되기 전에 KeSetEvent 호출을 시작할 때 IRQL을 원래 값으로 복원합니다. IRQL은 두 호출 간의 컨텍스트 전환을 사용하지 않도록 설정하지만 이러한 호출은 원자성 작업의 시작과 끝으로 안정적으로 사용할 수 없습니다. 예를 들어 이러한 두 호출 사이에 다른 프로세서에서 동시에 실행되는 스레드는 이벤트 개체의 상태 또는 대기 대상의 상태를 변경할 수 있습니다.

IRQL = PASSIVE_LEVEL 실행되는 페이지 가능한 스레드 또는 페이지 가능한 드라이버 루틴은 Wait 매개 변수가 TRUE로 설정된 KeSetEvent를 호출해서는 안 됩니다. 이러한 호출은 호출자가 KeSetEventKeWaitXxx 호출 간에 페이징되는 경우 치명적인 페이지 오류를 발생시킵니다.

이벤트 개체에 대한 자세한 내용은 이벤트 개체를 참조하세요.

WaitFALSE로 설정된 경우 호출자는 IRQL <= DISPATCH_LEVEL 실행할 수 있습니다. 그렇지 않으면 KeSetEvent 의 호출자는 IRQL <= APC_LEVEL 및 비비타 스레드 컨텍스트에서 실행되어야 합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 주의 섹션을 참조하세요.
DDI 규정 준수 규칙 CompletionEventChecking(wdm), DoubleKeSetEvent(storport), HwStorPortProhibitedDDIs(storport), IoAllocateIrpSignalEventInCompletion(wdm), IoBuildDeviceIoControlSetEvent(wdm), IoBuildFsdIrpSignalEventInCompletion(wdm), IrqlKeSetEvent(wdm), SignalEventInCompletion(wdm)

참고 항목

KeClearEvent

KeInitializeEvent

KeReadStateEvent

KeResetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject

I/O 요청을 완료할 때 우선 순위 상승 지정