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