PTM_RM_NOTIFICATION回调函数 (wdm.h)

资源管理器的 ResourceManagerNotification 回调例程接收并处理 事务通知

语法

PTM_RM_NOTIFICATION PtmRmNotification;

NTSTATUS PtmRmNotification(
  [in]      PKENLISTMENT EnlistmentObject,
  [in]      PVOID RMContext,
  [in]      PVOID TransactionContext,
  [in]      ULONG TransactionNotification,
  [in, out] PLARGE_INTEGER TmVirtualClock,
  [in]      ULONG ArgumentLength,
  [in]      PVOID Argument
)
{...}

参数

[in] EnlistmentObject

指向 登记对象的指针。 ResourceManagerNotification 回调例程接收此对象表示的登记的通知。

[in] RMContext

资源管理器之前为 TmEnableCallbacks 例程的 RMKey 参数指定的值。

[in] TransactionContext

资源管理器之前为 ZwCreateEnlistment 例程的 EnlistmentKey 参数指定的值。

[in] TransactionNotification

Ktmtypes.h 中定义的TRANSACTION_NOTIFY_XXX 值之一。 此值指定 KTM 发送给调用方的交易通知的类型。

[in, out] TmVirtualClock

指向一个位置的指针,该位置包含 KTM 准备要传递到资源管理器的通知时 虚拟时钟值 。 如果回调例程在返回之前增加此值,KTM 会将虚拟时钟更新为新值。 (通常,资源管理器不会修改虚拟时钟值。)

[in] ArgumentLength

Argument 参数指向的缓冲区的长度(以字节为单位)。 如果缓冲区不可用,则此参数为零。

[in] Argument

指向包含通知特定参数的缓冲区的指针。 如果 TransactionNotification 参数指定的通知不需要参数缓冲区,则此参数为 NULL

有关包含附加参数缓冲区的通知列表,请参阅 TRANSACTION_NOTIFICATION的“备注”部分。

返回值

如果操作成功,ResourceManagerNotification 回调例程必须返回STATUS_SUCCESS或其他状态值,NT_SUCCESS (状态) 等于 TRUE

通常,如果资源管理器以同步方式为通知提供服务,则返回STATUS_SUCCESS;如果以异步方式为通知提供服务,则STATUS_PENDING返回,但在任一情况下,它都可以返回STATUS_PENDING。 但是,资源管理器只能为通过调用 TmXxxCompleteZw Xxx Complete 例程之一响应的通知返回STATUS_PENDING。

换句话说,如果资源管理器必须通过调用 TmXxxCompleteZwXxxComplete 例程之一来响应通知,它可以返回通知的STATUS_PENDING,并在以后调用相应的 TmXxxCompleteZwXxxComplete 例程。

如果发生错误,回调例程必须返回状态值,NT_SUCCESS (状态) 等于 FALSE

注解

若要注册 ResourceManagerNotification 回调例程,资源管理器必须调用 TmEnableCallbacks

请注意, ResourceManagerNotification 回调例程接收指向登记对象的指针,而不是句柄。 可以将登记对象指针传递给登记对象的 TmXxx 例程

有关 ResourceManagerNotification 回调例程的详细信息,请参阅创建资源管理器

ResourceManagerNotification 回调例程在 IRQL = PASSIVE_LEVEL 调用,并且必须在 IRQL = PASSIVE_LEVEL 返回。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的操作系统版本中可用。
目标平台 桌面
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL PASSIVE_LEVEL (请参阅“备注”部分)

另请参阅

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager