次の方法で共有


ページング可能にできるコードの検出

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 以上に上げるたびに、ページング可能なすべてのコードが自動的にページングされます。 ドライバー検証ツールを使用すると、この領域のドライバーのバグをすばやく見つけることができます。 そうでない場合、通常、これらのバグはお客様しか検出できず、多くの場合、再現が非常に困難になります。