Compartilhar via


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 a primitivas de leitura de descarregamento.

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 de 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 de 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 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_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 que não são de usuário; 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_RESOURCES 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 .

Observações

A leitura de descarregamento está disponível somente 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 de 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.
    • O tamanho não é do tamanho da estrutura FSCTL_OFFLOAD_READ_INPUT .
    • FileOffset + CopyLength>MAXULONGLONG.

Requirements

Tipo de requisito Requirement
Cliente mínimo com suporte Windows 8
Header Ntifs.h (inclua Ntifs.h ou Fltkernel.h)

Consulte também

FltFsControlFile

ZwFsControlFile

FSCTL_OFFLOAD_READ_INPUT

FSCTL_OFFLOAD_READ_OUTPUT