Partilhar via


FSCTL_OFFLOAD_WRITE código de controlo

O código de controle FSCTL_OFFLOAD_WRITE inicia uma gravação de descarregamento para um bloco de dados em um sistema de armazenamento que oferece suporte a primitivas de gravação de descarregamento.

Para executar essa operação, os drivers de minifiltro chamam FltFsControlFile com os seguintes parâmetros e os sistemas de arquivos, redirecionadores e drivers de filtro de sistema de arquivos herdados chamam ZwFsControlFile com os seguintes parâmetros.

Parâmetros

  • Instância [in]: somente FltFsControlFile . Um ponteiro de instância opaco para o chamador. Este parâmetro é necessário e não pode ser NULL.

  • FileObject [in]: FltFsControlFile apenas. O objeto de ponteiro de arquivo que especifica o arquivo para gravação. Este parâmetro é necessário e não pode ser NULL.

  • FileHandle [in]: somente ZwFsControlFile . O identificador de arquivo do arquivo para gravar. Este parâmetro é necessário e não pode ser NULL.

  • FsControlCode [in]: O código de controle para a operação. Use FSCTL_OFFLOAD_WRITE para esta operação.

  • InputBuffer [in]: Um ponteiro para uma estrutura FSCTL_OFFLOAD_WRITE_INPUT , que contém o tamanho e o deslocamento de um bloco de dados para leitura.

  • InputBufferLength [in]: O tamanho, em bytes, do buffer apontado por InputBuffer. Este valor é sizeof(FSCTL_OFFLOAD_WRITE_INPUT).

  • OutputBuffer [out]: Um ponteiro para uma estrutura de FSCTL_OFFLOAD_WRITE_INPUT , que contém o tamanho e o deslocamento de um bloco de dados para leitura.

  • OutputBufferLength [out]: O tamanho, em bytes, do buffer apontado pelo parâmetro OutputBuffer . Este valor deve ser pelo menos sizeof(FSCTL_OFFLOAD_READ_OUTPUT).

Bloco de status

FltFsControlFile ou ZwFsControlFile retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, a função apropriada pode retornar um dos seguintes valores NTSTATUS.

Código Meaning
STATUS_INVALID_DEVICE_REQUEST O identificador especificado não é um identificador de arquivo válido.
STATUS_INVALID_PARAMETER Um parâmetro é inválido. Ver Observações.
STATUS_NOT_SUPPORTED Não há suporte para operações de leitura de descarregamento neste volume.
STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED O tipo de ficheiro solicitado não é suportado. Não há suporte para operações de descarregamento nestes tipos de arquivo: Um arquivo transacionado (TxF); Ficheiros não utilizadores; Ficheiros comprimidos; Ficheiros encriptados; Arquivos esparsos; Arquivos NTFS Metatdata.
STATUS_TOO_LATE Uma operação de gravação foi tentada para um volume depois que ele foi desmontado.
STATUS_FILE_DELETED O fluxo de dados para este arquivo é inválido.
STATUS_FILE_CLOSED O identificador de arquivo está fechado.
STATUS_INVALID_HANDLE O identificador de arquivo especificado é inválido.
STATUS_FILE_LOCK_CONFLICT O acesso de leitura ou gravação não pode ser concedido devido ao estado atual de bloqueio de arquivo.
STATUS_END_OF_FILE O membro FileOffset doFSCTL_OFFLOAD_WRITE_INPUT começa após o fim do arquivo (EOF).
STATUS_DISMOUNTED_VOLUME Uma gravação de descarregamento não pode ocorrer em um volume desmontado.
STATUS_MEDIA_WRITE_PROTECTED O volume é somente leitura.
STATUS_INSUFFICIENT_RESOURCES Os recursos disponíveis são insuficientes para completar o pedido.
STATUS_BUFFER_TOO_SMALL InputBufferLength é muito pequeno para InputBuffer conter uma estruturaFSCTL_OFFLOAD_WRITE_INPUT , ou OutputBufferLength é muito pequeno para OutputBuffer receber uma estrutura FSCTL_OFFLOAD_WRITE_OUTPUT .

Observações

A leitura de descarregamento está disponível apenas para arquivos normais. Consulte a descrição para STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED para obter uma lista de tipos de arquivo não suportados.

Quando STATUS_INVALID_PARAMETER é retornado, o erro pode ser um dos seguintes parâmetros inválidos:

  • O tamanho do ficheiro é inferior a PAGE_SIZE.
  • InputBufferLength<sizeof(FSCTL_OFFLOAD_READ_OUTPUT).
  • Um ou mais destes membrosda FSCTL_OFFLOAD_WRITE_INPUT estão incorretos:

    FileOffset não é um múltiplo do tamanho do setor lógico do volume. CopyLength não é um múltiplo do tamanho do setor lógico do volume. TransferOffset não é um múltiplo do tamanho do setor lógico do volume. O tamanho não é o tamanho da estruturaFSCTL_OFFLOAD_WRITE_INPUT . FileOffset> Comprimento de dados válido (VDL) para o arquivo. FileOffset + Comprimento de cópia>MAXULONGLONG.

Requerimentos

Tipo de requisito Requisito
Cliente mínimo suportado Janelas 8
Header Ntifs.h (inclui Ntifs.h ou Fltkernel.h)

Consulte também

FltFsControlFile

ZwFsControlFile

FSCTL_OFFLOAD_WRITE_INPUT

FSCTL_OFFLOAD_WRITE_OUTPUT