código de controle FSCTL_OFFLOAD_READ
O código de controle FSCTL_OFFLOAD_READ inicia uma leitura de descarregamento para um bloco de dados em um sistema de armazenamento que dá suporte ao descarregamento de primitivos de leitura.
Para executar essa operação, chame FltFsControlFile ou ZwFsControlFile com os parâmetros a seguir.
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 do qual ler. Esse parâmetro é necessário e não pode ser NULL.
FileHandle [in]: somente ZwFsControlFile . O identificador de arquivo do arquivo do qual ler. Esse parâmetro é necessário e não pode ser NULL.
FsControlCode [in]: o código de controle da operação. Use FSCTL_OFFLOAD_READ para esta operação.
InputBuffer [in]: um ponteiro para uma estrutura FSCTL_OFFLOAD_READ_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_READ_INPUT).
OutputBuffer [out]: um ponteiro para uma estrutura FSCTL_OFFLOAD_READ_OUTPUT , que recebe os resultados da operação de leitura de descarregamento.
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 pode retornar um dos seguintes valores NTSTATUS.
Código | Significado |
---|---|
STATUS_INVALID_DEVICE_REQUEST | O identificador especificado não é um identificador de arquivo válido |
STATUS_INVALID_PARAMETER | Um parâmetro é inválido. Consulte Observações. |
STATUS_VOLUME_DISMOUNTED | O volume do sistema de arquivos é desmontado. |
STATUS_NOT_SUPPORTED | Não há suporte para operações de leitura de descarregamento nesse volume. |
STATUS_OFFLOAD_READ_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 não usuários; Arquivos compactados; Arquivos criptografados; Arquivos esparsos; Arquivos NTFS Metatdata. |
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 | Acesso de leitura insuficiente devido ao estado de bloqueio de arquivo atual. |
STATUS_END_OF_FILE | O membro FileOffset do FSCTL_OFFLOAD_READ_INPUT começa após o EOF (fim do arquivo). |
STATUS_DISMOUNTED_VOLUME | Uma leitura de descarregamento não pode ocorrer em um volume desmontado. |
STATUS_INSUFFICIENT_RESOUCES | Recursos insuficientes estão disponíveis para concluir a solicitação. |
STATUS_BUFFER_TOO_SMALL | OutputBufferLength é muito pequeno para OutputBuffer receber uma estrutura FSCTL_OFFLOAD_READ_OUTPUT . |
Comentários
A leitura de descarregamento está disponível apenas para arquivos normais. Consulte a descrição de STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED para obter uma lista de tipos de arquivo sem suporte.
É possível que as leituras comecem além da VDL (Comprimento de Dados Válido), mas não além do EOF.
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_INPUT)
. - Um ou mais desses membros do FSCTL_OFFLOAD_READ_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.
- Tamanho não é o tamanho da estrutura FSCTL_OFFLOAD_READ_INPUT .
- FileOffset + CopyLength>MAXULONGLONG.
Requisitos
Tipo de Requisito | Requisito |
---|---|
Cliente mínimo com suporte | Windows 8 |
parâmetro | Ntifs.h (inclua Ntifs.h ou Fltkernel.h) |