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

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

Синтаксис

BOOLEAN CcCopyWrite(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] ULONG          Length,
  [in] BOOLEAN        Wait,
  [in] PVOID          Buffer
);

Параметры

[in] FileObject

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

[in] FileOffset

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

[in] Length

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

[in] Wait

Задайте значение TRUE , если вызывающий объект может быть переведен в состояние ожидания, пока не будут скопированы все данные. В противном случае — FALSE .

[in] Buffer

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

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

Подпрограмма CcCopyWrite возвращает значение TRUE , если данные были успешно скопированы, в противном случае — FALSE .

Комментарии

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

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

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

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

Требования

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

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

CcInitializeCacheMap