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

См. также раздел

CcCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity