Поделиться через


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

Программа CcCopyWriteEx копирует данные из буфера пользователя в кэшированный файл. Число байтов ввода-вывода для операции взимается в поток выдачи.

Синтаксис

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

Параметры

[in] FileObject

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

[in] FileOffset

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

[in] Length

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

[in] Wait

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

[in] Buffer

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

[in] IoIssuerThread

Поток, выдавающий запрос на запись. Для файловой системы с включенным учетом операций ввода-вывода диска это поток, в который взимается плата за операции ввода-вывода. Если IoIssuerThread имеет значение NULL, ввод-вывод взимается в текущий поток.

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

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

Замечания

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

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h, FltKernel.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

CcInitializeCacheMap