다음을 통해 공유


MdlAfterReqCompletedReadA 규칙(kmdf)

MdlAfterReqCompletedReadA 규칙은 EvtIoRead 콜백 함수 내에서 I/O 요청이 완료된 후 검색된 MDL(메모리 설명자 목록) 개체에 액세스할 수 없음을 지정합니다.

드라이버의 EvtIoRead 콜백 함수 내에서 I/O 요청에서 WdfRequestRetrieveOutputWdmmdl 메서드를 호출하여 검색된 요청 버퍼는 WdfRequestComplete, WdfRequestCompleteWithInformation 또는 WdfRequestCompleteWithPriorityBoost를 호출한 후에 액세스할 수 없습니다.

이 규칙은 다음 함수를 고려합니다.

WDF_MEMORY_DESCRIPTOR_INIT_MDLMmGetMdlByteCountMmGetSystemAddressForMdlSafeMmGetMdlVirtualAddressIoBuildPartialMdl (첫 번째 및 두 번째 매개 변수) KeFlushIoBuffersMmGetMdlPfnArrayMmGetMdlByteOffsetMmPrepareMdlForReuseWdfDmaTransactionInitialize

드라이버 모델: KMDF

테스트 방법

컴파일 시

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

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

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

적용 대상

WDF_MEMORY_DESCRIPTOR_INIT_MDLWdfDmaTransactionInitializeWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveOutputWdmMdlIoBuildPartialMdlKeFlushIoBuffersMmGetMdlByteCountMmGetMdlByteOffsetMmGetMdlPfnArrayMmGetMdlVirtualAddressMmGetSystemAddressForMdlSafeMmPrepareMdlForReuse