KeSynchronizeExecution 함수(wdm.h)
KeSynchronizeExecution 루틴은 지정된 루틴의 실행을 하나 이상의 인터럽트 개체 집합에 할당된 ISR(인터럽트 서비스 루틴)과 동기화합니다.
구문
BOOLEAN KeSynchronizeExecution(
[in, out] PKINTERRUPT Interrupt,
[in] PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
[in, optional] __drv_aliasesMem PVOID SynchronizeContext
);
매개 변수
[in, out] Interrupt
인터럽트 개체 집합에 대한 포인터입니다. 호출자는 IoConnectInterrupt 또는 IoConnectInterruptEx 루틴에서 이 포인터 를 얻었습니다.
[in] SynchronizeRoutine
실행이 인터럽트 개체에 할당된 ISR의 실행과 동기화될 호출자 제공 SynchCritSection 루틴을 지정합니다.
[in, optional] SynchronizeContext
호출될 때 SynchCritSection 루틴에 전달할 호출자 제공 컨텍스트 값에 대한 포인터입니다.
반환 값
작업이 성공하면 KeSynchronizeExecution이 TRUE를 반환합니다. 그렇지 않으면 FALSE를 반환합니다.
설명
이 루틴이 호출되면 다음이 발생합니다.
- IRQL은 IoConnectInterrupt 또는 IoConnectInterruptEx 호출에 지정된 SynchronizeIrql 값으로 발생합니다.
- SynchronizeContext에 대한 액세스는 연결된 인터럽트 개체 스핀 잠금(또는 PASSIVE_LEVEL 실행되는 ISR의 경우 시스템 이벤트 개체)을 획득하여 할당된 ISR과 동기화됩니다.
- 지정된 SynchCritSection 루틴은 SynchronizeContext 값을 매개 변수로 사용하여 호출됩니다.
KeSynchronizeExecution의 호출자는 IRQL = DIRQL<에서 실행되어야 합니다. 즉, 호출자가 ISR을 IoConnectInterrupt 또는 IoConnectInterruptEx에 등록할 때 지정한 SynchronizeIrql 값보다 작거나 같은 IRQL에서 실행해야 합니다.
Windows 8 시작하여 드라이버는 KeSynchronizeExecution을 호출하여 SynchCritSection 루틴의 실행을 IRQL = PASSIVE_LEVEL 실행되는 ISR과 동기화할 수 있습니다. 이전 버전의 Windows에서 KeSynchronizeExecution 은 IRQL >= DISPATCH_LEVEL 실행되는 ISR과만 실행을 동기화할 수 있습니다. 자세한 내용은 Passive-Level 인터럽트 서비스 루틴 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DIRQL(설명 섹션 참조) |