FsRtlPrepareMdlWriteDev 함수(ntifs.h)
FsRtlPrepareMdlWriteDev 루틴은 캐시에 직접 데이터를 쓰기 위해 캐시된 파일 데이터의 지정된 범위를 가리키는 연결된 MDL(메모리 설명자 목록) 목록을 반환합니다.
통사론
BOOLEAN FsRtlPrepareMdlWriteDev(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus,
[ in, optional ] PDEVICE_OBJECT DeviceObject
);
매개 변수
[in] FileObject
파일 개체에 대한 포인터입니다.
[in] FileOffset
데이터를 보유하는 캐시 내의 시작 바이트 오프셋을 지정하는 값에 대한 포인터입니다.
[in] Length
캐시에서 읽을 데이터의 길이(바이트)입니다.
[in] LockKey
잠글 바이트 범위와 연결된 값입니다. 잠글 범위가 비클러스터적 잠금으로 이미 잠긴 다른 범위와 겹치거나 읽을 범위가 이미 비독점적으로 잠긴 다른 범위의 하위 범위인 경우 이 매개 변수의 값은 해당 비클러스터형 잠금의 키여야 합니다. 잠금은 호출 스레드의 부모 프로세스에 의해 유지되어야 합니다. 그렇지 않으면 이 매개 변수는 영향을 주지 않습니다.
[out] MdlChain
출력에서 캐시된 데이터 내의 바이트 범위를 가리키는 MDL(메모리 설명자 목록)의 연결된 목록에 대한 포인터입니다.
[out] IoStatus
출력에 전송 상태가 포함된 IO_STATUS_BLOCK 구조체에 대한 포인터입니다. 작업이 성공하면 IoStatus.Status STATUS_SUCCESS 설정됩니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드로 설정됩니다. IoStatus.Information 루틴이 성공적으로 잠근 실제 바이트 수로 설정됩니다.
[ in, optional ] DeviceObject
파일이 열려 있는 디바이스 개체에 대한 포인터입니다.
반환 값
발언
FsRtlPrepareMdlWriteDevFsRtlCopyWrite비슷합니다. 단, FsRtlPrepareMdlWriteDev 캐시에 데이터를 복사하지 않습니다. 대신 호출자가 덮어쓰는 실제 페이지는 메모리에 잠기고 FsRtlPrepareMdlWriteDev 지정된 바이트 범위를 가리키는 하나 이상의 MDL(메모리 설명자 목록)을 반환합니다. 잠긴 페이지는 호출자가 FsRtlMdlWriteCompleteDev
MDL이 가리키는 페이지는 메모리에 잠겨 있지만 시스템 공간에 매핑되지 않습니다. 호출자는 MmGetSystemAddressForMdlSafe호출하여 이 매핑을 수행할 수 있습니다.
FsRtlPrepareMdlWriteDev
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
<= APC_LEVEL |
참고 항목
FsRtlCopyWrite