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 指针),ZwGetNotificationResourceManager 会立即返回通知是否可用。
[out, optional] ReturnLength
指向变量的可选指针。 如果此指针未 NULL,并且如果 NotificationLength 参数的值太小,ZwGetNotificationResourceManager 提供变量中所需的长度并返回STATUS_BUFFER_TOO_SMALL。
[in] Asynchronous
必须是零的 ULONG 值。 ZwGetNotificationResourceManager 不支持异步通知。 使用 TmEnableCallbacks 启用异步通知。
[in, optional] AsynchronousContext
指向 ULONG 值的指针。 此指针必须 NULL。
返回值
ZwGetNotificationResourceManager 如果作成功且通知可用,则返回STATUS_SUCCESS。 否则,此例程可能会返回以下值之一:
返回代码 | 描述 |
---|---|
|
超时 指定在通知可用前经过的超时间隔。 |
|
指定的句柄不是资源管理器对象的句柄。 |
|
对象句柄无效。 |
|
调用方对资源管理器对象没有适当的访问权限。 |
|
NotificationLength 参数的值太小。 |
例程可能会 返回其他NTSTATUS 值。
言论
使用 ZwGetNotificationResourceManager 例程同步获取通知。 使用 TmEnableCallbacks 例程启用异步通知。
收到的 TRANSACTION_NOTIFICATION 结构包含资源管理器在调用 ZwCreateEnlistment时指定的登记键。 可以使用登记密钥标识通知适用的登记。
有关 ZwGetNotificationResourceManager 例程的详细信息,请参阅 创建资源管理器。
NtGetNotificationResourceManager 和 ZwGetNotificationResourceManager 是同一 Windows 本机系统服务例程的两个版本。
对于内核模式驱动程序的调用,NtXxx 和 ZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxx 与 ZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的作系统版本中可用。 |
目标平台 | 普遍 |
标头 | wdm.h(包括 Wdm.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | = PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI、PowerIrpDDis |