다음을 통해 공유


KeAcquireInterruptSpinLock 함수(wdm.h)

KeAcquireInterruptSpinLock 루틴은 인터럽트 개체와 연결된 스핀 잠금을 획득합니다.

구문

KIRQL KeAcquireInterruptSpinLock(
  PKINTERRUPT Interrupt
);

매개 변수

Interrupt

[in, out] 인터럽트 개체에 대한 포인터를 지정합니다. 이 값은 IoConnectInterrupt 또는 IoConnectInterruptEx에서 제공해야 합니다.

반환 값

KeAcquireInterruptSpinLock 은 루틴이 호출되는 시점에 현재 IRQL을 반환합니다. 이 값은 스핀 잠금이 해제될 때 KeReleaseInterruptSpinLock 에 전달됩니다.

설명

드라이버는 인터럽트 스핀 잠금을 사용하여 인터럽트의 ISR과 공유되는 메모리에 대한 액세스를 동기화합니다. 드라이버는 KeReleaseInterruptSpinLock을 호출하여 스핀 잠금을 해제할 수 있습니다.

인터럽트 스핀 잠금이 유지되는 동안 실행되는 모든 코드는 지정된 인터럽트용 IRQL = DIRQL에서 실행되므로 매우 빠르게 실행해야 합니다. 자세한 내용은 중요 섹션 사용을 참조하세요.

드라이버 루틴을 ISR에 동기화하는 기본 방법은 KeSynchronizeExecution 루틴을 사용하는 것입니다.

Windows 8 시작하여 드라이버는 IoConnectInterruptEx를 사용하여 IRQL = PASSIVE_LEVEL 실행되고 인터럽트 동기화에 스핀 잠금을 사용하지 않는 인터럽트 서비스 루틴을 등록할 수 있습니다. 인터럽트가 수동 수준 ISR에 연결하는 인터럽트 개체를 가리키는 경우 KeAcquireInterruptSpinLock은 버그 검사 발생합니다. 자세한 내용은 Passive-Level 인터럽트 서비스 루틴 사용을 참조하세요.

호출자는 IRQL <= 인터럽트용 DIRQL에서 실행되어야 합니다. (인터럽트를 만들 때 IoConnectInterruptSynchronizeIrql 매개 변수로 전달된 드라이버 값입니다.)

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP
머리글 wdm.h
IRQL <= DIRQL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport)

추가 정보

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution