ページング可能にできるコードの検出
IRQL >= DISPATCH_LEVEL で実行されるコードを検出するには、PAGED_CODE マクロを使用します。 デバッグ モードでは、コードが IRQL >= DISPATCH_LEVEL で実行されている場合、このマクロはメッセージを生成します。 次の例に示すように、ルーチン全体をページング コードとしてマークするルーチンの最初のステートメントとしてマクロを追加します。
NTSTATUS
MyDriverXxx(
IN OUT PVOID ParseContext OPTIONAL,
OUT PHANDLE Handle
)
{
NTSTATUS Status;
PAGED_CODE();
.
.
.
}
これを正しく行っていることを確認するには、完了したドライバーに対してドライバー検証ツールを実行し、Force IRQL Checking オプションを有効にします。 このオプションにより、ドライバーが IRQL を DISPATCH_LEVEL 以上に上げるたびに、ページング可能なすべてのコードが自動的にページングされます。 ドライバー検証ツールを使用すると、この領域のドライバーのバグをすばやく見つけることができます。 そうでない場合、通常、これらのバグはお客様しか検出できず、多くの場合、再現が非常に困難になります。