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 規則。 使用下列步驟來執行程式碼的分析:如需詳細資訊,請參閱 使用靜態驅動程式驗證器尋找驅動程式中的瑕疵。 |
运行时 |
---|
您可以使用 Verifier.exe 命令列來啟用一或多個驅動程式的 DDI 合規性 - 其他 IRQL 規則。 如需詳細資訊,請參閱 選取驅動程式驗證器選項。 您必須重新啟動計算機,才能啟用或停用 DDI 合規性 - 其他 IRQL 規則。 在命令行上,DDI 合規性 - 其他 IRQL 檢查是以規則類別值 35 表示。 例如:
OR
計算機重新啟動之後,額外的 IRQL 檢查將會處於作用中狀態。 |
適用於
IoCreateFileEx
IoCreateFileSpecifyDeviceObjectHint
IoGetDeviceDirectory
IoGetDriverDirectory
IoOpenDeviceInterfaceRegistryKey
IoOpenDeviceRegistryKey
RtlCreateRegistryKey
RtlCreateSystemVolumeInformationFolder
RtlWriteRegistryValue
ZwCreateDirectoryObject
ZwCreateFile
ZwCreateKeyTransacted
ZwDeleteFile
ZwDeleteValueKey
ZwFlushBuffersFileEx
ZwFlushBuffersFile
ZwRenameKey
ZwSetEaFile
ZwSetInformationFile
ZwSetInformationKey