SynchCritSection ルーチンの記述
ドライバーは、次の 2 つの基本的な目的のいずれかで SynchCritSection ルーチンを使用します。
ISR と同様に、 SynchCritSection ルーチンは、返される前に、デバイス レジスタの設定またはコンテキスト データの更新に必要な処理のみを行い、できるだけ迅速に実行する必要があります。
Because KeSynchronizeExecution は、 SynchCritSection ルーチンの実行中にデバイス ドライバーの割り込みスピン ロックを保持するため、ドライバーの ISR は、 SynchCritSection ルーチンが制御を返すまで実行できません。
受け取った IRP の場合、デバイス ドライバーは、ディスパッチ ルーチン (または場合によっては デバイス専用スレッド) の IRQL PASSIVE_LEVEL、または, or at IRQL DISPATCH_LEVEL in its StartIo ルーチンと DPC ルーチンの IRQL DISPATCH_LEVELで、できるだけ多くの I/O 処理を実行する必要があります。
重要なセクションの同期方法の詳細については、 「スピン ロックの使用: 例」 を参照してください。