Função DeleteFileTransactedW (winbase.h)
[A Microsoft recomenda fortemente que os desenvolvedores utilizem meios alternativos para alcançar as necessidades do aplicativo. Muitos cenários para os quais o TxF foi desenvolvido podem ser obtidos por meio de técnicas mais simples e prontamente disponíveis. Além disso, o TxF pode não estar disponível em versões futuras do Microsoft Windows. Para obter mais informações e alternativas ao TxF, consulte Alternativas para usar o NTFS transacional.]
Exclui um arquivo existente como uma operação transacionada.
Sintaxe
BOOL DeleteFileTransactedW(
[in] LPCWSTR lpFileName,
[in] HANDLE hTransaction
);
Parâmetros
[in] lpFileName
O nome do arquivo a ser excluído.
O arquivo deve residir no computador local; caso contrário, a função falhará e o último código de erro será definido como ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.
Por padrão, o nome é limitado a MAX_PATH caracteres. Para estender esse limite para 32.767 caracteres de largura, acrescente "\\?\" ao caminho. Para obter mais informações, consulte Arquivos de Nomenclatura, Caminhos e Namespaces.
Ponta
A partir do Windows 10, versão 1607, você pode optar por remover a limitação de MAX_PATH sem acrescentar "\\?\". Consulte a seção "Limitação máxima do comprimento do caminho" de arquivos de nomenclatura, caminhos e namespaces para obter detalhes.
[in] hTransaction
Um identificador para a transação. Esse identificador é retornado pela função
Valor de retorno
Se a função for bem-sucedida, o valor retornado não será zero.
Se a função falhar, o valor retornado será 0 (zero). Para obter informações de erro estendidas, chame GetLastError.
Observações
Se um aplicativo tentar excluir um arquivo que não existe, a função DeleteFileTransacted falhará com ERROR_FILE_NOT_FOUND. Se o arquivo for um arquivo somente leitura, a função falhará com ERROR_ACCESS_DENIED.
A lista a seguir identifica algumas dicas para excluir, remover ou fechar arquivos:
- Para excluir um arquivo somente leitura, primeiro você deve remover o atributo somente leitura.
- Para excluir ou renomear um arquivo, você deve ter permissão de exclusão no arquivo ou excluir a permissão filho no diretório pai.
- Para excluir recursivamente os arquivos em um diretório, use a função SHFileOperation.
- Para remover um diretório vazio, use a função RemoveDirectoryTransacted.
- Para fechar um arquivo aberto, use a função CloseHandle.
Se você solicitar permissão de exclusão no momento em que criar um arquivo, poderá excluir ou renomear o arquivo com esse identificador, mas não com qualquer outro identificador. Para obter mais informações, consulte de Segurança de Arquivos e Direitos de Acesso.
A função DeleteFileTransacted falhará se um aplicativo tentar excluir um arquivo que tenha outros identificadores abertos para E/S normal ou como um arquivo mapeado por memória (FILE_SHARE_DELETE deve ter sido especificado quando outros identificadores foram abertos).
A função DeleteFileTransacted marca um arquivo para exclusão no fechamento. O arquivo é excluído depois que o último identificador de gravador transacionado para o arquivo é fechado, desde que a transação ainda esteja ativa. Se um arquivo tiver sido marcado para exclusão e um identificador de gravador transacionado ainda estiver aberto após a conclusão da transação, o arquivo não será excluído.
links simbólicos: Se o caminho apontar para um link simbólico, o link simbólico será excluído, não o destino. Para excluir um destino, você deve chamar CreateFile e especificar FILE_FLAG_DELETE_ON_CLOSE.
No Windows 8 e no Windows Server 2012, essa função é 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) | Não |
ReFS (Sistema de Arquivos Resiliente) | Não |
O SMB 3.0 não dá suporte ao TxF.
Nota
O cabeçalho winbase.h define DeleteFileTransacted como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows Vista [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2008 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | winbase.h (inclua Windows.h) |
biblioteca | Kernel32.lib |
de DLL |
Kernel32.dll |