CreateFileTransactedA 函数 (winbase.h)

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

以事务处理操作的形式创建或打开文件、文件流或目录。 该函数返回可用于访问对象的句柄。

若要将此操作作为非事务操作或访问文件以外的对象(例如命名管道、物理设备、mailslots),请使用 CreateFile 函数。

有关事务的详细信息,请参阅本主题的“备注”部分。

语法

HANDLE CreateFileTransactedA(
  [in]           LPCSTR                lpFileName,
  [in]           DWORD                 dwDesiredAccess,
  [in]           DWORD                 dwShareMode,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in]           DWORD                 dwCreationDisposition,
  [in]           DWORD                 dwFlagsAndAttributes,
  [in, optional] HANDLE                hTemplateFile,
  [in]           HANDLE                hTransaction,
  [in, optional] PUSHORT               pusMiniVersion,
                 PVOID                 lpExtendedParameter
);

参数

[in] lpFileName

要创建或打开的对象的名称。

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

默认情况下,名称限制为MAX_PATH个字符。 若要将此限制扩展到 32,767 宽字符,请将“\\?\”前面追加到路径。 有关详细信息,请参阅 命名文件、路径和命名空间

提示

从 Windows 10 版本 1607 开始,你可以选择加入以删除MAX_PATH限制,而无需追加“\\?\”。 有关详细信息,请参阅 命名文件、路径和命名空间 的“最大路径长度限制”部分。

若要创建文件流,请指定文件的名称、冒号,然后指定流的名称。 有关详细信息,请参阅 文件流

[in] dwDesiredAccess

对对象的访问,可以汇总为读取、写入或两者(零)。 最常用的值是 GENERIC_READGENERIC_WRITE或两者(GENERIC_READ | GENERIC_WRITE)。 有关详细信息,请参阅 通用访问权限文件安全性和访问权限

如果此参数为零,则应用程序可以在不访问该文件或设备的情况下查询文件、目录或设备属性。 有关详细信息,请参阅本主题的“备注”部分。

不能请求与打开的句柄的打开请求中指定的共享模式冲突的访问模式。 有关详细信息,请参阅 创建和打开文件

[in] dwShareMode

对象的共享模式,可以是读取、写入、删除、所有这些或无(请参阅下表)。

如果此参数为零且 CreateFileTransacted 成功,则对象无法共享,并且无法在句柄关闭之前再次打开。 有关详细信息,请参阅本主题的“备注”部分。

不能请求与打开句柄的打开请求中指定的访问模式冲突的共享模式,因为这将导致以下共享冲突:ERROR_SHARING_VIOLATION。 有关详细信息,请参阅 创建和打开文件

若要使进程能够在另一个进程打开对象时共享对象,请使用以下一个或多个值的组合来指定他们可请求打开对象的访问模式。

注意 每个打开句柄的共享选项一直有效,直到该句柄关闭,而不考虑进程上下文。
 
价值 意义
0
0x00000000
禁用对对象的后续打开操作,以请求对该对象的任何类型的访问。
FILE_SHARE_DELETE
0x00000004
启用对对象的后续打开操作以请求删除访问权限。

否则,如果其他进程请求删除访问权限,则无法打开该对象。

如果未指定此标志,但对象已被打开以删除访问,则函数将失败。

FILE_SHARE_READ
0x00000001
启用对对象的后续打开操作以请求读取访问权限。

否则,如果进程请求读取访问权限,则其他进程无法打开该对象。

如果未指定此标志,但对象已打开进行读取访问,则函数将失败。

FILE_SHARE_WRITE
0x00000002
允许对对象执行后续打开操作以请求写入访问权限。

否则,如果进程请求写入访问权限,则其他进程无法打开该对象。

如果未指定此标志,但对象已打开进行写入访问或具有写入访问权限的文件映射,则函数将失败。

[in, optional] lpSecurityAttributes

指向 SECURITY_ATTRIBUTES 结构的指针,该结构包含可选的 安全描述符,还确定返回的句柄是否可以由子进程继承。 参数可以 NULL

如果 lpSecurityAttributes 参数 NULL,则 CreateFileTransacted 返回的句柄不能由应用程序可能创建的任何子进程继承,并且与返回的句柄关联的对象获取默认的安全描述符。

bInheritHandle 结构的成员指定是否可以继承返回的句柄。

结构的 lpSecurityDescriptor 成员指定对象的 安全描述符,但也可能 NULL

如果 lpSecurityDescriptor 成员 NULL,则会为与返回的句柄关联的对象分配一个默认的安全描述符。

CreateFileTransacted 打开现有文件时会忽略 lpSecurityDescriptor 成员,但继续使用 bInheritHandle 成员。

有关详细信息,请参阅本主题的“备注”部分。

[in] dwCreationDisposition

要对存在且不存在的文件执行的操作。

有关详细信息,请参阅本主题的“备注”部分。

此参数必须是以下值之一,不能组合这些值。

价值 意义
CREATE_ALWAYS
2
始终创建新文件。

如果指定的文件存在且可写,则函数将截断文件、函数成功,最后错误代码设置为 ERROR_ALREADY_EXISTS(183)。

如果指定的文件不存在且路径有效,则会创建一个新文件,该函数会成功,最后一个错误代码设置为零。

有关详细信息,请参阅本主题的“备注”部分。

CREATE_NEW
1
仅当该文件尚不存在时,才会创建一个新文件。

如果指定的文件存在,函数将失败,最后一个错误代码设置为 ERROR_FILE_EXISTS(80)。

如果指定的文件不存在,并且是可写位置的有效路径,则会创建一个新文件。

OPEN_ALWAYS
4
始终打开文件。

如果指定文件存在,则函数成功,最后一个错误代码设置为 ERROR_ALREADY_EXISTS(183)。

如果指定的文件不存在并且是可写位置的有效路径,该函数将创建一个文件,最后一个错误代码设置为零。

OPEN_EXISTING
3
仅当文件或设备存在时才打开该文件或设备。

如果指定的文件不存在,该函数将失败,最后一个错误代码设置为 ERROR_FILE_NOT_FOUND(2)。

有关详细信息,请参阅本主题的“备注”部分。

TRUNCATE_EXISTING
5
打开一个文件并截断它,使其大小为零字节,仅当它存在时。

如果指定的文件不存在,该函数将失败,最后一个错误代码设置为 ERROR_FILE_NOT_FOUND(2)。

调用过程必须打开文件,并将 GENERIC_WRITE 位设置为 dwDesiredAccess 参数的一部分。

[in] dwFlagsAndAttributes

文件属性和标志,FILE_ATTRIBUTE_NORMAL 是最常见的默认值。

此参数可以包含可用文件属性的任意组合(FILE_ATTRIBUTE_*)。 所有其他文件属性都替代 FILE_ATTRIBUTE_NORMAL

此参数还可以包含标志(FILE_FLAG_)的组合,用于控制缓冲行为、访问模式和其他特殊用途标志。 这些值与任何 FILE_ATTRIBUTE_ 值结合使用。

此参数还可以通过指定 SECURITY_SQOS_PRESENT 标志来包含安全服务质量(SQOS)信息。 下表中显示了与 SQOS 相关的其他标志信息,这些属性和标志表如下。

注释  

CreateFileTransacted 打开现有文件时,它通常会将文件标志与现有文件的文件属性组合在一起,并忽略作为 dwFlagsAndAttributes一部分提供的任何文件属性。 创建和打开文件中详细介绍了特殊情况。

 
以下文件属性和标志仅用于文件对象,而不适用于 CreateFileTransacted 打开的其他类型的对象(本主题的“备注”部分提供了其他信息)。 有关对文件属性的更高级访问,请参阅 SetFileAttributes。 有关所有文件属性及其值和说明的完整列表,请参阅 文件属性常量
属性 意义
FILE_ATTRIBUTE_ARCHIVE
32 (0x20)
该文件应存档。 应用程序使用此属性标记文件以供备份或删除。
FILE_ATTRIBUTE_ENCRYPTED
16384 (0x4000)
文件或目录已加密。 对于文件,这意味着文件中的所有数据都已加密。 对于目录,这意味着加密是新创建的文件和子目录的默认值。 有关详细信息,请参阅 文件加密

如果还指定了 FILE_ATTRIBUTE_SYSTEM,则此标志无效。

FILE_ATTRIBUTE_HIDDEN
2 (0x2)
文件已隐藏。 不要将其包含在普通目录列表中。
FILE_ATTRIBUTE_NORMAL
128 (0x80)
该文件没有设置其他属性。 仅当单独使用时,此属性才有效。
FILE_ATTRIBUTE_OFFLINE
4096 (0x1000)
文件的数据不会立即可用。 此属性指示文件数据在物理上移动到脱机存储。 此属性由远程存储(分层存储管理软件)使用。 应用程序不应任意更改此属性。
FILE_ATTRIBUTE_READONLY
1 (0x1)
该文件是只读的。 应用程序可以读取文件,但无法写入或删除该文件。
FILE_ATTRIBUTE_SYSTEM
4 (0x4)
该文件是操作系统的一部分或独占使用。
FILE_ATTRIBUTE_TEMPORARY
256 (0x100)
该文件用于临时存储。 如果有足够的缓存内存可用,文件系统会避免将数据写回到大容量存储,因为应用程序在关闭句柄后删除临时文件。 在这种情况下,系统可以完全避免写入数据。 否则,在句柄关闭后写入数据。
 
意义
FILE_FLAG_BACKUP_SEMANTICS
0x02000000
正在为备份或还原操作打开或创建该文件。 当进程具有 SE_BACKUP_NAMESE_RESTORE_NAME 特权时,系统可确保调用进程替代文件安全检查。 有关详细信息,请参阅 更改令牌中的特权。

必须设置此标志才能获取目录的句柄。 目录句柄可以传递给某些函数,而不是文件句柄。 有关详细信息,请参阅 目录句柄

FILE_FLAG_DELETE_ON_CLOSE
0x04000000
在关闭文件的最后一个事务处理编写器句柄后,将立即删除该文件,前提是事务仍处于活动状态。 如果文件已被标记为删除,事务处理编写器句柄在事务完成后仍处于打开状态,则不会删除该文件。

如果文件存在现有的打开句柄,则调用将失败,除非它们都以 FILE_SHARE_DELETE 共享模式打开。

文件的后续打开请求失败,除非指定了 FILE_SHARE_DELETE 共享模式。

FILE_FLAG_NO_BUFFERING
0x20000000
文件正在打开,没有系统缓存。 此标志不会影响硬盘缓存或内存映射文件。 与 FILE_FLAG_OVERLAPPED结合使用时,该标志提供最大的异步性能,因为 I/O 不依赖于内存管理器的同步操作。 但是,某些 I/O 操作需要更多时间,因为缓存中未保存数据。 此外,仍可能缓存文件元数据。 若要将元数据刷新到磁盘,请使用 FlushFileBuffers 函数。

使用使用 FILE_FLAG_NO_BUFFERING打开的文件时,应用程序必须满足某些要求:

  • 文件访问必须以卷扇区大小的整数倍数的文件内的字节偏移量开始。
  • 文件访问必须是卷扇区大小的整数倍数的字节数。 例如,如果扇区大小为 512 字节,则应用程序可以请求读取和写入 512、1024、1536 或 2048 字节,但不能请求 335、981 或 7171 个字节。
  • 读取和写入操作的缓冲区地址应保持扇区对齐,这意味着在内存中为卷扇区大小的整数倍数的地址对齐。 根据磁盘的不同,可能不会强制实施此要求。
在卷扇区大小的整数倍数上对齐缓冲区的一种方法是使用 VirtualAlloc 来分配缓冲区。 它分配在操作系统内存页大小的整数倍数的地址上对齐的内存。 由于内存页和卷扇区大小都是 2 的幂,因此,此内存也与卷扇区大小的整数倍数的地址对齐。 内存页大小为 4 或 8 KB;扇区为 512 字节(硬盘)、2048 字节(CD)或 4096 字节(硬盘),因此,卷扇区永远不能大于内存页。

应用程序可以通过调用 GetDiskFreeSpace 函数来确定卷扇区大小。

FILE_FLAG_OPEN_NO_RECALL
0x00100000
请求文件数据,但它应继续位于远程存储中。 不应将其传输回本地存储。 此标志供远程存储系统使用。
FILE_FLAG_OPEN_REPARSE_POINT
0x00200000
正常 重新分析点 处理不会发生;CreateFileTransacted 将尝试打开重新分析点。 打开文件时,将返回文件句柄,无论控制重新分析点的筛选器是否正常运行。 此标志不能与 CREATE_ALWAYS 标志一起使用。 如果文件不是重新分析点,则忽略此标志。
FILE_FLAG_OVERLAPPED
0x40000000
文件正在为异步 I/O 打开或创建。 操作完成后,OVERLAPPED 结构中指定的事件将设置为信号状态。 处理返回 ERROR_IO_PENDING花费大量时间的操作。

如果指定了此标志,则文件可用于同时读取和写入操作。 系统不维护文件指针,因此必须将文件位置传递给 OVERLAPPED 结构中的读取和写入函数,或更新文件指针。

如果未指定此标志,则会序列化 I/O 操作,即使对读取和写入函数的调用指定了 重叠 结构也是如此。

FILE_FLAG_POSIX_SEMANTICS
0x01000000
该文件将根据 POSIX 规则进行访问。 这包括允许具有名称的多个文件,仅在支持该命名的文件系统时有所不同。 使用此选项时请小心,因为使用此标志创建的文件可能无法由为 MS-DOS 或 16 位 Windows 编写的应用程序访问。
FILE_FLAG_RANDOM_ACCESS
0x10000000
该文件是随机访问的。 系统可以将其用作优化文件缓存的提示。
FILE_FLAG_SESSION_AWARE
0x00800000
正在打开具有会话感知的文件或设备。 如果未指定此标志,则会话中运行的进程无法打开每个会话设备(例如使用 RemoteFX USB 重定向的设备)。 此标志对会话 0 中不具有调用方的影响。 此标志仅在 Windows 的服务器版本上受支持。

Windows Server 2008 R2 和 Windows Server 2008:Windows Server 2012 之前不支持此标志。

FILE_FLAG_SEQUENTIAL_SCAN
0x08000000
文件将从头到尾按顺序访问。 系统可以将其用作优化文件缓存的提示。 如果应用程序移动文件指针进行随机访问,则可能不会发生最佳缓存。 但是,仍可以保证正确的操作。

指定此标志可以提高使用顺序访问读取大型文件的应用程序的性能。 对于主要按顺序读取大型文件的应用程序,性能提升可能更为明显,但偶尔会跳过少量字节范围。

如果文件系统不支持缓存的 I/O 并 FILE_FLAG_NO_BUFFERING,则此标志无效。

FILE_FLAG_WRITE_THROUGH
0x80000000
写入操作不会经历任何中间缓存,它们将直接转到磁盘。

如果未同时指定 FILE_FLAG_NO_BUFFERING,以便系统缓存生效,则数据将写入系统缓存,但不会延迟地刷新到磁盘。

如果还指定了 FILE_FLAG_NO_BUFFERING,以便系统缓存无效,则数据会立即刷新到磁盘,而无需通过系统缓存。 操作系统还会向永久性媒体请求通过硬盘缓存进行写入。 但是,并非所有硬件都支持此写通功能。

 

dwFlagsAndAttributes 参数还可以指定安全服务质量信息。 有关详细信息,请参阅 模拟级别。 当调用应用程序将 SECURITY_SQOS_PRESENT 标志指定为 dwFlagsAndAttributes的一部分时,它还可以包含以下一个或多个值。

安全标志 意义
SECURITY_ANONYMOUS
在匿名模拟级别模拟客户端。
SECURITY_CONTEXT_TRACKING
安全跟踪模式是动态的。 如果未指定此标志,则安全跟踪模式是静态的。
SECURITY_DELEGATION
在委派模拟级别模拟客户端。
SECURITY_EFFECTIVE_ONLY
只有客户端安全上下文的启用方面可供服务器使用。 如果未指定此标志,则客户端安全上下文的所有方面都可用。

这允许客户端限制服务器在模拟客户端时可以使用的组和特权。

SECURITY_IDENTIFICATION
在标识模拟级别模拟客户端。
SECURITY_IMPERSONATION
在模拟级别模拟客户端。 如果未指定其他标志以及 SECURITY_SQOS_PRESENT 标志,则这是默认行为。

[in, optional] hTemplateFile

具有 GENERIC_READ 访问权限的模板文件的有效句柄。 模板文件为正在创建的文件提供文件属性和扩展属性。 此参数可以 NULL

打开现有文件时,CreateFileTransacted 忽略模板文件。

打开新的 EFS 加密文件时,该文件将从其父目录继承 DACL。

[in] hTransaction

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

[in, optional] pusMiniVersion

要打开的微型版本。 如果 hTransaction 中指定的事务不是正在修改文件的事务,则此参数应 NULL。 否则,此参数可以是 FSCTL_TXFS_CREATE_MINIVERSION 控制代码或以下值之一返回的微型版本标识符。

价值 意义
TXFS_MINIVERSION_COMMITTED_VIEW
0x0000
文件自上次提交起的视图。
TXFS_MINIVERSION_DIRTY_VIEW
0xFFFF
正在由事务修改的文件视图。
TXFS_MINIVERSION_DEFAULT_VIEW
0xFFFE
文件的已提交视图或脏视图,具体取决于上下文。 正在修改文件的事务获取脏视图,而未修改文件的事务则获取提交的视图。

lpExtendedParameter

此参数是保留的,必须 NULL

返回值

如果函数成功,则返回值是指定文件、设备、命名管道或邮件槽的打开句柄。

如果函数失败,则返回值 INVALID_HANDLE_VALUE。 若要获取扩展的错误信息,请调用 GetLastError

言论

使用 CreateFileTransacted返回的句柄时,请使用文件 I/O 函数的事务处理版本,而不是适当的标准文件 I/O 函数。 有关详细信息,请参阅事务 NTFS的 编程注意事项。

打开目录的事务处理句柄时,该句柄必须具有 FILE_WRITE_DATAFILE_ADD_FILE)和 FILE_APPEND_DATAFILE_ADD_SUBDIRECTORY)权限。 这些内容包含在 FILE_GENERIC_WRITE 权限中。 如果只是使用句柄创建文件或子目录,则应打开权限较少的目录;否则,可能会发生共享冲突。

当该文件是另一个事务的一部分(也就是说,另一个应用程序通过调用 createFileTransacted来 打开该文件时,无法打开具有 FILE_EXECUTE 访问级别的文件)。 这意味着,如果指定访问级别 FILE_EXECUTEFILE_ALL_ACCESSCreateFileTransacted 失败

当非事务处理应用程序调用 CreateFileTransacted 时,lpSecurityAttributes指定了 MAXIMUM_ALLOWED,则每次都使用相同的访问级别打开句柄。 当事务处理的应用程序调用 CreateFileTransacted 时,MAXIMUM_ALLOWEDlpSecurityAttributes指定,将打开句柄,其访问量取决于文件是否被事务锁定。 例如,如果调用应用程序对文件具有 FILE_EXECUTE 访问级别,则仅当打开的文件未由事务锁定或由事务锁定且应用程序已是该文件的事务读取器时,应用程序才获取此访问权限。

有关事务处理操作的完整说明,请参阅 事务性 NTFS

使用 CloseHandle 函数关闭不再需要句柄时,CreateFileTransacted 返回的对象句柄,并在提交或回滚事务之前关闭。

某些文件系统(如 NTFS 文件系统)支持单个文件和目录的压缩或加密。 在为此类文件系统设置格式的卷上,新文件继承其目录的压缩和加密属性。

不能使用 CreateFileTransacted 来控制文件或目录上的压缩。 有关详细信息,请参阅 文件压缩和解压缩,以及 文件加密

符号链接行为 - 如果对此函数的调用创建新文件,则行为没有变化。

如果指定了 FILE_FLAG_OPEN_REPARSE_POINT

  • 如果打开现有文件并且它是符号链接,则返回的句柄是符号链接的句柄。
  • 如果指定了 TRUNCATE_EXISTINGFILE_FLAG_DELETE_ON_CLOSE,受影响的文件是符号链接。
如果未指定 FILE_FLAG_OPEN_REPARSE_POINT
  • 如果打开现有文件并且它是符号链接,则返回的句柄是目标的句柄。
  • 如果指定了 CREATE_ALWAYSTRUNCATE_EXISTINGFILE_FLAG_DELETE_ON_CLOSE,受影响的文件就是目标。
除非使用事务(即创建的句柄是事务处理句柄),否则不能保证多扇区写入是原子的。 单扇区写入是原子的。 缓存的多扇区写入可能并不总是写入磁盘;因此,请指定 FILE_FLAG_WRITE_THROUGH 以确保将整个多扇区写入磁盘而不缓存。

如前所述,如果 lpSecurityAttributes 参数 NULL,则 CreateFileTransacted 返回的句柄不能由应用程序可能创建的任何子进程继承。 有关此参数的以下信息也适用:

  • 如果 bInheritHandleFALSE,这是任何非零值,则可以继承句柄。 因此,如果不希望句柄可继承,则必须将此结构成员正确初始化为 FALSE
  • 文件或目录的默认安全描述符中的访问控制列表(ACL)继承自其父目录。
  • 目标文件系统必须支持 lpSecurityDescriptor 的文件和目录的安全性,才能对其产生影响,可以使用 GetVolumeInformation
在 Windows 8 和 Windows Server 2012 中,以下技术支持此函数。
科技 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CsvFS)
可复原文件系统 (ReFS)
 

请注意,SMB 3.0 不支持 TxF。

文件

如果尝试在没有软盘的软盘或没有 CD 的 CD-ROM 驱动器上创建文件,系统会向用户显示一条消息以插入磁盘或 CD。 若要防止系统显示此消息,请使用 SEM_FAILCRITICALERRORS调用 SetErrorMode 函数。

有关详细信息,请参阅 创建和打开文件

如果重命名或删除文件,然后在不久后还原该文件,系统会在缓存中搜索要还原的文件信息。 缓存信息包括其短/长名称对和创建时间。

如果调用 CreateFileTransacted 因对 DeleteFile调用而挂起删除的文件,该函数将失败。 操作系统会延迟文件删除,直到文件的所有句柄都关闭。 GetLastError 返回 ERROR_ACCESS_DENIED

dwDesiredAccess 参数可以为零,允许应用程序在没有使用足够安全设置的情况下访问文件属性来查询文件属性。 这可用于测试文件是否存在,而无需打开该文件进行读取和/或写入访问,或获取有关文件或目录的其他统计信息。 请参阅 获取和设置文件信息GetFileInformationByHandle

当应用程序跨网络创建文件时,最好使用 GENERIC_READ | GENERIC_WRITE,而不是单独使用 GENERIC_WRITE。 生成的代码速度更快,因为重定向程序可以使用缓存管理器,并发送更少的 SMB 和更多数据。 这种组合还避免了跨网络写入文件偶尔会返回 ERROR_ACCESS_DENIED的问题。

文件流

在 NTFS 文件系统上,可以使用 CreateFileTransacted 在文件中创建单独的流。

有关详细信息,请参阅 文件流

目录

应用程序无法使用 CreateFileTransacted创建目录,因此,对于此用例,只有 OPEN_EXISTING 值对 dwCreationDisposition 有效。 若要创建目录,应用程序必须调用 CreateDirectoryTransactedCreateDirectoryCreateDirectoryEx

若要使用 CreateFileTransacted打开目录,请将 FILE_FLAG_BACKUP_SEMANTICS 标志指定为 dwFlagsAndAttributes的一部分。 在没有 SE_BACKUP_NAMESE_RESTORE_NAME 特权的情况下使用此标志时,仍适用适当的安全检查。

使用 CreateFileTransacted 在 FAT 或 FAT32 文件系统卷碎片整理期间打开目录时,请不要指定 MAXIMUM_ALLOWED 访问权限。 如果这样做,则拒绝对目录的访问。 请改为指定 GENERIC_READ 访问权限。

有关详细信息,请参阅 关于目录管理

注意

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

要求

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

另请参阅

CloseHandle

CopyFileTransacted

CreateDirectoryTransacted

DeleteFileTransacted

文件压缩和解压缩

文件加密

文件管理功能

文件安全性和访问权限

文件流

FindFirstFileTransacted

Functions

GetFileAttributesTransacted

MoveFileTransacted

概述主题

事务 NTFS 的 编程注意事项

ReadFile

事务性 NTFS (TxF)

WriteFile