共用方式為


網路驅動程式中的 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 提供這類機制。