FSCTL_QUERY_FILE_LAYOUT código de controle

O código de controle FSCTL_QUERY_FILE_LAYOUT recupera informações de layout de arquivo para um volume do sistema de arquivos. Os resultados dessa solicitação são uma coleção de entradas de informações de layout de arquivo. O tipo de entradas retornadas é controlado pela configuração de sinalizadores de inclusão na estrutura QUERY_FILE_LAYOUT_INPUT . Opcionalmente, você pode filtrar os resultados fornecendo um conjunto de extensões de arquivo para restringir a seleção de informações de layout.

Para executar essa operação, chame FltFsControlFile ou ZwFsControlFile com os parâmetros a seguir.

Parâmetros

  • FileObject [in]: somente FltFsControlFile . Um ponteiro de objeto de arquivo para o volume do sistema de arquivos. Esse parâmetro é necessário e não pode ser NULL.

  • FileHandle [in]: somente ZwFsControlFile . Um identificador de arquivo para o volume do sistema de arquivos. Esse parâmetro é necessário e não pode ser NULL.

  • FsControlCode [in]: o código de controle da operação. Use o código de controle FSCTL_QUERY_FILE_LAYOUT para esta operação.

  • InputBuffer [in]: um ponteiro para uma estrutura de QUERY_FILE_LAYOUT_INPUT alocada pelo chamador. Essa estrutura contém as opções de seleção. As extensões de arquivo opcionais são incluídas após QUERY_FILE_LAYOUT_INPUT.

  • InputBufferLength [in]: o tamanho, em bytes, do buffer apontado pelo parâmetro InputBuffer . O tamanho de InputBuffer deve ser pelo menos sizeof(QUERY_FILE_LAYOUT_INPUT) + (sizeof(Filter) * (NumberOfPairs - 1)), quando NumberOfPairs> 0. Caso contrário, defina InputBufferLength = sizeof(QUERY_FILE_LAYOUT_INPUT).

  • OutputBuffer [out]: um ponteiro para uma estrutura de QUERY_FILE_LAYOUT_OUTPUT alocada pelo chamador. Esse é o cabeçalho para as entradas de layout de arquivo que seguem neste buffer.

  • OutputBufferLength [out]: o tamanho, em bytes, do buffer apontado pelo parâmetro OutputBuffer . O tamanho do OutputBuffer deve ser grande o suficiente para conter uma QUERY_FILE_LAYOUT_OUTPUT juntamente com o layout do arquivo e as estruturas de layout de fluxo retornadas.

Bloco de status

FltFsControlFile ou ZwFsControlFile retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um destes valores:

Código Significado
STATUS_INVALID_PARAMETER O volume do sistema de arquivos não é um volume de usuário aberto ou um valor de comprimento de buffer está incorreto ou uma opção de consulta inválida é definida.
STATUS_ACCESS_DENIED O chamador não pode acessar o volume do sistema de arquivos.
STATUS_INVALID_USER_BUFFER O ponteiro para InputBuffer ou OutputBuffer não está alinhado corretamente.
STATUS_BUFFER_TOO_SMALL O valor em OutputBufferLength indica que OutputBuffer é muito pequeno para conter pelo menos uma entrada de layout.
STATUS_END_OF_FILE O ponteiro para InputBuffer ou OutputBuffer não está alinhado corretamente.

Comentários

Para recuperar todas as entradas de layout de um volume, a solicitação FSCTL_QUERY_FILE_LAYOUT é emitida várias vezes até que STATUS_END_OF_FILE seja retornado. Enquanto STATUS_SUCCESS é retornado, um chamador pode continuar a enviar uma solicitação FSCTL_QUERY_FILE_LAYOUT para as entradas de layout restantes.

A enumeração de entradas de layout pode ser reiniciada a qualquer momento, incluindo o sinalizador QUERY_FILE_LAYOUT_RESTART no membro Flags do QUERY_FILE_LAYOUT_INPUT. Além disso, depois que FSCTL_QUERY_FILE_LAYOUT retornar STATUS_END_OF_FILE, é necessário incluir o sinalizador QUERY_FILE_LAYOUT_RESTART na próxima solicitação de FSCTL_QUERY_FILE_LAYOUT para iniciar outra enumeração de entrada de layout.

Esse código não tem suporte do ReFS.

Requisitos

Tipo de Requisito Requisito
Cliente mínimo com suporte Windows 8.1 Update
parâmetro Ntifs.h (inclua Ntifs.h ou Fltkernel.h)

Confira também

QUERY_FILE_LAYOUT_INPUT

QUERY_FILE_LAYOUT_OUTPUT

FltFsControlFile

ZwFsControlFile