PTM_RM_NOTIFICATION Rückruffunktion (wdm.h)

Die ResourceManagerNotification-Rückrufroutine eines Ressourcenmanagers 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 Einlistungsobjekt. Die ResourceManagerNotification-Rückrufroutine erhält eine Benachrichtigung für die Liste, die dieses Objekt darstellt.

[in] RMContext

Der Wert, den der Ressourcen-Manager 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 Aufrufer gesendet hat.

[in, out] TmVirtualClock

Ein Zeiger auf einen Speicherort, der den Wert der virtuellen Uhr zu dem Zeitpunkt enthält, an dem KTM die Benachrichtigung für die Übermittlung an den Ressourcen-Manager vorbereitet hat. Wenn die Rückrufroutine diesen Wert erhöht, bevor sie zurückgibt, 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 der Argument-Parameter verweist. Dieser Parameter ist 0, 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, die der TransactionNotification-Parameter 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 status Wert zurückgeben, für den NT_SUCCESS(status) true entspricht, wenn der Vorgang erfolgreich ist.

In der Regel gibt der Ressourcen-Manager STATUS_SUCCESS zurück, wenn er die Benachrichtigung synchron und STATUS_PENDING, wenn er die Benachrichtigung asynchron sendet, aber in beiden Fällen STATUS_PENDING zurückgeben kann. Der Ressourcen-Manager kann jedoch STATUS_PENDING nur für Benachrichtigungen zurückgeben, auf die er reagiert, indem er eine der Routinen TmXxxComplete oder ZwXxxComplete aufruft.

Anders ausgedrückt: Wenn der Ressourcen-Manager auf eine Benachrichtigung reagieren muss, indem er eine der Routinen TmXxxComplete oder ZwXxxComplete aufruft, kann er 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 status Wert zurückgeben, für den NT_SUCCESS(status) false entspricht.

Hinweise

Um eine ResourceManagerNotification-Rückrufroutine zu registrieren, muss Ihr Ressourcen-Manager TmEnableCallbacks aufrufen.

Beachten Sie, dass ResourceManagerNotification-Rückrufroutinen einen Zeiger anstelle eines Handles auf ein Einlistungsobjekt erhalten. Sie können den Einlistungsobjektzeiger an die TmXxx-Routinen des Einlistungsobjekts übergeben.

Weitere Informationen zu ResourceManagerNotification-Rückrufroutinen finden Sie unter Erstellen einer Resource Manager.

Die ResourceManagerNotification-Rückrufroutine wird unter IRQL = PASSIVE_LEVEL aufgerufen und muss bei IRQL = PASSIVE_LEVEL zurückgegeben werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Betriebssystemversionen.
Zielplattform Desktop
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
IRQL PASSIVE_LEVEL (siehe Abschnitt "Hinweise")

Weitere Informationen

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager