MarkingQueuedIrps 규칙(wdm)

MarkingQueuedIrps 규칙은 드라이버가 스핀 잠금을 유지하는 동안에만 추가 처리가 필요한 IRP에 대해 IoMarkIrpPending을 호출하도록 지정합니다. 이 규칙은 드라이버가 드라이버 관리 큐에 IRP를 추가하는 경우에만 적용됩니다.

특히 드라이버는 다음 이벤트가 모두 발생하는 경우에만 이 규칙을 위반합니다.

드라이버는 스핀 잠금을 유지하는 동안에만 대기 중인 IRP에 대해 IoMarkIrpPending 을 호출해야 합니다. 그렇지 않으면 IRP가 큐에서 해제되고, 다른 드라이버 루틴에 의해 완료되고, IoMarkIrpPending 호출이 발생하기 전에 시스템에서 해제되어 충돌이 발생할 수 있습니다.

자세한 내용은 IRP 취소 동기화를 참조하세요.

드라이버 모델: WDM

테스트 방법

컴파일 시

정적 드라이버 검증 도구를 실행하고 MarkingQueuedIrps 규칙을 지정합니다.

다음 단계를 사용하여 코드 분석을 실행합니다.
  1. 코드를 준비합니다(역할 형식 선언 사용).
  2. 정적 드라이버 검증 도구를 실행합니다.
  3. 결과를 보고 분석합니다.

자세한 내용은 정적 드라이버 검증 도구를 사용하여 드라이버에서 결함 찾기를 참조하세요.

적용 대상

InsertHeadListIoCallDriverIoMarkIrpPendingKeAcquireInStackQueuedSpinLockKeAcquireSpinLockKeInsertByKeyDeviceQueueKeInsertDeviceQueueKeInsertQueueDpcKeReleaseInStackQueuedSpinLockKeReleaseSpinLockPoCallDriverRemoveHeadList