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) |