Функция 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 |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по