Функция 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 содержит фактическое количество скопированных байтов.
Возвращаемое значение
None
Remarks
CcFastCopyRead — это более быстрая версия CcCopyRead. Она отличается от CcCopyRead в следующих отношениях:
FileOffset — это ULONG, а не PLARGE_INTEGER.
Параметр Wait отсутствует. Вызывающий объект должен иметь возможность войти в состояние ожидания, пока не будут скопированы все данные.
CcFastCopyRead не возвращает BOOLEAN, чтобы указать, была ли операция чтения успешной.
Значение FileOffset plus Length должно быть меньше или равно размеру кэшированного файла, иначе произойдет сбой утверждения.
В случае сбоя CcFastCopyRead создает исключение состояния для конкретного сбоя. Например, если происходит сбой выделения пула, CcFastCopyRead вызывает исключение STATUS_INSUFFICIENT_RESOURCES; Если возникает ошибка ввода-вывода, CcFastCopyRead создает исключение состояния ошибки ввода-вывода. Поэтому, чтобы получить контроль в случае сбоя, драйвер должен заключить вызов CcFastCopyRead в оператор try-except или try-finally .
Чтобы кэшировать файл, используйте CcInitializeCacheMap.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по