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