FsRtlMdlReadDev 함수(ntifs.h)
FsRtlMdlReadDev 루틴은 파일 캐시에서 지정된 바이트 범위를 직접 가리키는 MDL(메모리 설명자 목록)을 반환합니다.
통사론
BOOLEAN FsRtlMdlReadDev(
[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
[ in, optional ] DeviceObject
파일이 열려 있는 디바이스 개체에 대한 포인터입니다.
반환 값
발언
FsRtlMdlReadDev 루틴은 일반적인 IRP 메커니즘을 무시하고 호출자가 캐시된 파일 데이터에 직접 액세스하는 데 사용할 수 있는 MDL(메모리 설명자 목록)의 연결된 목록을 반환합니다. 이 작업은 데이터를 복사하거나 버퍼링하지 않으므로 일반 읽기보다 훨씬 빠릅니다.
루틴은 CcMdlRead 및 fltFastIoMdlRead
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
<= APC_LEVEL |
참고 항목
CcMdlRead
FsRtlMdlReadEx