Поделиться через


функция обратного вызова PTM_RM_NOTIFICATION (wdm.h)

Подпрограмма обратного вызова диспетчера ресурсов ResourceManagerNotification получает и обрабатывает уведомления о транзакциях.

Синтаксис

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

Параметры

[in] EnlistmentObject

Указатель на объект перечисления. Подпрограмма обратного вызова ResourceManagerNotification получает уведомление о зачислении этого объекта.

[in] RMContext

Значение, указанное ранее диспетчером ресурсов для параметра RMKey подпрограмм ы TmEnableCallbacks.

[in] TransactionContext

Значение, указанное ранее диспетчером ресурсов для параметра EnlistmentKey подпрограммы ZwCreateEnlist ment.

[in] TransactionNotification

Одно из значений TRANSACTION_NOTIFY_XXX, определенных в Ktmtypes.h. Это значение указывает тип уведомления о транзакциях, отправляемых вызывающей объекту KTM.

[in, out] TmVirtualClock

Указатель на расположение, содержащее значение виртуальных часов в то время, когда KTM подготовил уведомление о доставке в диспетчер ресурсов. Если подпрограмма обратного вызова увеличивает это значение перед возвратом, KTM обновляет виртуальные часы до нового значения. (Как правило, диспетчеры ресурсов не изменяют значение виртуальных часов.)

[in] ArgumentLength

Длина буфера в байтах, на который указывает параметр аргумента. Этот параметр равен нулю, если буфер недоступен.

[in] Argument

Указатель на буфер, содержащий аргументы, относящиеся к уведомлениям. Этот параметр NULL, если уведомление о том, что параметр TransactionNotification указывает, не требует буфера аргументов.

Список уведомлений, включающих дополнительный буфер аргументов, см. в разделе "Примечания" TRANSACTION_NOTIFICATION.

Возвращаемое значение

подпрограмма обратного вызова ResourceManagerNotification должна возвращать STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(состояние) равно true, если операция выполнена успешно.

Как правило, диспетчер ресурсов возвращает STATUS_SUCCESS, если он обслуживает уведомление синхронно и STATUS_PENDING, если он обслуживает уведомление асинхронно, но он может возвращать STATUS_PENDING в любом случае. Однако диспетчер ресурсов может возвращать STATUS_PENDING только для уведомлений, на которые он отвечает, вызвав одну из подпрограмм TmXxxComplete или ZwXxxComplete.

Другими словами, если диспетчер ресурсов должен отвечать на уведомление, вызвав одну из подпрограмм TmXxxComplete или ZwXxxComplete, он может вернуть STATUS_PENDING для уведомления, а затем вызвать соответствующую подпрограмму TmXxxComplete или ZwXxxComplete.

Если возникает ошибка, подпрограмма обратного вызова должна возвращать значение состояния, для которого NT_SUCCESS(состояние) равно FALSE.

Замечания

Чтобы зарегистрировать подпрограмму обратного вызова ResourceManagerNotification, диспетчер ресурсов должен вызвать TmEnableCallbacks.

Обратите внимание, что ResourceManagerNotification подпрограммы обратного вызова получают указатель вместо дескриптора в объект перечисления. Вы можете передать указатель объекта перечисления на подпрограммы TmXxxx объекта.

Дополнительные сведения о подпрограммах обратного вызова ResourceManagerNotification см. в созданииResource Manager.

Подпрограмма обратного вызова ResourceManagerNotification вызывается в IRQL = PASSIVE_LEVEL, и она должна возвращаться в IRQL = PASSIVE_LEVEL.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows Vista и более поздних версиях операционной системы.
целевая платформа Настольный
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL PASSIVE_LEVEL (см. раздел "Примечания")

См. также

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager