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(주의 섹션 참조) |