Функция CcFastCopyWrite (ntifs.h)

Подпрограмма CcFastCopyWrite выполняет быструю запись копирования из буфера в памяти в кэшированный файл.

Синтаксис

void CcFastCopyWrite(
  [in] PFILE_OBJECT FileObject,
  [in] ULONG        FileOffset,
  [in] ULONG        Length,
  [in] PVOID        Buffer
);

Параметры

[in] FileObject

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

[in] FileOffset

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

[in] Length

Длина записываемых данных в байтах.

[in] Buffer

Указатель на буфер, из которого должны быть скопированы данные.

Возвращаемое значение

None

Remarks

CcFastCopyWrite — это более быстрая версия CcCopyWrite. Он отличается от CcCopyWrite в следующих отношениях:

  • FileOffset — это ULONG, а не PLARGE_INTEGER.

  • Параметр Wait отсутствует. Вызывающий объект должен иметь возможность войти в состояние ожидания, пока не будут скопированы все данные.

  • CcFastCopyWrite не возвращает BOOLEAN для указания успешности операции записи.

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

При возникновении какого-либо сбоя CcFastCopyWrite создает исключение состояния для этого конкретного сбоя. Например, при сбое выделения пула CcFastCopyWrite создает исключение STATUS_INSUFFICIENT_RESOURCES; При возникновении ошибки ввода-вывода CcFastCopyWrite создает исключение состояния ошибки ввода-вывода. Таким образом, чтобы получить контроль в случае сбоя, драйвер должен заключить вызов CcFastCopyWrite в оператор try-except или try-finally .

Чтобы кэшировать файл, используйте CcInitializeCacheMap.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe

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

CcCopyWrite

CcInitializeCacheMap