使用事务

应用程序编写者可以使用内核事务管理器 (KTM) 进行少量源代码更改,以添加事务处理的文件和注册表操作。 通常,这将涉及创建事务并将句柄传递给事务资源(如 事务 NTFS 和事务注册表)提供的其他函数。

KTM 为应用程序提供参与事务以及编写自己的事务资源管理器的机制。 有一些函数可用于创建、管理和处理四类内核对象:事务、事务管理器、资源管理器和登记。 如果只是使用事务,则只需处理事务对象并使用以下函数:

切勿假定事务处于活动状态。 可以随时出于多种原因回滚事务。

Windows 向系统资源公开基于句柄的接口。 若要使用操作系统对象,应用程序首先请求对象的句柄,然后在后续的函数调用中使用此句柄来访问或修改对象。 句柄通常可以在不同的模式下打开;指定的模式会影响后续函数调用的语义。 例如,通过调用 CreateFile 打开且 dwDesiredAccess 标志设置为 GENERIC_READ 的文件句柄不能用于修改文件的调用。

可以与 分布式事务处理协调器 用户模式资源(例如 SQL 或 MSMQ)以及使用 KTM 的内核模式资源进行协调。 首先,创建 DTC 事务或 System.Transactions 对象,然后调用 IKernelTransaction 对象,可从中获取 KTM 句柄。 IKernelTransaction 对象创建从属于 DTC 事务的 KTM 事务。 使用此句柄,可以创建事务处理的对象,但使用 DTC 或 System.Transactions 发出事务结果的信号。