다음을 통해 공유


NtGetNotificationResourceManager 함수(wdm.h)

ZwGetNotificationResourceManager 루틴은 지정된 리소스 관리자의 알림 큐에서 다음 트랜잭션 알림을 검색합니다.

구문

__kernel_entry NTSYSCALLAPI NTSTATUS NtGetNotificationResourceManager(
  [in]            HANDLE                    ResourceManagerHandle,
  [out]           PTRANSACTION_NOTIFICATION TransactionNotification,
  [in]            ULONG                     NotificationLength,
  [in]            PLARGE_INTEGER            Timeout,
  [out, optional] PULONG                    ReturnLength,
  [in]            ULONG                     Asynchronous,
  [in, optional]  ULONG_PTR                 AsynchronousContext
);

매개 변수

[in] ResourceManagerHandle

ZwCreateResourceManager 또는 ZwOpenResourceManager에 대한 이전 호출에서 가져온 리소스 관리자 개체대한 핸들입니다. 핸들에는 개체에 대한 RESOURCEMANAGER_GET_NOTIFICATION 액세스 권한이 있어야 합니다.

[out] TransactionNotification

검색된 알림에 대한 정보를 수신하는 호출자가 할당한 버퍼에 대한 포인터입니다. 버퍼는 TRANSACTION_NOTIFICATION 구조와 추가 알림 관련 인수를 포함할 수 있을 만큼 커야 합니다.

[in] NotificationLength

TransactionNotification 매개 변수가 가리키는 버퍼의 길이(바이트)입니다.

[in] Timeout

상대 또는 절대 시간을 100나노초 단위로 지정하는 값에 대한 포인터입니다. 이 포인터는 선택 사항이며 NULL일 수 있습니다.

포인터가 NULL이면 트랜잭션 알림을 사용할 수 있게 될 때까지 ZwGetNotificationResourceManager 가 반환되지 않습니다. 시간 값을 지정하면 알림을 사용할 수 있거나 지정된 시간이 경과한 후에 ZwGetNotificationResourceManager 가 반환됩니다.

음수 값은 현재 시스템 시간을 기준으로 하는 시간을 지정합니다. 예를 들어 상대 시간 값이 5초이면 ZwGetNotificationResourceManager 가 호출된 후 5초가 초과됩니다.

양수 값은 1601년 1월 1일 00:00을 기준으로 하는 절대 시간을 지정합니다. 절대 시간 값을 지정하면 운영 체제는 1601년 1월 1일 00:00을 나타내는 시간 값에 절대 시간 값을 추가합니다.

호출자가 NULL 포인터 대신 0 값을 지정하면 알림을 사용할 수 있는지 여부에 관계없이 ZwGetNotificationResourceManager 가 즉시 반환됩니다.

[out, optional] ReturnLength

변수에 대한 선택적 포인터입니다. 이 포인터가 NULL이 아니고 NotificationLength 매개 변수의 값이 너무 작으면 ZwGetNotificationResourceManager 는 변수에 필요한 길이를 제공하고 STATUS_BUFFER_TOO_SMALL 반환합니다.

[in] Asynchronous

0이어야 하는 ULONG 값입니다. ZwGetNotificationResourceManager 는 비동기 알림을 지원하지 않습니다. TmEnableCallbacks를 사용하여 비동기 알림을 사용하도록 설정합니다.

[in, optional] AsynchronousContext

ULONG 값에 대한 포인터입니다. 이 포인터는 NULL이어야 합니다.

반환 값

작업이 성공하고 알림을 사용할 수 있는 경우 ZwGetNotificationResourceManager는 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 루틴이 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_TIMEOUT
알림을 사용할 수 있게 되기 전에 시간 제한이 지정하는 제한 시간 간격이 경과했습니다.
STATUS_OBJECT_TYPE_MISMATCH
지정된 핸들은 리소스 관리자 개체에 대한 핸들이 아닙니다.
STATUS_INVALID_HANDLE
개체 핸들이 잘못되었습니다.
STATUS_ACCESS_DENIED
호출자에게 리소스 관리자 개체에 대한 적절한 액세스 권한이 없습니다.
STATUS_BUFFER_TOO_SMALL
NotificationLength 매개 변수의 값이 너무 작습니다.
 

루틴은 다른 NTSTATUS 값을 반환할 수 있습니다.

설명

ZwGetNotificationResourceManager 루틴을 사용하여 알림을 동기적으로 가져옵니다. TmEnableCallbacks 루틴을 사용하여 비동기 알림을 사용하도록 설정합니다.

수신된 TRANSACTION_NOTIFICATION 구조체에는 리소스 관리자가 ZwCreateEnlistment를 호출할 때 지정한 인리스트먼트 키가 포함됩니다. 인리스트먼트 키를 사용하여 알림이 적용되는 인리스트먼트를 식별할 수 있습니다.

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

NtGetNotificationResourceManagerZwGetNotificationResourceManager 는 동일한 Windows 네이티브 시스템 서비스 루틴의 두 버전입니다.

커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxxZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 운영 체제 버전에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL = PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs, PowerIrpDDis

추가 정보

TRANSACTION_NOTIFICATION

TmEnableCallbacks

네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager