PTM_RM_NOTIFICATION función de devolución de llamada (wdm.h)

La rutina de devolución de llamada ResourceManagerNotification de Resource Manager recibe y controla las notificaciones de transacción.

Sintaxis

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

Parámetros

[in] EnlistmentObject

Puntero a un objeto de inscripción. La rutina de devolución de llamada ResourceManagerNotification recibe una notificación para la inscripción que representa este objeto.

[in] RMContext

Valor que el administrador de recursos especificó anteriormente para el parámetro RMKey de la rutina TmEnableCallbacks .

[in] TransactionContext

Valor que el administrador de recursos especificó anteriormente para el parámetro EnlistmentKey de la rutina ZwCreateEnlistment .

[in] TransactionNotification

Uno de los valores TRANSACTION_NOTIFY_XXX que se definen en Ktmtypes.h. Este valor especifica el tipo de notificación de transacción que KTM envió al autor de la llamada.

[in, out] TmVirtualClock

Puntero a una ubicación que contiene el valor del reloj virtual en el momento en que KTM preparó la notificación para su entrega al administrador de recursos. Si la rutina de devolución de llamada aumenta este valor antes de que devuelva, KTM actualiza el reloj virtual al nuevo valor. (Normalmente, los administradores de recursos no modifican el valor del reloj virtual).

[in] ArgumentLength

Longitud, en bytes, del búfer al que apunta el parámetro Argument . Este parámetro es cero si un búfer no está disponible.

[in] Argument

Puntero a un búfer que contiene argumentos específicos de notificación. Este parámetro es NULL si la notificación de que el parámetro TransactionNotification especifica no requiere un búfer de argumentos.

Para obtener una lista de notificaciones que incluyen un búfer de argumentos adicional, consulte la sección Comentarios de TRANSACTION_NOTIFICATION.

Valor devuelto

La rutina de devolución de llamada ResourceManagerNotification debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) es igual a TRUE si la operación se realiza correctamente.

Normalmente, el administrador de recursos devuelve STATUS_SUCCESS si atiende la notificación de forma sincrónica y STATUS_PENDING si atiende la notificación de forma asincrónica, pero puede devolver STATUS_PENDING en cualquier caso. Sin embargo, el administrador de recursos puede devolver STATUS_PENDING solo para las notificaciones a las que responde llamando a una de las rutinas TmXxxComplete o ZwXxxComplete .

En otras palabras, si el administrador de recursos debe responder a una notificación llamando a una de las rutinas TmXxxComplete o ZwXxxComplete , puede devolver STATUS_PENDING para la notificación y después llamar a la rutina TmXxxComplete o ZwXxxComplete adecuada.

Si se produce un error, la rutina de devolución de llamada debe devolver un valor de estado para el que NT_SUCCESS(status) es igual a FALSE.

Comentarios

Para registrar una rutina de devolución de llamada resourceManagerNotification , el administrador de recursos debe llamar a TmEnableCallbacks.

Tenga en cuenta que las rutinas de devolución de llamada ResourceManagerNotification reciben un puntero, en lugar de un identificador, a un objeto de inscripción. Puede pasar el puntero del objeto de inscripción a las rutinas TmXxx del objeto de inscripción.

Para obtener más información sobre las rutinas de devolución de llamada de ResourceManagerNotification, consulte Creating a Resource Manager.

Se llama a la rutina de devolución de llamada ResourceManagerNotification en IRQL = PASSIVE_LEVEL y debe devolver en IRQL = PASSIVE_LEVEL.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores del sistema operativo.
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
IRQL PASSIVE_LEVEL (consulte la sección Comentarios)

Consulte también

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager