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