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)

Confira também

FSCTL_QUERY_FILE_LAYOUT

QUERY_FILE_LAYOUT_OUTPUT