CcMdlWriteComplete 함수(ntifs.h)

CcMdlWriteComplete 루틴은 캐시된 파일에 대해 CcPrepareMdlWrite에서 만든 MDL(메모리 설명자 목록)을 해제합니다.

구문

void CcMdlWriteComplete(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] PMDL           MdlChain
);

매개 변수

[in] FileObject

CcPrepareMdlWrite에 전달된 파일 개체 포인터입니다.

[in] FileOffset

CcPrepareMdlWrite에 전달된 FileOffset의 값입니다.

[in] MdlChain

CcPrepareMdlWrite에서 반환된 MDL 체인의 주소입니다.

반환 값

없음

설명

파일 시스템은 CcMdlWriteComplete 를 호출하여 캐시된 파일에 대해 CcPrepareMdlWrite 에서 만든 MDL(메모리 설명자 목록)을 해제하고 쓰기에 대해 지정된 바이트 범위를 표시합니다. 잠긴 모든 실제 페이지가 잠금 해제됩니다. 매핑된 모든 페이지는 매핑되지 않습니다.

FileObject 매개 변수가 가리키는 파일 개체에 FO_WRITE_THROUGH 플래그를 설정하면 파일 데이터가 즉시 디스크로 플러시됩니다. 이 플러시 작업은 파일 시스템에 다시 입력되며 플러시 작업이 실패할 경우 CcMdlWriteComplete 에서 예외가 발생할 수 있습니다. 이 경우 MDL이 해제되지 않았으며 호출자가 작업을 다시 시도할 수 있습니다.

IRP_MN_COMPLETE 작업에 대해 CcMdlWriteComplete 가 성공적으로 호출되면 호출자는 IRP의 MdlAddress 필드를 NULL로 설정해야 합니다.

CcMdlWriteComplete를 사용하기 전에 파일 시스템 개발자는 FASTFAT 샘플에서 이 루틴이 사용되는 방식을 연구하는 것이 좋습니다.

CcPrepareMdlWrite에 대한 각 호출 뒤에 CcMdlWriteComplete 또는 CcMdlWriteAbort를 호출해야 합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

추가 정보

CcMdlWriteAbort

CcPrepareMdlWrite