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。 不過,資源管理員只能針對回應通知傳回STATUS_PENDING,方法是呼叫其中一個 TmXxxComplete 或 ZwXxxComplete 例程。
換句話說,如果資源管理員必須呼叫其中一個 TmXxxComplete 或 ZwXxxComplete 例程來回應通知, 它可以傳回通知的STATUS_PENDING,稍後呼叫適當的 TmXxxComplete 或 ZwXxxComplete 例程。
如果發生錯誤,回呼例程必須傳回狀態值,NT_SUCCESS(status) 等於 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 (請參閱一節) |