Condividi tramite


PTM_RM_NOTIFICATION funzione di callback (wdm.h)

La routine di callback ResourceManagerNot ification di un gestore di risorse riceve e gestisce le notifiche delle transazioni .

Sintassi

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
)
{...}

Parametri

[in] EnlistmentObject

Puntatore a un oggetto di integrazione . La routine di callback ResourceManagerNotification riceve una notifica per l'integrazione rappresentata da questo oggetto.

[in] RMContext

Valore specificato in precedenza da Resource Manager per il parametro RMKey della routine TmEnableCallbacks.

[in] TransactionContext

Valore specificato in precedenza per il parametro EnlistmentKey del ZwCreateEnlistmentment.

[in] TransactionNotification

Uno dei valoriTRANSACTION_NOTIFY_ XXX definiti in Ktmtypes.h. Questo valore specifica il tipo di notifica della transazione inviata dal KTM al chiamante.

[in, out] TmVirtualClock

Puntatore a una posizione contenente il valore dell'orologio virtuale al momento in cui KTM ha preparato la notifica per il recapito al gestore risorse. Se la routine di callback aumenta questo valore prima che venga restituito, KTM aggiorna l'orologio virtuale al nuovo valore. In genere, i gestori di risorse non modificano il valore dell'orologio virtuale.

[in] ArgumentLength

Lunghezza, in byte, del buffer a cui punta il parametro argomento. Questo parametro è zero se un buffer non è disponibile.

[in] Argument

Puntatore a un buffer che contiene argomenti specifici della notifica. Questo parametro è NULL se la notifica che il parametro TransactionNotification non richiede un buffer di argomenti.

Per un elenco di notifiche che includono un buffer di argomenti aggiuntivo, vedere la sezione Osservazioni di TRANSACTION_NOTIFICATION.

Valore restituito

routine di callback ResourceManagerNotification deve restituire STATUS_SUCCESS o un altro valore di stato per il quale NT_SUCCESS(stato) è uguale TRUE se l'operazione ha esito positivo.

In genere, resource manager restituisce STATUS_SUCCESS se esegue la notifica in modo sincrono e STATUS_PENDING se la notifica viene usata in modo asincrono, ma può restituire STATUS_PENDING in entrambi i casi. Tuttavia, il gestore delle risorse può restituire STATUS_PENDING solo per le notifiche a cui risponde chiamando una delle routine TmXxxComplete o ZwXxxComplete.

In altre parole, se il gestore delle risorse deve rispondere a una notifica chiamando una delle routine TmXxxComplete o ZwXxxComplete, può restituire STATUS_PENDING per la notifica e in seguito chiamare la routine TmXxxCompleta o ZwXxxCompleta.

Se si verifica un errore, la routine di callback deve restituire un valore di stato per il quale NT_SUCCESS(stato) è uguale a FALSE.

Osservazioni

Per registrare una routine di callback di ResourceManagerNotification, il gestore delle risorse deve chiamare TmEnableCallbacks.

Si noti che ResourceManagerNotification routine di callback ricevono un puntatore, anziché un handle, a un oggetto di integrazione. È possibile passare il puntatore dell'oggetto di integrazione alle routine TmXxx dell'oggetto di integrazione.

Per altre informazioni su routine di callback ResourceManagerNotification, vedere Creating a Resource Manager.

La routine di callback resourcemanager viene chiamata in IRQL = PASSIVE_LEVEL e deve restituire in IRQL = PASSIVE_LEVEL.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows Vista e versioni successive del sistema operativo.
piattaforma di destinazione Desktop
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL PASSIVE_LEVEL (vedere la sezione Osservazioni)

Vedere anche

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager