小甲鱼 发表于 2016-8-5 02:19:04

DeleteFileTransacted

注:本文档由 谁动了我的豆包 翻译,小甲鱼校对。

原文链接 -> 传送门

函数功能:

【微软强烈建议开发者使用可替代的方法去实现你的应用的需求。很多情况下,TxF 的开发可以通过更简单并且更快捷的可用的技术实现。而且,TxF 在将来微软的 Windows 系统的版本中可能将不可用。更多信息,和替代 TxF,请参照 Alternatives to using Transactional NTFS。】

DeleteFileTransacted 函数用于删除一个现存文件(作为事务处理操作)。


API 函数原型:

注释:_In_ 说明该参数是输入的。
BOOL WINAPI DeleteFileTransacted(
_In_ LPCTSTR lpFileName,
_In_ HANDLEhTransaction
);

参数解析:


参数 含义
lpFileName1. 该参数表示将被删除的文件名字

2. 在该函数的 ANSI 版本中,名字长度仅限于 MAX_PATH 个字符。可以调用该函数的 Unicode 版本将该限制扩展到 32767 宽度的字符,并在路径上预先添加 "\\?\"。更多信息,请参照 Naming a File

3. 该文件必须位于本地电脑;否则,该函数将运行失败并且最终的错误代码被置为 ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE
hTransaction1. 该参数表示一个事务处理的句柄

2. 该句柄由 CreateTransaction 函数返回


返回值:

1. 如果函数运行成功,则返回值为非 0;

2. 如果函数运行失败,则返回值为 0。

想要调用更多的错误信息,请调用 GetLastError 函数。


备注:

1. 如果一个应用程序试图删除一个不存在的文件,那么 DeleteFileTransacted 函数将以带有 ERROR_FILE_NOT_FOUND 的方式运行失败。如果该文件是一个只读文件,那么该函数将以带有 ERROR_ACCESS_DENIED 的方式运行失败。

2. 下面的列表列出了删除、移除或关闭文件的一些技巧:


[*]想要删除一个只读文件,首先你必须移除只读属性
[*]想要删除或者重命名一个文件,您必须拥有删除该文件的权限,或在父目录中的删除子权限的任何一个
[*]想要递归删除目录中的文件,可使用 SHFileOperation 函数
[*]想要移除一个空目录,可使用 RemoveDirectoryTransacte 函数
[*]想要关闭一个打开的文件,可以使用 CloseHandle 函数

3. 如果你建立了一个目录,该目录带有除了删除和删除子文件的全部访问权限,并且新文件的访问控制列表是继承于该目录,那么你能创建一个文件,并且不能够删除它。但是,你能够创建一个文件,并且获得你在创建一个新文件时返回给你的句柄上所需要全部访问权限。

4. 如果你在创建一个文件时需要删除权限,你能使用该句柄删除或者重命名该文件,但是不要使用任何其它的句柄。更多信息,请参照 File Security and Access Rights。

5. 如果一个应用试图删除一个为了正常的I/O有其它句柄打开或者是存储映像的文件DeleteFileTransacted函数会运行失败(当其它的句柄被打开时,FILE_SHARE_DELETE必须被指明)。

6. DeleteFileTransacted 函数标记一个在关闭时被删除的文件。如果事务依然活跃,当该文件的最后的事务处理书写器句柄被关闭时该文件被删除。如果一个文件有删除标记,并且一个事务处理书写器句柄在该事务完成之后依然打开,那么该文件不会被删除。

7. 符号链接:如果路径指向一个符号链接,则符号连接被删除,而不是目标被删除。想要删除目标,你必须调用 CreateFile 函数并且指定 FILE_FLAG_DELETE_ON_CLOSE。

8. 在 Windows 8 和 Windows Server 2012 中,该函数由以下技术支持:


技术 是否被支持
Server Message Block (SMB) 3.0 protocol 否
SMB 3.0 Transparent Failover (TFO) 否
SMB 3.0 with Scale-out File Shares (SO) 否
Cluster Shared Volume File System (CsvFS) 否
Resilient File System (ReFS) 否

SMB 3.0 不支持TxF。

需求:


Minimum supported client Windows Vista [桌面应用程序]
Minimum supported server Windows 2008 服务器版 [桌面应用程序]
Minimum supported phone Windows Phone 8
HeaderWinBase.h (包含于 Windows.h)
LibraryKernel32.lib
DLLKernel32.dll
Unicode and ANSI namesDeleteFileTransactedW (Unicode) 和 DeleteFileTransactedA (ANSI)


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

页: [1]
查看完整版本: DeleteFileTransacted