IrqlIoRtlZwPassive 규칙(wdm)
IrqlIoRtlZwPassive 규칙은 드라이버가 IRQL = PASSIVE_LEVEL 실행되는 경우에만 규칙에 나열된 DDI를 호출한다고 지정합니다.
이 규칙은 PASSIVE_LEVEL 대한 DDI 규정 준수 확인 IRQL 규칙을 보강합니다. 자세한 내용은 Irql 규칙 집합(WDM)을 참조하세요.
드라이버 모델: 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로 표시됩니다. 예를 들면 다음과 같습니다.
또는
PC를 다시 부팅한 후 추가 IRQL 검사가 활성화됩니다. |
적용 대상
IoCreateFileEx
IoCreateFileSpecifyDeviceObjectHint
IoGetDeviceDirectory
IoGetDriverDirectory
IoOpenDeviceInterfaceRegistryKey
IoOpenDeviceRegistryKey
RtlCreateRegistryKey
RtlCreateSystemVolumeInformationFolder
RtlWriteRegistryValue
ZwCreateDirectoryObject
ZwCreateFile
ZwCreateKeyTransacted
ZwDeleteFile
ZwDeleteValueKey
ZwFlushBuffersFileEx
ZwFlushBuffersFile
ZwRenameKey
ZwSetEaFile
ZwSetInformationFile
ZwSetInformationKey