Поделиться через


Функция 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

Указатель непрозрачного экземпляра для вызывающего объекта. Этот параметр является обязательным и не может быть null.

[in] FileObject

Указатель на объект файла для кэшированного файла.

[in] FileOffset

Указатель на переменную, указывающую начальное смещение байтов в кэшированном файле, в котором хранятся данные.

[in] Length

Длина в байтах данных для чтения из кэша.

[in] LockKey

Значение, связанное с диапазоном байтов для блокировки. Если диапазон для блокировки перекрывает другой диапазон, который уже заблокирован с неисключительной блокировкой, или если диапазон для чтения является подрангом другого диапазона, который уже заблокирован не исключительно, значение в этом параметре должно быть ключом для этой неисключительной блокировки, блокировка должна храниться родительским процессом вызывающего потока. В противном случае этот параметр не действует.

[out] MdlChain

В выходных данных указатель на связанный список списков дескрипторов памяти (MDLs).

[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 (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

CcMdlRead

FltFastIoMdlReadComplete

FsRtlMdlReadDev