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

从属对象参数中提供的键对象数。 此参数必须为 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

触发通知的作的位图。 此参数可以是以下一个或多个标志。

价值 含义
REG_NOTIFY_CHANGE_NAME
如果添加或删除子项,请通知调用方。
REG_NOTIFY_CHANGE_ATTRIBUTES
通知调用方对密钥属性的更改,例如安全描述符信息。
REG_NOTIFY_CHANGE_LAST_SET
通知调用方对键值的更改。 这包括添加或删除值,或更改现有值。
REG_NOTIFY_CHANGE_SECURITY
通知调用方对密钥的安全描述符的更改。

[in] WatchTree

如果此参数为 TRUE,则会通知调用方对指定键的所有子项的更改。 如果此参数为 FALSE,则只通知调用方对指定密钥的更改。

[out, optional] Buffer

保留供系统使用。 此参数必须 NULL

[in] BufferSize

保留供系统使用。 此参数必须为零。

[in] Asynchronous

如果此参数为 TRUE,函数将立即返回。 如果此参数为 FALSE,则在发生指定事件之前,该函数不会返回。

返回值

返回 NTSTATUS 或错误代码。

如果 异步 参数为 TRUE 且指定的事件尚未发生,则函数将返回 STATUS_PENDING

NTSTATUS 错误代码的表单和重要性列在 WDK 中提供的 Ntstatus.h 头文件中,并在 WDK 文档中介绍。

注解

此函数没有关联的头文件。 还可以使用 LoadLibraryGetProcAddress 函数动态链接到 Ntdll.dll。

要求

要求 价值
目标平台 Windows操作系统
标头 winternl.h
图书馆 ntdll.lib
DLL ntdll.dll

另请参阅

注册表项安全和访问权限