FSCTL_MARK_HANDLE IOCTL (winioctl.h)

Marca um arquivo ou diretório especificado e seu registro de diário de alterações com informações sobre alterações nesse arquivo ou diretório.

Para executar essa operação, chame a função DeviceIoControl usando os parâmetros a seguir.

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to file or directory
  FSCTL_MARK_HANDLE,            // dwIoControlCode
  (LPVOID)lpInBuffer,           // input buffer
  (DWORD)nInBufferSize,         // size of input buffer
  NULL,                         // lpOutBuffer
  0,                            // nOutBufferSize
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Comentários

Para obter as implicações de E/S sobrepostas nessa operação, consulte a seção Comentários do tópico DeviceIoControl .

FSCTL_MARK_HANDLE é a única operação de diário de alteração que opera em um arquivo ou diretório individual. Isso não afeta nada que o usuário possa fazer com o item. Em vez disso, ele adiciona informações ao arquivo ou ao diretório, fornecendo informações sobre como o sistema operacional alterou o item ou adicionando um fluxo de dados privado ao item.

Se houver alterações no arquivo ou diretório, as informações adicionadas com FSCTL_MARK_HANDLE também serão copiadas para o registro USN criado para o arquivo ou diretório. Observe que essas duas operações podem ocorrer independentemente umas das outras— por exemplo, não é necessário que um registro USN exista para poder marcar um arquivo como incapaz de ser desfragmentado e não é necessário marcar um arquivo ou diretório para atualizar o conteúdo do registro USN correspondente. Para obter detalhes sobre as informações com as quais FSCTL_MARK_HANDLE pode marcar um item (consulte MARK_HANDLE_INFO para obter mais informações).

Não é um erro usar FSCTL_MARK_HANDLE enquanto o diário de alteração do volume está sendo excluído ou está inativo. As informações apropriadas são aplicadas ao arquivo ou diretório, independentemente do estado do diário de alterações, desde que o diário de alteração exista.

Observe que os carimbos de data/hora podem não ser atualizados corretamente para um arquivo remoto. Para garantir resultados consistentes, use E/S sem cofres.

O volume deve ser NTFS.

Em Windows 8 e Windows Server 2012, esse código é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 No
TFO (Failover transparente) do SMB 3.0 No
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) No
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Sim

CsvFs sempre emite USN_SOURCE_REPLICATION_MANAGEMENT e MARK_HANDLE_PROTECT_CLUSTERS para os arquivos qualificados para E/S direta.

Requisitos

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

Confira também