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


код элемента управления 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)

См. также раздел

FltFsControlFile

ZwFsControlFile

FSCTL_OFFLOAD_WRITE_INPUT

FSCTL_OFFLOAD_WRITE_OUTPUT