GetFullPathNameTransactedA 函数 (winbase.h)

[Microsoft强烈建议开发人员利用替代方法来实现应用程序的需求。 TxF 开发的许多方案可以通过更简单、更易用的技术来实现。 此外,TxF 在 Microsoft Windows 的未来版本中可能不可用。 有关详细信息,以及 TxF 的替代项,请参阅 使用事务 NTFS的替代项。]

检索指定文件的完整路径和文件名作为事务处理操作。

若要在没有事务的情况下执行此操作,请使用 GetFullPathName 函数。

有关文件和路径名称的详细信息,请参阅 文件名、路径和命名空间

语法

DWORD GetFullPathNameTransactedA(
  [in]  LPCSTR lpFileName,
  [in]  DWORD  nBufferLength,
  [out] LPSTR  lpBuffer,
  [out] LPSTR  *lpFilePart,
  [in]  HANDLE hTransaction
);

参数

[in] lpFileName

文件的名称。

此字符串可以使用短(8.3 格式)或长文件名。 此字符串可以是共享或卷名称。

该文件必须驻留在本地计算机上;否则,函数将失败,最后一个错误代码设置为 ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE

[in] nBufferLength

要接收驱动器和路径的以 null 结尾的字符串的缓冲区的大小,TCHAR

[out] lpBuffer

指向接收驱动器和路径的 null 终止字符串的缓冲区的指针。

[out] lpFilePart

指向接收路径中最终文件名组件的地址(lpBuffer)的缓冲区的指针。 如果不需要接收此信息,请指定 NULL

如果 lpBuffer 指向目录而不是文件,lpFilePart 接收 0(零)。

[in] hTransaction

事务的句柄。 此句柄由 CreateTransaction 函数返回。

返回值

如果函数成功,则返回值为复制到 lpBuffer的字符串的长度(TCHAr,不包括终止 null 字符)。

如果 lpBuffer 缓冲区太小而无法包含路径,则返回值为大小(TCHAR)是保存路径和终止 null 字符所需的缓冲区的大小。

如果函数因任何其他原因而失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError

言论

GetFullPathNameTransacted 将当前驱动器和目录的名称与指定的文件名合并,以确定指定文件的完整路径和文件名。 它还计算完整路径和文件名的文件名部分的地址。 此函数不验证生成的路径和文件名是否有效,或者它们是否在关联的卷上看到现有文件。

共享和卷名称是 lpFileName的有效输入。 例如,如果 test-2 是远程计算机,则以下列表标识返回的路径和文件名:是网络映射驱动器:

  • 如果指定“\\test-2\q$\lh”,则返回的路径为“\\test-2\q$\lh”
  • 如果指定“\\?\UNC\test-2\q$\lh”,则返回的路径为“\\?\UNC\test-2\q$\lh”
  • 如果指定“U:”,则返回的路径为“U:\”
GetFullPathNameTransacted 不转换指定的文件名,lpFileName。 如果指定的文件名存在,则可以分别使用 GetLongPathNameTransactedGetLongPathNameGetShortPathName 分别转换为长路径名称或短路径名称。

如果返回值大于 nBufferLength中指定的值,则可以使用足够大的缓冲区再次调用函数,以容纳路径。 有关此示例以及使用零长度缓冲区进行动态分配的示例,请参阅“示例代码”部分。

注意 虽然本例中的返回值是包含终止 null 字符的长度,但成功返回值不包括计数中的终止 null 字符。
 
在 Windows 8 和 Windows Server 2012 中,以下技术支持此函数。
科技 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CsvFS)
可复原文件系统 (ReFS)
 

SMB 3.0 不支持 TxF。

注意

winbase.h 标头将 GetFullPathNameTransacted 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows Vista [仅限桌面应用]
支持的最低服务器 Windows Server 2008 [仅限桌面应用]
目标平台 窗户
标头 winbase.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

文件管理功能

GetFullPathName

GetLongPathNameTransacted

GetShortPathName

GetTempPath

SearchPath

事务性 NTFS