SynchCritSection 루틴 작성
드라이버는 다음 두 가지 기본 목적 중 하나로 SynchCritSection 루틴을 사용합니다.
ISR과 마찬가지로 SynchCritSection 루틴은 반환하기 전에 디바이스 레지스터를 설정하거나 컨텍스트 데이터를 업데이트하는 데 필요한 작업만 수행하여 가능한 한 빨리 실행되어야 합니다.
KeSynchronizeExecution은 SynchCritSection 루틴이 실행되는 동안 디바이스 드라이버의 인터럽트 스핀 잠금을 보유하므로 SynchCritSection 루틴이 컨트롤을 반환할 때까지 드라이버의 ISR을 실행할 수 없습니다.
수신된 IRP의 경우 디바이스 드라이버는 디스패치 루틴(또는 디바이스 전용 스레드)의 IRQL PASSIVE_LEVEL 또는 StartIo 루틴 및 DPC 루틴의 IRQL DISPATCH_LEVEL 최대한 많은 I/O 처리를 수행해야 합니다.
중요한 섹션이 동기화되는 방법에 대한 자세한 내용은 스핀 잠금 사용: 예제를 참조하세요.