共用方式為


irqlIoRtlZwPassive 規則 (wdm)

IrqlIoRtlZwPassive 規則指定驅動程式只在 IRQL = PASSIVE_LEVEL執行時,才會呼叫規則中列出的 DIS。

此規則會增強PASSIVE_LEVEL的 DDI 合規性檢查 IRQL 規則。 如需詳細資訊,請參閱 WDM) (Irql 規則集

驅動程式模型:WDM

此規則找到的錯誤檢查 () :錯誤檢查0xC4:DRIVER_VERIFIER_DETECTED_VIOLATION (0x20023)

範例

下列程式代碼違反此規則:

//
// KeAcquireSpinLock raises the IRQL to DISPATCH_LEVEL.
//

KeAcquireSpinLock (&Lock, &OldIrql);

//
// ERROR: IoGetDriverDirectory can only be called at IRQL == PASSIVE_LEVEL.
//

IoGetDriverDirectory (DriverObject,
                      DriverDirectoryData,
                      0,
                      &DirectoryHandle);

KeReleaseSpinLock (&Lock, OldIrql);

如需 IRQL 層級的詳細資訊,請參閱 分派例程和 IRQL 和管理 硬體優先順序

測試方法

在編譯時期

執行 靜態驅動程式驗證器 ,並指定 IrqlIoRtlZwPassive 規則。

使用下列步驟來執行程式碼的分析:
  1. 準備程式代碼 (使用角色類型宣告) 。
  2. 執行靜態驅動程式驗證程式。
  3. 檢視和分析結果。

如需詳細資訊,請參閱 使用靜態驅動程式驗證器尋找驅動程式中的瑕疵

运行时

您可以使用 Verifier.exe 命令列來啟用一或多個驅動程式的 DDI 合規性 - 其他 IRQL 規則。 如需詳細資訊,請參閱 選取驅動程式驗證器選項。 您必須重新啟動計算機,才能啟用或停用 DDI 合規性 - 其他 IRQL 規則。

在命令行上,DDI 合規性 - 其他 IRQL 檢查是以規則類別值 35 表示。 例如:

verifier /ruleclasses 35 /driver MyDriver.sys

OR

verifier /rc 35 /driver MyDriver.sys

計算機重新啟動之後,額外的 IRQL 檢查將會處於作用中狀態。

適用於

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetDeviceDirectory

IoGetDriverDirectory

IoOpenDeviceInterfaceRegistryKey

IoOpenDeviceRegistryKey

RtlCreateRegistryKey

RtlCreateSystemVolumeInformationFolder

RtlWriteRegistryValue

ZwCreateDirectoryObject

ZwCreateFile

ZwCreateKeyTransacted

ZwDeleteFile

ZwDeleteValueKey

ZwFlushBuffersFileEx

ZwFlushBuffersFile

ZwRenameKey

ZwSetEaFile

ZwSetInformationFile

ZwSetInformationKey