FSCTL_DELETE_USN_JOURNAL IOCTL (winioctl.h)
Exclui o diário de alteração usn (número de sequência de atualização) em um volume ou aguarda a notificação de exclusão de diário de alteração.
C++ |
---|
BOOL WINAPI DeviceIoControl( (HANDLE) hDevice, // handle to volume FSCTL_DELETE_USN_JOURNAL, // dwIoControlCode(LPVOID) lpInBuffer, // input buffer (DWORD) nInBufferSize, // size of input buffer NULL, // lpOutBuffer0, // nOutBufferSize(LPDWORD) lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure |
Observações
Para obter as implicações da E/S sobreposta nesta operação, consulte a seção Comentários do tópico DeviceIoControl.
Você pode usar FSCTL_DELETE_USN_JOURNAL para excluir um diário de alterações. O sistema de arquivos NTFS inicia uma operação de exclusão e retorna imediatamente ao processo de chamada, a menos que o sinalizador de USN_DELETE_FLAG_NOTIFY seja definido no DeleteFlags membro do DELETE_USN_JOURNAL_DATA.
Se os sinalizadores USN_DELETE_FLAG_NOTIFY e USN_DELETE_FLAG_DELETE estiverem definidos, uma chamada para FSCTL_DELETE_USN_JOURNAL iniciará o processo de exclusão. Em seguida, a chamada bloqueia o thread de chamada e aguarda a exclusão (em uma chamada síncrona ou não sobreposta) ou configura a notificação de evento usando uma porta de conclusão de E/S ou outro mecanismo e retorna (em uma chamada assíncrona ou sobreposta).
Você também pode usar FSCTL_DELETE_USN_JOURNAL para receber a notificação de que uma exclusão de diário de alteração está concluída, definindo apenas USN_DELETE_FLAG_NOTIFY. Se você fizer isso, a operação FSCTL_DELETE_USN_JOURNAL aguardará até que a exclusão seja concluída antes de retornar (em uma chamada síncrona ou não sobreposta) ou configurará a notificação de evento usando uma porta de conclusão de E/S ou outro mecanismo (em uma chamada assíncrona ou sobreposta).
A exclusão na qual um aplicativo recebe notificação pode ter sido iniciada pelo processo atual ou em algum outro processo. Por exemplo, quando um aplicativo é iniciado, ele pode usar FSCTL_DELETE_USN_JOURNAL para determinar se uma exclusão iniciada por algum outro processo está em andamento e, se estiver, saia.
A exclusão completa de um diário de alterações requer uma verificação do volume em que reside o diário de alterações, o que pode levar muito tempo em um volume com muitos arquivos. A operação continua a ser concluída mesmo em reinicializações do sistema. As tentativas de criar, modificar, excluir ou consultar o diário de alterações enquanto a exclusão estiver em andamento falham e retornam o código de erro ERROR_JOURNAL_DELETE_IN_PROGRESS.
A operação FSCTL_DELETE_USN_JOURNAL tem um custo de desempenho significativo, portanto, deve ser usada com moderação. Um administrador deve excluir um diário quando o valor usn atual se aproxima do valor máximo possível de USN.
Para obter mais informações, consulte Criando, modificando e excluindo um diário de alteraçõ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. O volume deve ser NTFS.
No Windows 8 e no Windows Server 2012, esse código é compatível com as tecnologias a seguir.
Tecnologia | Suportado |
---|---|
Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 | Não |
TFO (Failover Transparente) do SMB 3.0 | Não |
SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) | Não |
Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) | Sim |
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) |