IrqlNtifsApcPassive 규칙(wdm)
IrqlNtifsApcPassive 규칙은 드라이버가 IRQL = PASSIVE_LEVEL 또는 IRQL = APC_LEVEL 실행되는 경우에만 규칙에 나열된 DDI를 <호출한다고 지정합니다.
드라이버 모델: WDM
버그 검사 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION(0x20024) 규칙으로 발견된 버그 검사
예제
다음 코드는 이 규칙을 위반합니다.
//
// KeAcquireSpinLock raises the IRQL to DISPATCH_LEVEL.
//
KeAcquireSpinLock (&Lock, &OldIrql);
//
// ERROR: ZwWriteFile can only be called at IRQL == PASSIVE_LEVEL.
//
ZwWriteFile (Handle,
NULL,
NULL,
NULL,
IoStatusBlock,
Buffer,
BufferLength,
NULL,
NULL);
KeReleaseSpinLock (&Lock, OldIrql);
IRQL 수준에 대한 자세한 내용은 디스패치 루틴 및 IRQL 및하드웨어 우선 순위 관리를 참조하세요.
테스트 방법
컴파일 시 |
---|
정적 드라이버 검증 도구를 실행하고 IrqlNtifsApcPassive 규칙을 지정합니다. 다음 단계를 사용하여 코드 분석을 실행합니다. |
런타임 시 |
---|
Verifier.exe 명령줄을 사용하여 하나 이상의 드라이버에 대한 DDI 규정 준수 - 추가 IRQL 규칙을 활성화할 수 있습니다. 자세한 내용은 드라이버 검증 도구 옵션 선택을 참조하세요. DDI 규정 준수 - 추가 IRQL 규칙을 활성화하거나 비활성화하려면 컴퓨터를 다시 시작해야 합니다. 명령줄에서 DDI 준수 - 추가 IRQL 검사는 규칙 클래스 값 35로 표시됩니다. 예를 들면 다음과 같습니다.
또는
PC를 다시 부팅한 후 추가 IRQL 검사가 활성화됩니다. |
적용 대상
NtSetInformationFile
NtWriteFile
NtCreateFile
ZwWriteFile
CcCopyWrite
CcCopyWriteEx
CcDeferWrite
CcFastCopyWrite