Функция CcFastCopyRead (ntifs.h)
Процедура CcFastCopyRead выполняет быстрое копирование из кэшированного файла в буфер в памяти.
Синтаксис
void CcFastCopyRead(
[in] PFILE_OBJECT FileObject,
[in] ULONG FileOffset,
[in] ULONG Length,
[in] ULONG PageCount,
[out] PVOID Buffer,
[out] PIO_STATUS_BLOCK IoStatus
);
Параметры
[in] FileObject
Указатель на объект файла для кэшированного файла, из которого будут считываться данные.
[in] FileOffset
Запуск смещения байтов в кэшированном файле.
[in] Length
Длина в байтах данных для чтения.
[in] PageCount
Количество страниц, охватываемых чтением.
[out] Buffer
Указатель на буфер, в который копируются данные.
[out] IoStatus
Указатель на структуру, которая получает окончательное состояние завершения и сведения об операции. Если не все данные копируются успешно, IoStatus.Information содержит фактическое количество байтов, скопированных.
Возвращаемое значение
Никакой
Замечания
CcFastCopyRead — это более быстрая версия CcCopyRead. Он отличается от CcCopyRead в следующих отношениях:
FileOffset — это ULONG, а не PLARGE_INTEGER.
Параметр ожидания
отсутствует. Вызывающий объект должен иметь возможность ввести состояние ожидания до тех пор, пока все данные не будут скопированы. CcFastCopyRead не возвращает boOLEAN, чтобы указать, выполнена ли операция чтения успешно.
Если возникает сбой, CcFastCopyRead вызывает исключение состояния для конкретного сбоя. Например, если возникает сбой выделения пула, CcFastCopyRead вызывает исключение STATUS_INSUFFICIENT_RESOURCES; Если возникает ошибка ввода-вывода, CcFastCopyRead вызывает исключение состояния ошибки ввода-вывода. Таким образом, чтобы получить контроль при возникновении сбоя, драйвер должен упаковать вызов CcFastCopyRead в , за исключением или инструкции try-finally.
Чтобы кэшировать файл, используйте CcInitializeCacheMap.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |