Condividi tramite


PTM_RM_NOTIFICATION funzione di callback (wdm.h)

La routine di callback ResourceManagerNotification di Resource Manager 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 per il parametro RMKey della routine TmEnableCallbacks .

[in] TransactionContext

Valore specificato in precedenza per il parametro EnlistmentKey della routine ZwCreateEnlistment .

[in] TransactionNotification

Uno dei valori TRANSACTION_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 Argument . Questo parametro è zero se un buffer non è disponibile.

[in] Argument

Puntatore a un buffer contenente argomenti specifici della notifica. Questo parametro è NULL se la notifica che il parametro TransactionNotification specifica 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

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

In genere, resource manager restituisce STATUS_SUCCESS se la notifica viene usata 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 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 successivamente chiamare la routine TmXxxComplete o ZwXxxComplete appropriata.

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

Commenti

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

Si noti che le routine di callback ResourceManagerNotification 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 sulle routine di callback ResourceManagerNotification, vedere Creazione di un Resource Manager.

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

Requisiti

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)

Vedi anche

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager