Compartir a través de


FSCTL_OFFLOAD_WRITE código de control

El código de control FSCTL_OFFLOAD_WRITE inicia una escritura de descarga para un bloque de datos en un sistema de almacenamiento que admite la descarga de primitivos de escritura.

Para realizar esta operación, los controladores de minifiltro llaman a FltFsControlFile con los parámetros siguientes, y los sistemas de archivos, los redireccionadores y los controladores de filtro del sistema de archivos heredados llaman a ZwFsControlFile con los parámetros siguientes.

Parámetros

  • Instancia [in]: FltFsControlFile solo. Puntero de instancia opaco para el autor de la llamada. Este parámetro es obligatorio y no puede ser NULL.

  • FileObject [in]: FltFsControlFile solo. Objeto de puntero de archivo en el que se especifica el archivo en el que se va a escribir. Este parámetro es obligatorio y no puede ser NULL.

  • FileHandle [in]: ZwFsControlFile solo. Identificador de archivo en el que se va a escribir. Este parámetro es obligatorio y no puede ser NULL.

  • FsControlCode [in]: el código de control de la operación. Use FSCTL_OFFLOAD_WRITE para esta operación.

  • InputBuffer [in]: puntero a una estructura de FSCTL_OFFLOAD_WRITE_INPUT , que contiene el tamaño y el desplazamiento de un bloque de datos que se va a leer.

  • InputBufferLength [in]: tamaño, en bytes, del búfer al que apunta InputBuffer. Este valor es sizeof(FSCTL_OFFLOAD_WRITE_INPUT).

  • OutputBuffer [out]: puntero a una estructura de FSCTL_OFFLOAD_WRITE_INPUT , que contiene el tamaño y el desplazamiento de un bloque de datos que se va a leer.

  • OutputBufferLength [out]: tamaño, en bytes, del búfer al que apunta el parámetro OutputBuffer . Este valor debe ser al menos sizeof(FSCTL_OFFLOAD_READ_OUTPUT).

Bloque de estado

FltFsControlFile o ZwFsControlFile devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, la función adecuada podría devolver uno de los siguientes valores NTSTATUS.

Código Significado
STATUS_INVALID_DEVICE_REQUEST El identificador especificado no es un identificador de archivo válido.
STATUS_INVALID_PARAMETER Si se devuelve este valor, significará que el parámetro en cuestión no es válido. Vea la sección Comentarios.
STATUS_NOT_SUPPORTED Las operaciones de lectura de descarga no se admiten en este volumen.
STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED No se admite el tipo de archivo solicitado. Las operaciones de descarga no se admiten en estos tipos de archivo: un archivo de transacción (TxF); Archivos que no son de usuario; Archivos comprimidos; Archivos cifrados; Archivos dispersos; Archivos de metadatos NTFS.
STATUS_TOO_LATE Se intentó realizar una operación de escritura en un volumen después de que se desmontó.
STATUS_FILE_DELETED El flujo de datos de este archivo no es válido.
STATUS_FILE_CLOSED Se cierra el identificador de archivo.
STATUS_INVALID_HANDLE El identificador de archivo especificado no es válido.
STATUS_FILE_LOCK_CONFLICT No se puede conceder acceso de lectura o escritura debido al estado de bloqueo de archivos actual.
STATUS_END_OF_FILE El miembro FileOffset deFSCTL_OFFLOAD_WRITE_INPUT comienza después del final del archivo (EOF).
STATUS_DISMOUNTED_VOLUME No se puede producir una escritura de descarga en un volumen desmontado.
STATUS_MEDIA_WRITE_PROTECTED El volumen es de solo lectura.
STATUS_INSUFFICIENT_RESOUCES Hay recursos insuficientes disponibles para completar la solicitud.
STATUS_BUFFER_TOO_SMALL InputBufferLength es demasiado pequeño para que InputBuffer contenga una estructurade FSCTL_OFFLOAD_WRITE_INPUT , o OutputBufferLength es demasiado pequeño para que OutputBuffer reciba una estructura de FSCTL_OFFLOAD_WRITE_OUTPUT .

Comentarios

La descarga de lectura solo está disponible para archivos normales. Consulte la descripción de STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED para obtener una lista de tipos de archivo no admitidos.

Cuando se devuelve STATUS_INVALID_PARAMETER, el error podría ser uno de los siguientes parámetros no válidos:

  • El tamaño del archivo es menor que PAGE_SIZE.
  • InputBufferLength<sizeof(FSCTL_OFFLOAD_READ_OUTPUT).
  • Uno o varios de estos miembros deFSCTL_OFFLOAD_WRITE_INPUT son incorrectos:

    FileOffset no es un múltiplo del tamaño del sector lógico del volumen. CopyLength no es un múltiplo del tamaño del sector lógico del volumen. TransferOffset no es un múltiplo del tamaño del sector lógico del volumen. El tamaño no es el tamaño de la estructuraFSCTL_OFFLOAD_WRITE_INPUT . FileOffset> Longitud de datos válida (VDL) para el archivo. FileOffset + CopyLength>MAXULONGLONG.

Requisitos

Tipo de requisito Requisito
Cliente mínimo compatible Windows 8
Encabezado Ntifs.h (incluya Ntifs.h o Fltkernel.h)

Consulte también

FltFsControlFile

ZwFsControlFile

FSCTL_OFFLOAD_WRITE_INPUT

FSCTL_OFFLOAD_WRITE_OUTPUT