CcPrepareMdlWrite 함수(ntifs.h)
CcPrepareMdlWrite 루틴은 호출자가 파일에 데이터를 쓸 수 있도록 캐시된 파일 메모리에 대한 직접 액세스를 제공합니다.
통사론
void CcPrepareMdlWrite(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus
);
매개 변수
[in] FileObject
캐시된 파일의 파일 개체에 대한 포인터입니다.
[in] FileOffset
데이터를 쓸 캐시된 파일 내에서 시작 바이트 오프셋을 지정하는 변수에 대한 포인터입니다.
[in] Length
시스템 캐시에 쓸 데이터의 길이(바이트)입니다.
[out] MdlChain
데이터를 쓸 페이지를 설명하는 하나 이상의 MDL(메모리 설명자 목록) 체인입니다.
[out] IoStatus
IO_STATUS_BLOCK 구조체에 대한 포인터입니다. CcPrepareMdlWrite 호출이 성공하면 IoStatus.Status STATUS_SUCCESS 설정됩니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드로 설정됩니다. IoStatus.Information MDL 체인에서 성공적으로 잠긴 실제 바이트 수로 설정됩니다.
반환 값
없음
발언
CcPrepareMdlWrite 데이터가 캐시된 파일에 복사되지 않는다는 점을 제외하고 CcCopyWrite비슷합니다. 대신 시스템 캐시에서 덮어쓸 실제 페이지는 메모리에 잠기고 CcPrepareMdlWrite 지정된 바이트 범위를 설명하는 하나 이상의 MDL(메모리 설명자 목록)을 반환합니다. 이러한 페이지는 CcMdlWriteComplete 또는 CcMdlWriteAbort 호출될 때까지 메모리에 잠겨 있습니다. 따라서
MDL에서 설명하는 페이지는 메모리에 잠겨 있지만 시스템 공간에 매핑되지는 않습니다. 호출자는 MmGetSystemAddressForMdlSafe호출하여 이 매핑을 수행할 수 있습니다.
ccPrepareMdlWrite
오류가 발생하면 CcPrepareMdlWrite 해당 특정 오류에 대한 상태 예외가 발생합니다. 예를 들어 풀 할당 오류가 발생하면 CcPrepareMdlWrite
파일을 캐시하려면 CcInitializeCacheMap사용합니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
< DISPATCH_LEVEL |
참고 항목
ccCopyWrite
ccInitializeCacheMap
CcMdlWriteAbort
mmMapLockedPages
mmProbeAndLockPages
MmUnmapLockedPages