網路驅動程式中的 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 或更低的層級被調用。 您應該檢查每個 NDIS 函式是否有 IRQL 限制。
任何與驅動程式中斷服務例程 (ISR) 共用資源的驅動程式函式,都必須能夠將其 IRQL 提高到 DIRQL,以防止競爭狀況。 NDIS 提供這類機制。