Partilhar via


estrutura MARK_HANDLE_INFO (winioctl.h)

Contém informações que são usadas para marcar um arquivo ou diretório especificado e seu número de sequência de atualização (USN) altera o registro de diário com dados sobre alterações. Ele é usado pelo código de controle FSCTL_MARK_HANDLE.

Sintaxe

typedef struct _MARK_HANDLE_INFO {
  union {
    DWORD UsnSourceInfo;
    DWORD CopyNumber;
  } DUMMYUNIONNAME;
  DWORD  UsnSourceInfo;
  HANDLE VolumeHandle;
  DWORD  HandleInfo;
} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;

Membros

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

O tipo de alterações que está sendo feita.

A operação não modifica o arquivo ou o diretório externamente do ponto de vista do aplicativo que o criou.

Quando um thread grava um novo registro USN, os sinalizadores de informações de origem no registro anterior só estarão presentes se o thread também definir esses sinalizadores. Portanto, a estrutura de informações de origem permite que os aplicativos filtrem registros USN definidos apenas por uma fonte conhecida, como um filtro antivírus.

Os valores a seguir são definidos.

Valor Significado
USN_SOURCE_DATA_MANAGEMENT
0x00000001
A operação fornece informações sobre uma alteração no arquivo ou diretório feito pelo sistema operacional.

Um uso típico é quando o Armazenamento Remoto move dados do armazenamento externo para o local. O Armazenamento Remoto é o software de gerenciamento de armazenamento hierárquico. Esse movimento geralmente, no mínimo, adiciona o sinalizador USN_REASON_DATA_OVERWRITE a um registro USN. No entanto, os dados não foram alterados do ponto de vista do usuário. Observando USN_SOURCE_DATA_MANAGEMENT no SourceInfo membro da estrutura de USN_RECORD que contém o registro, você pode determinar que, embora uma operação de gravação seja executada no item, os dados não foram alterados.

USN_SOURCE_AUXILIARY_DATA
0x00000002
A operação adiciona um fluxo de dados privado a um arquivo ou diretório.

Um exemplo pode ser um detector de vírus adicionando informações de soma de verificação. À medida que o detector de vírus modifica o item, o sistema gera registros USN. USN_SOURCE_AUXILIARY_DATA indica que as modificações não alteraram os dados do aplicativo.

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
A operação cria ou atualiza o conteúdo de um arquivo replicado.

Por exemplo, o serviço de replicação de arquivo define esse sinalizador quando cria ou atualiza um arquivo em um diretório replicado.

USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
A replicação está sendo executada em sistemas cliente da nuvem ou dos servidores.

VolumeHandle

O identificador de volume para o volume em que o arquivo ou diretório reside. Para obter mais informações sobre como obter um identificador de volume, consulte a seção Comentários.

Esse identificador é necessário para verificar os privilégios dessa operação.

O chamador deve ter o privilégio SE_MANAGE_VOLUME_NAME. Para obter mais informações, consulteprivilégios de .

HandleInfo

O sinalizador que especifica informações adicionais sobre o arquivo ou diretório identificados pelo valor do identificador no membro VolumeHandle.

Valor Significado
MARK_HANDLE_PROTECT_CLUSTERS
0x00000001
O arquivo é marcado como não pode ser desfragmentado até que o identificador seja fechado.

Depois que um identificador marcado MARK_HANDLE_PROTECT_CLUSTERS for fechado, não haverá garantia de que os clusters do arquivo não serão movidos.

MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
O arquivo é marcado como não pode ser desfragmentado até que o identificador seja fechado.

Windows Server 2003: Esse sinalizador não tem suporte até o Windows Server 2003 com SP1.

Windows XP: não há suporte para Esse sinalizador.

MARK_HANDLE_NOT_TXF_SYSTEM_LOG
0x00000008
O arquivo é marcado como não pode ser desfragmentado até que o identificador seja fechado.

Windows Server 2003: Esse sinalizador não tem suporte até o Windows Server 2003 com SP1.

Windows XP: não há suporte para Esse sinalizador.

MARK_HANDLE_REALTIME
0x00000020
O arquivo é marcado para comportamento de leitura em tempo real, independentemente do tipo de arquivo real. Os arquivos marcados com esse sinalizador devem ser abertos para de E/S sem cofre.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse sinalizador não tem suporte.

MARK_HANDLE_NOT_REALTIME
0x00000040
O arquivo marcado anteriormente para comportamento de leitura em tempo real usando o sinalizador MARK_HANDLE_REALTIME pode ser não marcado usando esse sinalizador, removendo o comportamento em tempo real. Os arquivos marcados com esse sinalizador devem ser abertos para de E/S sem cofre.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse sinalizador não tem suporte.

MARK_HANDLE_READ_COPY
0x00000080
Indica que o número de cópia especificado no CopyNumber membro deve ser usado para leituras. Os arquivos marcados com esse sinalizador devem ser abertos para de E/S sem cofre.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse sinalizador não terá suporte até o Windows 8 e o Windows Server 2012.

MARK_HANDLE_NOT_READ_COPY
0x00000100
O arquivo marcado anteriormente para comportamento de cópia de leitura usando o sinalizador MARK_HANDLE_READ_COPY pode ser não marcado usando esse sinalizador, removendo o comportamento de leitura-cópia. Os arquivos marcados com esse sinalizador devem ser abertos para de E/S sem cofre.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse sinalizador não terá suporte até o Windows 8 e o Windows Server 2012.

MARK_HANDLE_RETURN_PURGE_FAILURE
0x00000400
Ao intercalar memória mapeada/E/S armazenada em cache com E/S não armazenada em cache, o sistema tenta, quando uma io não armazenada em cache, limpar mapeamentos de memória para o intervalo da E/S não armazenada em cache. Se essas limpezas falharem, o sistema normalmente não retornará a falha ao chamador, o que pode levar ao estado corrompido (e é por isso que a documentação diz para não fazer isso). Esse sinalizador informa ao sistema para retornar falhas de limpeza para o identificador especificado para que o aplicativo possa lidar melhor com essa situação

Esse sinalizador não tem suporte até o Windows 8 e o Windows Server 2012.

MARK_HANDLE_DISABLE_FILE_METADATA_OPTIMIZATION
0x00001000
Um arquivo altamente fragmentado no NTFS usa vários registros MFT para descrever todas as extensões de um arquivo. Essa lista de registros MFT filho (também conhecidos como registros FRS) é controlada por uma estrutura conhecida como uma lista de atributos. Uma lista de atributos é limitada a 128 K de tamanho. Quando o tamanho de uma lista de atributos atingir um determinado limite, o NTFS disparará uma compactação em segundo plano nas extensões para que o número mínimo de registros FRS filho seja usado. Esse sinalizador desabilita esse recurso de compactação FRS para o arquivo especificado.

Esse sinalizador não tem suporte até o Windows 10.

MARK_HANDLE_ENABLE_USN_SOURCE_ON_PAGING_IO
0x00002000
Informa ao NTFS para definir o valor fornecido de UsnSourceInfo em gravações de paginação no UsN Journal. Tradicionalmente, isso não era feito em gravações de paginação, pois o sistema não sabia qual thread fazia as alterações determinadas. Essa é uma substituição. Isso só funcionará se o FileObject que o gerenciador de memória está usando tiver esse estado associado a ele.

Esse sinalizador não tem suporte até o Windows 10.

MARK_HANDLE_SKIP_COHERENCY_SYNC_DISALLOW_WRITES
0x00004000
Definir esse sinalizador informa ao sistema que as gravações não são permitidas neste arquivo. Se um aplicativo tentar abrir o arquivo para acesso de gravação, a operação falhará com STATUS_ACCESS_DENIED. Se uma gravação for vista, a operação falhará com STATUS_MARKED_TO_DISALLOW_WRITES

Esse sinalizador não tem suporte até o Windows 10.

Observações

Para recuperar um identificador para um volume, chame CreateFile com o parâmetro lpFileName definido como uma cadeia de caracteres no seguinte formulário:

"\\.\X:"

Na cadeia de caracteres anterior, X é a letra que identifica a unidade na qual o volume aparece.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
cabeçalho winioctl.h (inclua Windows.h)

Consulte também

FSCTL_MARK_HANDLE

USN_RECORD