FltFastIoMdlRead 함수(fltkernel.h)
FltFastIoMdlRead 루틴은 파일 캐시에서 지정된 바이트 범위를 직접 가리키는 MDL(메모리 설명자 목록)을 반환합니다.
구문
BOOLEAN FLTAPI FltFastIoMdlRead(
PFLT_INSTANCE InitiatingInstance,
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus
);
매개 변수
InitiatingInstance
호출자에 대한 불투명 instance 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
[in] FileObject
캐시된 파일의 파일 개체에 대한 포인터입니다.
[in] FileOffset
데이터를 보유하는 캐시된 파일 내의 시작 바이트 오프셋을 지정하는 변수에 대한 포인터입니다.
[in] Length
캐시에서 읽을 데이터의 길이(바이트)입니다.
[in] LockKey
잠글 바이트 범위와 연결된 값입니다. 잠금할 범위가 비클러스터적 잠금으로 이미 잠겨 있는 다른 범위와 겹치거나 읽을 범위가 이미 비독점적으로 잠겨 있는 다른 범위의 하위 범위인 경우 이 매개 변수의 값은 해당 비클러스터형 잠금의 키여야 합니다. 잠금은 호출 스레드의 부모 프로세스에 의해 유지되어야 합니다. 그렇지 않으면 이 매개 변수가 적용되지 않습니다.
[out] MdlChain
출력에서 연결된 MDL(메모리 설명자 목록) 목록에 대한 포인터입니다.
[out] IoStatus
출력에서 전송의 상태 포함하는 IO_STATUS_BLOCK 구조체에 대한 포인터입니다. 작업이 성공하면 IoStatus.Status 가 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드로 설정됩니다. IoStatus.Information 는 루틴이 성공적으로 잠근 실제 바이트 수로 설정됩니다.
반환 값
FltFastIoMdlRead 루틴은 작업이 성공하면 TRUE를 반환하고 작업이 실패하면 FALSE를 반환합니다.
설명
FltFastIoMdlRead 루틴은 일반적인 IRP 메커니즘을 무시하고 호출자가 캐시된 파일 데이터에 직접 액세스하는 데 사용할 수 있는 MDL(메모리 설명자 목록)의 연결된 목록을 반환합니다. 이 작업은 데이터를 복사하거나 버퍼링하지 않으므로 일반 읽기보다 훨씬 빠릅니다.
루틴은 CcMdlRead 및 FsRtlMdlReadDev와 비슷합니다. FltFastIoMdlRead, CcMdlRead 및 FsRtlMdlReadDev 는 시스템이 이러한 페이지를 페이지 파일로 교환하지 못하도록 캐시된 파일 데이터가 포함된 페이지를 잠급니다. 호출자가 FltFastIoMdlReadComplete 루틴을 호출할 때까지 페이지는 메모리에 잠겨 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | fltkernel.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |