PTM_RM_NOTIFICATION Rückruffunktion (wdm.h)
Die ResourceManagerNotification eines Ressourcenmanagers Rückrufroutine empfängt und verarbeitet Transaktionsbenachrichtigungen.
Syntax
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
)
{...}
Parameter
[in] EnlistmentObject
Ein Zeiger auf ein Enlistment-Objekt. Die ResourceManagerNotification Rückrufroutine empfängt eine Benachrichtigung für die Liste, die dieses Objekt darstellt.
[in] RMContext
Der Wert, den der Ressourcenmanager zuvor für den RMKey Parameter der TmEnableCallbacks Routine angegeben hat.
[in] TransactionContext
Der Wert, den der Ressourcen-Manager zuvor für den EnlistmentKey Parameter der ZwCreateEnlistment Routine angegeben hat.
[in] TransactionNotification
Einer der TRANSACTION_NOTIFY_XXX Werte, die in Ktmtypes.h definiert sind. Dieser Wert gibt den Typ der Transaktionsbenachrichtigung an, die KTM an den Anrufer gesendet hat.
[in, out] TmVirtualClock
Ein Zeiger auf einen Ort, der den virtuellen Uhrwert enthält, zum Zeitpunkt, zu dem KTM die Benachrichtigung zur Übermittlung an den Ressourcenmanager vorbereitet hat. Wenn die Rückrufroutine diesen Wert vor der Rückgabe erhöht, aktualisiert KTM die virtuelle Uhr auf den neuen Wert. (In der Regel ändern Ressourcenmanager den Wert der virtuellen Uhr nicht.)
[in] ArgumentLength
Die Länge des Puffers in Bytes, auf den das Argument Parameter verweist. Dieser Parameter ist null, wenn kein Puffer verfügbar ist.
[in] Argument
Ein Zeiger auf einen Puffer, der Benachrichtigungsspezifische Argumente enthält. Dieser Parameter ist NULL-, wenn die Benachrichtigung, dass der parameter TransactionNotification angibt, keinen Argumentpuffer erfordert.
Eine Liste der Benachrichtigungen, die einen zusätzlichen Argumentpuffer enthalten, finden Sie im Abschnitt "Hinweise" von TRANSACTION_NOTIFICATION.
Rückgabewert
ResourceManagerNotification Rückrufroutine muss STATUS_SUCCESS oder einen anderen Statuswert zurückgeben, für den NT_SUCCESS(Status) TRUE- entspricht, wenn der Vorgang erfolgreich ist.
In der Regel gibt der Ressourcenmanager STATUS_SUCCESS zurück, wenn die Benachrichtigung synchron und STATUS_PENDING, wenn sie die Benachrichtigung asynchron dienstt, aber in beiden Fällen STATUS_PENDING zurückgeben kann. Der Ressourcenmanager kann jedoch STATUS_PENDING nur für Benachrichtigungen zurückgeben, auf die er reagiert, indem er eine der TmXxxComplete oder ZwXxxComplete Routinen aufruft.
Anders ausgedrückt: Wenn der Ressourcenmanager auf eine Benachrichtigung reagieren muss, indem eine der TmXxxComplete oder ZwXxxComplete Routinen aufgerufen wird, sie kann STATUS_PENDING für die Benachrichtigung zurückgeben und später die entsprechende TmXxxComplete oder ZwXxxComplete Routine aufrufen.
Wenn ein Fehler auftritt, muss die Rückrufroutine einen Statuswert zurückgeben, für den NT_SUCCESS(Status) FALSE-entspricht.
Bemerkungen
Um eine ResourceManagerNotification Callbackroutine zu registrieren, muss Ihr Ressourcenmanager TmEnableCallbacksaufrufen.
Beachten Sie, dass ResourceManagerNotification Rückrufroutinen einen Zeiger anstelle eines Handles auf ein Enlistment-Objekt erhalten. Sie können den Enlistment-Objektzeiger an die TmXxx-Routinen des Enlistment-Objektsübergeben.
Weitere Informationen zu ResourceManagerNotification Rückrufroutinen finden Sie unter Creating a Resource Manager.
Die ResourceManagerNotification Rückrufroutine wird bei IRQL = PASSIVE_LEVEL aufgerufen und muss bei IRQL = PASSIVE_LEVEL zurückgegeben werden.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows Vista und höheren Betriebssystemversionen. |
Zielplattform- | Desktop |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL- | PASSIVE_LEVEL (Siehe Abschnitt "Hinweise") |