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,方法是呼叫其中一個 TmXxxComplete 或 ZwXxxComplete 例程。
換句話說,如果資源管理員必須呼叫其中一個 TmXxxComplete 或 ZwXxxComplete 例程來回應通知,它可以傳回通知STATUS_PENDING,稍後再呼叫適當的 TmXxxComplete 或 ZwXxxComplete 例程。
如果發生錯誤,回呼例程必須傳回狀態值,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 (请参阅一节) |