다음을 통해 공유


네트워크 드라이버의 IRQL

NDIS에서 호출하는 모든 드라이버 함수는 시스템 결정 IRQL(PASSIVE_LEVEL DISPATCH_LEVEL << DIRQL 중 하나)에서 실행됩니다. 예를 들어 미니포트 드라이버의 초기화함수, 중지 함수, 다시 설정 함수 및 종료 함수는 일반적으로 PASSIVE_LEVEL 실행되지만 시스템에 필요한 경우 더 높은 IRQL에서 다시 설정 및 종료 함수를 호출할 수 있습니다. 인터럽트 코드는 DIRQL에서 실행되므로 NDIS 중간 또는 프로토콜 드라이버는 DIRQL에서 실행되지 않습니다. 다른 모든 NDIS 드라이버 함수는 IRQL = DISPATCH_LEVEL 또는 그 아래에서 실행됩니다.

드라이버 함수가 실행되는 IRQL은 호출할 수 있는 NDIS 함수에 영향을 줍니다. 특정 함수는 IRQL = PASSIVE_LEVEL 호출할 수 있습니다. 다른 DISPATCH_LEVEL 이하에서 호출할 수 있습니다. IRQL 제한에 대한 모든 NDIS 함수를 검사 합니다.

드라이버의 ISR(인터럽트 서비스 루틴)과 리소스를 공유하는 모든 드라이버 함수는 경합 조건을 방지하기 위해 IRQL을 DIRQL로 올릴 수 있어야 합니다. NDIS는 이러한 메커니즘을 제공합니다.