偵測可分頁的程序代碼
若要偵測在 IRQL >= DISPATCH_LEVEL執行的程式代碼,請使用 PAGED_CODE 宏。 在偵錯模式中,如果程式代碼在 IRQL >= DISPATCH_LEVEL執行,此宏會產生訊息。 將宏新增為例程中的第一個語句,將整個例程標示為分頁程序代碼,如下列範例所示:
NTSTATUS
MyDriverXxx(
IN OUT PVOID ParseContext OPTIONAL,
OUT PHANDLE Handle
)
{
NTSTATUS Status;
PAGED_CODE();
.
.
.
}
若要確定您正確執行這項操作,請針對已完成的驅動程式執行 驅動程式驗證程式 ,並啟用 [強制 IRQL 檢查 ] 選項。 此選項會使系統每次驅動程式引發 IRQL 以DISPATCH_LEVEL或更新版本時,自動分頁出所有可分頁程式代碼。 使用驅動程式驗證器,您可以在此區域中快速找到任何驅動程序錯誤。 否則,這些 Bug 通常只會由客戶找到,而且它們通常很難讓您重現。