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