estrutura QUERY_FILE_LAYOUT_INPUT (ntifs.h)
A estrutura QUERY_FILE_LAYOUT_INPUT seleciona quais entradas de layout de arquivo são retornadas de uma solicitação de FSCTL_QUERY_FILE_LAYOUT .
Sintaxe
typedef struct _QUERY_FILE_LAYOUT_INPUT {
union {
ULONG FilterEntryCount;
ULONG NumberOfPairs;
} DUMMYUNIONNAME;
ULONG Flags;
QUERY_FILE_LAYOUT_FILTER_TYPE FilterType;
ULONG Reserved;
union {
CLUSTER_RANGE ClusterRanges[1];
FILE_REFERENCE_RANGE FileReferenceRanges[1];
STORAGE_RESERVE_ID StorageReserveIds[1];
} Filter;
} QUERY_FILE_LAYOUT_INPUT, *PQUERY_FILE_LAYOUT_INPUT;
Membros
DUMMYUNIONNAME
DUMMYUNIONNAME.FilterEntryCount
O número de entradas de filtro na matriz De filtro .
DUMMYUNIONNAME.NumberOfPairs
O nome original do campo quando havia apenas um tipo de filtro. A união é simplesmente para manter a compatibilidade de código.
Flags
Indica quais entradas de layout de arquivo estão incluídas nos resultados da consulta. Os sinalizadores são definidos como uma combinação válida dos valores a seguir.
Valor | Significado |
---|---|
QUERY_FILE_LAYOUT_INCLUDE_EXTENTS | Stream entradas de extensão são incluídas nos resultados da consulta. Para usar esse sinalizador, o sinalizador QUERY_FILE_LAYOUT_INCLUDE_STREAMS também deve ser definido. |
QUERY_FILE_LAYOUT_INCLUDE_EXTRA_INFO | Entradas de nome de informações de arquivo extras são incluídas nos resultados da consulta. |
QUERY_FILE_LAYOUT_INCLUDE_NAMES | As entradas de nome de arquivo são incluídas nos resultados da consulta. |
QUERY_FILE_LAYOUT_INCLUDE_STREAMS | As entradas de fluxo de arquivos são incluídas nos resultados da consulta. |
QUERY_FILE_LAYOUT_RESTART | Redefina o iterador de entrada de layout de arquivo para o início do volume. |
QUERY_FILE_LAYOUT_INCLUDE_STREAMS_WITH_NO_CLUSTERS_ALLOCATED | Inclua entradas para fluxos residentes e atributos não alocados. Para usar esse sinalizador, o sinalizador QUERY_FILE_LAYOUT_INCLUDE_STREAMS também deve ser definido. |
FilterType
Especifica um método de filtragem para restringir as informações de layout retornadas. Pode ser um dos seguintes valores.
Valor | Significado |
---|---|
QUERY_FILE_LAYOUT_FILTER_TYPE_NONE | Não execute nenhuma filtragem e retorne todas as informações. Ao usar esse tipo, NumberOfPairs deve ser 0. |
QUERY_FILE_LAYOUT_FILTER_TYPE_CLUSTERS | Restrinja as informações de layout de filtro aos intervalos em Filter.ClusterRanges. |
QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID | Restrinja as informações de layout do filtro aos intervalos em Filter.FileReferenceRanges. |
Reserved
Reservado para uso do sistema.
Filter
Uma matriz de estruturas de filtro usadas para selecionar informações de layout específicas. Eles contêm intervalos de referência de cluster ou arquivo. O comprimento da matriz é especificado pelo membro NumberOfPairs . Cada intervalo deve ser distinto e não pode se sobrepor a nenhum outro intervalo.
Esse membro será ignorado se QUERY_FILE_LAYOUT_FILTER_TYPE_NONE for especificado em FilterType.
Filter.ClusterRanges[1]
Especifica um conjunto de intervalos de cluster para filtrar informações de layout. A estrutura de intervalo tem o seguinte formato.
typedef struct _CLUSTER_RANGE {
LARGE_INTEGER StartingCluster;
LARGE_INTEGER ClusterCount;
} CLUSTER_RANGE, *PCLUSTER_RANGE;
Filter.FileReferenceRanges[1]
Especifica um conjunto de intervalos de referência de arquivo para filtrar informações de layout. Disponível a partir Windows 10 versão 1809. A estrutura de intervalo tem o seguinte formato.
typedef struct _FILE_REFERENCE_RANGE {
LARGE_INTEGER StartingFileReference;
LARGE_INTEGER EndingReferenceNumber;
} FILE_REFERENCE_RANGE, *PFILE_REFERENCE_RANGE;
Filter.StorageReserveIds[1]
Especifica um conjunto de IDs de reserva de armazenamento para filtrar informações de layout. A enumeração associada tem o seguinte formato.
typedef enum _STORAGE_RESERVE_ID {
StorageReserveIdNone = 0,
StorageReserveIdHard,
StorageReserveIdSoft,
StorageReserveIdUpdateScratch,
StorageReserveIdMax
} STORAGE_RESERVE_ID, *PSTORAGE_RESERVE_ID;
Comentários
O sinalizador QUERY_FILE_LAYOUT_RESTART é definido na primeira solicitação de FSCTL_QUERY_FILE_LAYOUT . Se os intervalos de filtro forem incluídos na solicitação, eles serão armazenados em cache quando QUERY_FILE_LAYOUT_RESTART estiver definido. Outras solicitações retornarão entradas de arquivo de layout até o final do volume ou até que os intervalos de filtro sejam esgotados.
Se QUERY_FILE_LAYOUT_RESTART for definido novamente para o mesmo volume, a posição do layout do arquivo será redefinida para o início do volume. Além disso, os intervalos de filtro são armazenados em cache novamente e sua ordem de avaliação é redefinida para o primeiro intervalo.
As entradas de layout de arquivo são retornadas no buffer de saída após uma estrutura QUERY_FILE_LAYOUT_OUTPUT .
Quando FilterType é QUERY_FILE_LAYOUT_FILTER_TYPE_CLUSTERS, o membro ClusterRanges da união Filter é usado para filtragem de intervalo. Caso contrário, se FilterType for QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID, o membro FileReferenceRanges será usado para filtragem de intervalo.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 |
Cabeçalho | ntifs.h (inclua Ntifs.h) |