共用方式為


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_PENDING以異步方式服務通知,則資源管理員會傳回STATUS_SUCCESS,但在任一情況下都可以傳回STATUS_PENDING。 不過,資源管理員只能針對回應的通知傳回STATUS_PENDING,方法是呼叫其中一個 TmXxxCompleteZwXxxComplete 例程。

換句話說,如果資源管理員必須呼叫其中一個 TmXxxCompleteZwXxxComplete 例程來回應通知,它可以傳回通知STATUS_PENDING,稍後再呼叫適當的 TmXxxCompleteZwXxxComplete 例程。

如果發生錯誤,回呼例程必須傳回狀態值,NT_SUCCESS (状态) 等於 FALSE

備註

若要註冊 ResourceManagerNotification 回呼例程,您的資源管理員必須呼叫 TmEnableCallbacks

請注意, ResourceManagerNotification 回呼例程會接收登記物件的指標,而不是句柄。 您可以將登記物件指標傳遞至登記物件的 TmXxx例程

如需 ResourceManagerNotification 回呼例程的詳細資訊,請參閱建立 Resource Manager

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