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

资源管理器对象 的句柄,该句柄是通过上一次调用 ZwCreateResourceManagerZwOpenResourceManager获取的。 句柄必须具有对对象的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 指针),ZwGetNotificationResourceManager 会立即返回通知是否可用。

[out, optional] ReturnLength

指向变量的可选指针。 如果此指针未 NULL,并且如果 NotificationLength 参数的值太小,ZwGetNotificationResourceManager 提供变量中所需的长度并返回STATUS_BUFFER_TOO_SMALL。

[in] Asynchronous

必须是零的 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 例程的详细信息,请参阅 创建资源管理器

NtGetNotificationResourceManagerZwGetNotificationResourceManager 是同一 Windows 本机系统服务例程的两个版本。

对于内核模式驱动程序的调用,NtXxxZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxxZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程

要求

要求 价值
最低支持的客户端 在 Windows Vista 和更高版本的作系统版本中可用。
目标平台 普遍
标头 wdm.h(包括 Wdm.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL = PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI、PowerIrpDDis

另请参阅

TRANSACTION_NOTIFICATION

TmEnableCallbacks

使用本机系统服务例程的 Nt 和 Zw 版本

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager