다음을 통해 공유


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

TmEnableCallbacks 루틴의 RMKey 매개 변수에 대해 리소스 관리자가 이전에 지정한 값입니다.

[in] TransactionContext

리소스 관리자가 ZwCreateEnlistment 루틴의 EnlistmentKey 매개 변수에 대해 이전에 지정한 값입니다.

[in] TransactionNotification

Ktmtypes.h에 정의된 TRANSACTION_NOTIFY_XXX 값 중 하나입니다. 이 값은 KTM이 호출자에게 보낸 트랜잭션 알림의 유형을 지정합니다.

[in, out] TmVirtualClock

KTM이 리소스 관리자에게 배달할 알림을 준비할 때 가상 클록 값 이 포함된 위치에 대한 포인터입니다. 콜백 루틴이 반환되기 전에 이 값을 늘리면 KTM은 가상 클록을 새 값으로 업데이트합니다. (일반적으로 리소스 관리자는 가상 클록 값을 수정하지 않습니다.)

[in] ArgumentLength

Argument 매개 변수가 가리키는 버퍼의 길이(바이트)입니다. 버퍼를 사용할 수 없는 경우 이 매개 변수는 0입니다.

[in] Argument

알림 관련 인수를 포함하는 버퍼에 대한 포인터입니다. TransactionNotification 매개 변수가 지정하는 알림에 인수 버퍼가 필요하지 않은 경우 이 매개 변수는 NULL입니다.

추가 인수 버퍼를 포함하는 알림 목록은 TRANSACTION_NOTIFICATION 주의 섹션을 참조하세요.

반환 값

ResourceManagerNotification 콜백 루틴은 작업이 성공하면 NT_SUCCESS(상태)가 TRUE인 STATUS_SUCCESS 또는 다른 상태 값을 반환해야 합니다.

일반적으로 리소스 관리자는 알림을 동기적으로 처리하고 알림을 비동기적으로 서비스하는 경우 STATUS_PENDING STATUS_SUCCESS 반환하지만 두 경우 모두 STATUS_PENDING 반환할 수 있습니다. 그러나 리소스 관리자는 TmXxxComplete 또는 Zw Xxx Complete 루틴 중 하나를 호출하여 응답하는 알림에 대해서만 STATUS_PENDING 반환할 수 있습니다.

즉, 리소스 관리자가 TmXxxComplete 또는 ZwXxxComplete 루틴 중 하나를 호출하여 알림에 응답해야 하는 경우 알림에 대한 STATUS_PENDING 반환하고 나중에 적절한 TmXxxComplete 또는 ZwXxxComplete 루틴을 호출할 수 있습니다.

오류가 발생하면 콜백 루틴은 NT_SUCCESS(상태)가 FALSE인 상태 값을 반환해야 합니다.

설명

ResourceManagerNotification 콜백 루틴을 등록하려면 리소스 관리자가 TmEnableCallbacks를 호출해야 합니다.

ResourceManagerNotification 콜백 루틴은 인리스트먼트 개체에 대한 핸들 대신 포인터를 받습니다. 인리스트먼트 개체 포인터를 인리스트먼트 개체의 TmXxx 루틴에 전달할 수 있습니다.

ResourceManagerNotification 콜백 루틴에 대한 자세한 내용은 Resource Manager 만들기를 참조하세요.

ResourceManagerNotification 콜백 루틴은 IRQL = PASSIVE_LEVEL 호출되며 IRQL = PASSIVE_LEVEL 반환해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 운영 체제 버전에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
IRQL PASSIVE_LEVEL(설명 섹션 참조)

추가 정보

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager