Код элемента управления FSCTL_OFFLOAD_READ
Код элемента управления FSCTL_OFFLOAD_READ инициирует разгрузку чтения для блока данных в системе хранения, которая поддерживает примитивы чтения разгрузки.
Для выполнения этой операции вызовите FltFsControlFile или ZwFsControlFile со следующими параметрами.
Параметры
Экземпляр [in]: только FltFsControlFile . Указатель непрозрачного экземпляра для вызывающего объекта. Этот параметр является обязательным и не может иметь значение NULL.
FileObject [in]: только FltFsControlFile . Объект указателя на файл, указывающий файл для чтения. Этот параметр является обязательным и не может иметь значение NULL.
FileHandle [in]: только ZwFsControlFile . Дескриптор файла для чтения. Этот параметр является обязательным и не может иметь значение NULL.
FsControlCode [in]: код элемента управления для операции. Используйте FSCTL_OFFLOAD_READ для этой операции.
InputBuffer [in]: указатель на структуру FSCTL_OFFLOAD_READ_INPUT , которая содержит размер и смещение считываемого блока данных.
InputBufferLength [in]: размер (в байтах) буфера, на который указывает InputBuffer. Это значение равно sizeof(FSCTL_OFFLOAD_READ_INPUT).
OutputBuffer [out]: указатель на структуру FSCTL_OFFLOAD_READ_OUTPUT , которая получает результаты операции чтения разгрузки.
OutputBufferLength [out]: размер в байтах буфера, на который указывает параметр OutputBuffer . Это значение должно быть по крайней мере sizeof(FSCTL_OFFLOAD_READ_OUTPUT).
Блок состояния
FltFsControlFile или ZwFsControlFile возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае соответствующая функция может вернуть одно из следующих значений NTSTATUS.
Код | Значение |
---|---|
STATUS_INVALID_DEVICE_REQUEST | Указанный дескриптор не является допустимым дескриптором файла |
STATUS_INVALID_PARAMETER | Недопустимый параметр. См. заметки. |
STATUS_VOLUME_DISMOUNTED | Том файловой системы отключен. |
STATUS_NOT_SUPPORTED | Операции разгрузки чтения на этом томе не поддерживаются. |
STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED | Запрошенный тип файла не поддерживается. Операции разгрузки не поддерживаются для файлов следующих типов: файл с транзакцией (TxF); Файлы, не являющиеся пользователями; Сжатые файлы; Зашифрованные файлы; Разреженные файлы; Файлы metatdata NTFS. |
STATUS_FILE_DELETED | Недопустимый поток данных для этого файла. |
STATUS_FILE_CLOSED | Дескриптор файла закрыт. |
STATUS_INVALID_HANDLE | Указан недопустимый дескриптор файла. |
STATUS_FILE_LOCK_CONFLICT | Недостаточный доступ на чтение из-за текущего состояния блокировки файла. |
STATUS_END_OF_FILE | Элемент FileOffsetFSCTL_OFFLOAD_READ_INPUT начинается после окончания файла (EOF). |
STATUS_DISMOUNTED_VOLUME | Чтение разгрузки не может произойти на отключенном томе. |
STATUS_INSUFFICIENT_RESOUCES | Недостаточно ресурсов для выполнения запроса. |
STATUS_BUFFER_TOO_SMALL | OutputBufferLength слишком мал, чтобы OutputBuffer получил структуру FSCTL_OFFLOAD_READ_OUTPUT . |
Комментарии
Разгрузка чтения доступна только для обычных файлов. Список неподдерживаемых типов файлов см. в описании STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED .
Чтение может начинаться за пределами допустимой длины данных (VDL), но не за пределами EOF.
При возвращении STATUS_INVALID_PARAMETER ошибка может быть одним из следующих недопустимых параметров:
- Размер файла меньше PAGE_SIZE.
- InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_INPUT)
. - Один или несколько из этих элементов FSCTL_OFFLOAD_READ_INPUT являются неверными:
- FileOffset не является кратным размеру логического сектора тома.
- CopyLength не является кратным размеру логического сектора тома.
- Размер не является размером структуры FSCTL_OFFLOAD_READ_INPUT .
- FileOffset + CopyLength>MAXULONGLONG.
Требования
Тип требования | Требование |
---|---|
Минимальная версия клиента | Windows 8 |
Заголовок | Ntifs.h (включая Ntifs.h или Fltkernel.h) |