次の方法で共有


ネットワーク ドライバーの IRQLs

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 は、このようなメカニズムを提供します。