偵測可分頁的程式碼
若要偵測在 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 選項,對已完成的驅動程序執行 Driver Verifier。 此選項會導致系統每次驅動程式引發 IRQL 到 DISPATCH_LEVEL 或更高時,自動分頁所有可分頁的程式碼。 使用驅動程式驗證器,您可以快速在此區域中找到任何驅動程序錯誤。 否則,這些錯誤通常只會由客戶發現,而您常常會發現它們非常難以重現。