Функция 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
Указатель на буфер, из которого копируются данные.
Возвращаемое значение
Никакой
Замечания
CcFastCopyWrite — это более быстрая версия CcCopyWrite. Он отличается от CcCopyWrite в следующих отношениях:
FileOffset — это ULONG, а не PLARGE_INTEGER.
Параметр ожидания
отсутствует. Вызывающий объект должен иметь возможность ввести состояние ожидания до тех пор, пока все данные не будут скопированы. CcFastCopyWrite не возвращает boOLEAN, чтобы указать, была ли операция записи успешной.
Если требуемые страницы кэшированного файла уже находятся в памяти, данные копируются немедленно и не блокируются. Если все необходимые страницы не являются резидентами, вызывающий объект помещается в состояние ожидания до тех пор, пока все необходимые страницы не были сделаны резидентами и данные можно скопировать.
Если возникает сбой, CcFastCopyWrite вызывает исключение состояния для конкретного сбоя. Например, если возникает сбой выделения пула, CcFastCopyWrite вызывает исключение STATUS_INSUFFICIENT_RESOURCES; Если возникает ошибка ввода-вывода, CcFastCopyWrite вызывает исключение состояния ошибки ввода-вывода. Таким образом, чтобы получить контроль при возникновении сбоя, драйвер должен упаковать вызов CcFastCopyWrite в , за исключением или инструкции try-finally.
Чтобы кэшировать файл, используйте CcInitializeCacheMap.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |