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) |