동기화 및 스레드된 DPC

CustomThreadedDpc 루틴 내부 및 외부에서 액세스하는 메모리 위치에 대한 액세스를 동기화하기 위해 드라이버는 일반 스핀 잠금 또는 대기 중인 스핀 잠금을 사용할 수 있습니다. 이렇게 하면 CustomThreadedDpc 루틴이 두 IRQL에서 모두 실행될 수 있으므로 드라이버는 IRQL = PASSIVE_LEVEL 및 IRQL = DISPATCH_LEVEL 올바르게 동기화하기 위해 특정 규칙을 준수해야 합니다.

일반 스핀 잠금의 경우 다음 규칙이 적용됩니다.

큐에 대기 중인 스핀 잠금에 대한 규칙은 다음과 유사합니다.

KeAcquireSpinLockForDpcKeAcquireInStackQueuedSpinLockForDpc는 DISPATCH_LEVEL 호출될 때 IRQL을 다시 설정하지 않으므로 각각 KeAcquireSpinLock 및 KeAcquireInStackQueuedSpinLock보다 빠르게 실행됩니다.

스핀 잠금에 대한 자세한 내용은 스핀 잠금을 참조하세요.