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 반환합니다. 그렇지 않으면 이 루틴이 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
알림을 사용할 수 있게 되기 전에 시간 제한이 지정하는 제한 시간 간격이 경과했습니다. |
|
지정된 핸들은 리소스 관리자 개체에 대한 핸들이 아닙니다. |
|
개체 핸들이 잘못되었습니다. |
|
호출자에게 리소스 관리자 개체에 대한 적절한 액세스 권한이 없습니다. |
|
NotificationLength 매개 변수의 값이 너무 작습니다. |
루틴은 다른 NTSTATUS 값을 반환할 수 있습니다.
설명
ZwGetNotificationResourceManager 루틴을 사용하여 알림을 동기적으로 가져옵니다. TmEnableCallbacks 루틴을 사용하여 비동기 알림을 사용하도록 설정합니다.
수신된 TRANSACTION_NOTIFICATION 구조체에는 리소스 관리자가 ZwCreateEnlistment를 호출할 때 지정한 인리스트먼트 키가 포함됩니다. 인리스트먼트 키를 사용하여 알림이 적용되는 인리스트먼트를 식별할 수 있습니다.
ZwGetNotificationResourceManager 루틴에 대한 자세한 내용은 Resource Manager 만들기를 참조하세요.
NtGetNotificationResourceManager 및 ZwGetNotificationResourceManager 는 동일한 Windows 네이티브 시스템 서비스 루틴의 두 버전입니다.
커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxx 및 ZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 운영 체제 버전에서 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | = PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs, PowerIrpDDis |