Функция CcCopyRead (ntifs.h)
Программа CcCopyRead копирует данные из кэшированного файла в буфер пользователя.
Синтаксис
BOOLEAN CcCopyRead(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] BOOLEAN Wait,
[out] PVOID Buffer,
[out] PIO_STATUS_BLOCK IoStatus
);
Параметры
[in] FileObject
Указатель на объект файла для кэшированного файла, из которого будут считываться данные.
[in] FileOffset
Указатель на переменную, указывающую начальное смещение байтов в кэшированном файле.
[in] Length
Длина в байтах данных для чтения.
[in] Wait
Установите значение TRUE, если вызывающий объект может быть помещен в состояние ожидания до тех пор, пока все данные не будут скопированы, false в противном случае.
[out] Buffer
Указатель на буфер, в который копируются данные.
[out] IoStatus
Указатель на выделенную вызывающим объектом структуру, которая получает окончательное состояние завершения и сведения об операции. Если не все данные копируются успешно, IoStatus.Information содержит фактическое количество байтов, скопированных.
Возвращаемое значение
Подпрограмма CcCopyRead возвращает TRUE, если данные были успешно скопированы, FALSE в противном случае.
Замечания
Если ожиданиеTRUE, CcCopyRead гарантированно завершит запрос копирования и возвратит TRUE. Если необходимые страницы кэшированного файла уже находятся в памяти, данные будут скопированы немедленно, и блокировка не будет возникать. Если все необходимые страницы не являются резидентами, вызывающий объект будет помещен в состояние ожидания до тех пор, пока все необходимые страницы не были сделаны резидентами и данные можно скопировать.
Если ожиданиеFALSE, CcCopyRead откажется от блокировки и вернет FALSE, если требуемые страницы кэшированного файла еще не находятся в памяти.
Если возникает сбой, CcCopyRead вызывает исключение состояния для конкретного сбоя. Например, если происходит сбой выделения пула, CcCopyRead вызывает исключение STATUS_INSUFFICIENT_RESOURCES; Если возникает ошибка ввода-вывода, CcCopyRead вызывает исключение состояния ошибки ввода-вывода. Таким образом, чтобы получить контроль при возникновении сбоя, драйвер должен упаковать вызов CcCopyRead в , кроме или инструкции try-finally.
Чтобы кэшировать файл, используйте CcInitializeCacheMap.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 |
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h, FltKernel.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |