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 호출이 와야 합니다. 대기 = TRUE를 설정하면 호출자가 KeSetEvent 호출과 KeWaitXxx 호출 간에 불필요한 컨텍스트 전환이 발생하지 않도록 방지할 수 있습니다. KeWaitXxx 루틴은 반환되기 전에 KeSetEvent 호출을 시작할 때 IRQL을 원래 값으로 복원합니다. IRQL은 두 호출 간의 컨텍스트 전환을 사용하지 않도록 설정하지만 이러한 호출은 원자성 작업의 시작과 끝으로 안정적으로 사용할 수 없습니다. 예를 들어 이러한 두 호출 사이에 다른 프로세서에서 동시에 실행되는 스레드는 이벤트 개체의 상태 또는 대기 대상의 상태를 변경할 수 있습니다.
IRQL = PASSIVE_LEVEL 실행되는 페이지 가능한 스레드 또는 페이딩 가능한 드라이버 루틴은 Wait 매개 변수가 TRUE로 설정된 KeSetEvent를 호출해서는 안 됩니다. 이러한 호출은 호출자가 KeSetEvent 와 KeWaitXxx 호출 간에 페이징되는 경우 치명적인 페이지 오류를 발생시킵니다.
이벤트 개체에 대한 자세한 내용은 이벤트 개체를 참조하세요.
Wait가 FALSE로 설정된 경우 호출자는 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) |