NtNotifyChangeMultipleKeys 函数 (winternl.h)
[此函数可能会更改或从 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
MasterKeyHandle 参数指定的键下的子项数。 此参数必须为 1。
[in, optional] SubordinateObjects
指向 OBJECT_ATTRIBUTES 结构的数组的指针,每个子项对应一个。 此数组可以包含一个 OBJECT_ATTRIBUTES 结构。
[in, optional] Event
调用方创建的事件的句柄。 如果 Event 不为 NULL,则调用方将等待操作成功,此时会发出事件信号。
[in, optional] ApcRoutine
指向调用方提供的 APC) 函数 (异步过程调用的指针。 如果 ApcRoutine 不为 NULL,则指定的 APC 函数在操作完成后执行。
[in, optional] ApcContext
指向调用方为其 APC 函数提供的上下文的指针。 此值在执行时传递给 APC 函数。 异步参数必须为 TRUE。 如果指定 了 ApcContext , 则 Event 参数必须为 NULL。
[out] IoStatusBlock
指向包含最终状态和操作相关信息 的IO_STATUS_BLOCK 结构的指针。 对于返回数据的成功调用,在 IO_STATUS_BLOCK 结构的 Information 成员中提供写入 Buffer 参数的字节数。
[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 |
Library | ntdll.lib |
DLL | ntdll.dll |