[此函数可能会从 Windows 中更改或删除,而无需进一步通知。 ]
当注册表项或其任何子项发生更改时请求通知。
语法
__kernel_entry NTSTATUS NtNotifyChangeMultipleKeys(
[in] HANDLE MasterKeyHandle,
[in, optional] ULONG Count,
[in, optional] OBJECT_ATTRIBUTES [] SubordinateObjects,
[in, optional] HANDLE Event,
[in, optional] PIO_APC_ROUTINE ApcRoutine,
[in, optional] PVOID ApcContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG CompletionFilter,
[in] BOOLEAN WatchTree,
[out, optional] PVOID Buffer,
[in] ULONG BufferSize,
[in] BOOLEAN Asynchronous
);
参数
[in] MasterKeyHandle
打开键的句柄。 必须使用 KEY_NOTIFY 访问权限打开句柄。
[in, optional] Count
从属对象参数中提供的键对象数。 此参数必须为 1。
[in, optional] SubordinateObjects
指向 OBJECT_ATTRIBUTES 结构的数组的指针,每个键对应一个。 此数组可以包含一个 OBJECT_ATTRIBUTES 结构,不能是 与 MasterKeyHandle 键位于同一 hive 中的键。
[in, optional] Event
调用方创建的事件的句柄。 如果 事件 不 为 NULL,则调用方会等待作成功,此时发出事件信号。
[in, optional] ApcRoutine
指向调用方提供的异步过程调用 (APC) 函数的指针。 如果 ApcRoutine 不是 NULL,则指定的 APC 函数在作完成后执行。 必须在 ZwNotifyChangeMultipleKeys 变量中提供WORK_QUEUE_ITEM而不是 ApcRoutine。
[in, optional] ApcContext
指向调用方为其 APC 函数提供的上下文的指针。 此值在执行时传递给 APC 函数。 异步参数必须为 TRUE。 如果指定 了 ApcContext , 事件 参数必须为 NULL。 必须在 ZwNotifyChangeMultipleKeys 变量中提供WORK_QUEUE_TYPE而不是 ApcContext。
[out] IoStatusBlock
指向包含最终状态和有关作信息的 IO_STATUS_BLOCK 结构的指针。 对于返回数据的成功调用,写入 Buffer 参数的字节数在IO_STATUS_BLOCK结构的信息成员中提供。
[in] CompletionFilter
触发通知的作的位图。 此参数可以是以下一个或多个标志。
[in] WatchTree
如果此参数为 TRUE,则会通知调用方对指定键的所有子项的更改。 如果此参数为 FALSE,则只通知调用方对指定密钥的更改。
[out, optional] Buffer
保留供系统使用。 此参数必须 NULL。
[in] BufferSize
保留供系统使用。 此参数必须为零。
[in] Asynchronous
如果此参数为 TRUE,函数将立即返回。 如果此参数为 FALSE,则在发生指定事件之前,该函数不会返回。
返回值
返回 NTSTATUS 或错误代码。
如果 异步 参数为 TRUE 且指定的事件尚未发生,则函数将返回 STATUS_PENDING。
NTSTATUS 错误代码的表单和重要性列在 WDK 中提供的 Ntstatus.h 头文件中,并在 WDK 文档中介绍。
注解
此函数没有关联的头文件。 还可以使用 LoadLibrary 和 GetProcAddress 函数动态链接到 Ntdll.dll。
要求
| 要求 | 价值 |
|---|---|
| 目标平台 | Windows操作系统 |
| 标头 | winternl.h |
| 图书馆 | ntdll.lib |
| DLL | ntdll.dll |