Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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) |