Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 dá suporte a primitivos de gravação de descarregamento.
Para executar essa operação, os drivers de minifiltro chamam FltFsControlFile com os seguintes parâmetros e sistemas de arquivos, redirecionadores e drivers de filtro do 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. Esse parâmetro é necessário e não pode ser NULL.
FileObject [in]: somente FltFsControlFile . O objeto de ponteiro de arquivo que especifica o arquivo ao qual gravar. Esse parâmetro é necessário e não pode ser NULL.
FileHandle [in]: somente ZwFsControlFile . O identificador de arquivo do arquivo no qual gravar. Esse parâmetro é necessário e não pode ser NULL.
FsControlCode [in]: o código de controle da operação. Use FSCTL_OFFLOAD_WRITE para esta operação.
InputBuffer [in]: um ponteiro para uma estrutura de FSCTL_OFFLOAD_WRITE_INPUT , que contém o tamanho e o deslocamento de um bloco de dados a ser lido.
InputBufferLength [in]: o tamanho, em bytes, do buffer apontado por InputBuffer. Esse 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 a ser lido.
OutputBufferLength [out]: o tamanho, em bytes, do buffer apontado pelo parâmetro OutputBuffer . Esse 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 poderá retornar um dos seguintes valores NTSTATUS.
| Code | Meaning |
|---|---|
| STATUS_INVALID_DEVICE_REQUEST | O identificador especificado não é um identificador de arquivo válido. |
| STATUS_INVALID_PARAMETER | Um parâmetro é inválido. Consulte Comentários. |
| STATUS_NOT_SUPPORTED | Não há suporte para operações de leitura de descarregamento nesse volume. |
| STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED | Não há suporte para o tipo de arquivo solicitado. Não há suporte para operações de descarregamento nesses tipos de arquivo: um arquivo transacionado (TxF); Arquivos que não são de usuário; Arquivos compactados; Arquivos criptografados; Arquivos esparsos; Arquivos NTFS Metatdata. |
| STATUS_TOO_LATE | Uma operação de gravação foi tentada para um volume depois que ela foi desmontada. |
| STATUS_FILE_DELETED | O fluxo de dados desse 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 | Não é possível conceder acesso de leitura ou gravação devido ao estado de bloqueio de arquivo atual. |
| STATUS_END_OF_FILE | O membro FileOffset doFSCTL_OFFLOAD_WRITE_INPUT começa após o EOF (fim do arquivo). |
| 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 | Recursos insuficientes estão disponíveis para concluir a solicitação. |
| 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 somente para arquivos normais. Consulte a descrição de STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED para obter uma lista de tipos de arquivo sem suporte.
Quando STATUS_INVALID_PARAMETER é retornado, o erro pode ser um dos seguintes parâmetros inválidos:
- O tamanho do arquivo é menor que PAGE_SIZE.
-
InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_OUTPUT). - Um ou mais desses membros deFSCTL_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 é do tamanho da estruturaFSCTL_OFFLOAD_WRITE_INPUT . FileOffset> VDL (Comprimento de Dados Válido) para o arquivo. FileOffset + CopyLength>MAXULONGLONG.
Requirements
| Tipo de requisito | Requirement |
|---|---|
| Cliente mínimo com suporte | Windows 8 |
| Header | Ntifs.h (inclua Ntifs.h ou Fltkernel.h) |