Compartilhar via


PTM_RM_NOTIFICATION função de retorno de chamada (wdm.h)

A rotina de retorno de chamada ResourceManagerNotification de um gerenciador de recursos recebe e lida com notificações de transação.

Sintaxe

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

Um ponteiro para um objeto de inscrição. A rotina de retorno de chamada ResourceManagerNotification está recebendo uma notificação para a inscrição que esse objeto representa.

[in] RMContext

O valor que o gerenciador de recursos especificou anteriormente para o parâmetro RMKey da rotina TmEnableCallbacks .

[in] TransactionContext

O valor que o gerenciador de recursos especificou anteriormente para o parâmetro EnlistmentKey da rotina ZwCreateEnlistment .

[in] TransactionNotification

Um dos valores TRANSACTION_NOTIFY_XXX definidos em Ktmtypes.h. Esse valor especifica o tipo de notificação de transação que o KTM enviou ao chamador.

[in, out] TmVirtualClock

Um ponteiro para um local que contém o valor do relógio virtual no momento em que a KTM preparou a notificação para entrega ao gerenciador de recursos. Se a rotina de retorno de chamada aumentar esse valor antes de retornar, o KTM atualizará o relógio virtual para o novo valor. (Normalmente, os gerenciadores de recursos não modificam o valor do relógio virtual.)

[in] ArgumentLength

O comprimento, em bytes, do buffer para o qual o parâmetro Argument aponta. Esse parâmetro será zero se um buffer não estiver disponível.

[in] Argument

Um ponteiro para um buffer que contém argumentos específicos de notificação. Esse parâmetro será NULL se a notificação especificada pelo parâmetro TransactionNotification não exigir um buffer de argumento.

Para obter uma lista de notificações que incluem um buffer de argumento adicional, consulte a seção Comentários do TRANSACTION_NOTIFICATION.

Retornar valor

A rotina de retorno de chamada ResourceManagerNotification deve retornar STATUS_SUCCESS ou outro valor status para o qual NT_SUCCESS(status) será igual a TRUE se a operação for bem-sucedida.

Normalmente, o gerenciador de recursos retorna STATUS_SUCCESS se ele atende a notificação de forma síncrona e STATUS_PENDING se ele atende a notificação de forma assíncrona, mas pode retornar STATUS_PENDING em ambos os casos. No entanto, o gerenciador de recursos pode retornar STATUS_PENDING apenas para notificações às quais ele responde chamando uma das rotinas TmXxxComplete ou ZwXxxComplete .

Em outras palavras, se o gerenciador de recursos precisar responder a uma notificação chamando uma das rotinas TmXxxComplete ou ZwXxxComplete , ele poderá retornar STATUS_PENDING para a notificação e, posteriormente, chamar a rotina TmXxxComplete ou ZwXxxComplete apropriada.

Se ocorrer um erro, a rotina de retorno de chamada deverá retornar um valor status para o qual NT_SUCCESS(status) é igual a FALSE.

Comentários

Para registrar uma rotina de retorno de chamada ResourceManagerNotification , o gerenciador de recursos deve chamar TmEnableCallbacks.

Observe que as rotinas de retorno de chamada ResourceManagerNotification recebem um ponteiro, em vez de um identificador, para um objeto de inscrição. Você pode passar o ponteiro do objeto de inscrição para as rotinas TmXxx do objeto de inscrição.

Para obter mais informações sobre rotinas de retorno de chamada ResourceManagerNotification, consulte Criando um Resource Manager.

A rotina de retorno de chamada ResourceManagerNotification é chamada em IRQL = PASSIVE_LEVEL e deve retornar em IRQL = PASSIVE_LEVEL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores do sistema operacional.
Plataforma de Destino Área de Trabalho
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL PASSIVE_LEVEL (consulte a seção Comentários)

Confira também

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager