ZwNotifyChangeKey 函数 (ntifs.h)
ZwNotifyChangeKey 例程允许驱动程序在注册表项更改时请求通知。
语法
NTSYSAPI NTSTATUS ZwNotifyChangeKey(
[in] HANDLE KeyHandle,
[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] KeyHandle
要为其注册通知例程的密钥句柄。 此句柄是通过成功调用 ZwCreateKey 或 ZwOpenKey创建的。 调用方必须指定KEY_NOTIFY访问权限。
[in, optional] Event
在操作完成时,调用方创建的事件的可选句柄设置为 Signaled 状态。 如果不是 NULL,则调用方将进入等待状态,直到操作成功,此时事件将设置为 Signaled 状态。
[in, optional] ApcRoutine
指向调用方提供的 APC 例程的指针,该例程在操作完成后运行。 此参数是可选的,可以是 NULL。
[in, optional] ApcContext
指向 ApcRoutine 指向的 APC 例程的参数的指针。 如果 ApcRoutine 不为 NULL,并且必须强制转换为 PVOID 类型,则此参数是必需的。 否则,如果 ApcRoutine 为 NULL,则此参数也设置为 NULL。
此参数的含义取决于例程是从内核模式还是从用户模式调用:
对于内核模式调用,请将此参数设置为以下 WORK_QUEUE_TYPE 枚举值之一:
- CriticalWorkQueue
- DelayedWorkQueue
对于用户模式调用,此参数指向 APC 例程的调用方指定的上下文。
[out] IoStatusBlock
指向包含最终状态和操作信息 IO_STATUS_BLOCK 结构的指针。 对于返回数据的成功调用,IoStatusBlock中提供了写入 Buffer 的字节数 ->信息。
[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
如果为 FALSE,则在发生指定事件之前,例程不会返回。 如果为 TRUE,则例程会立即返回。
返回值
ZwNotifyChangeKey 例程返回成功时STATUS_SUCCESS,否则返回相应的 NTSTATUS 值。 如果调用方为 异步 参数指定 TRUE,并且尚未发生该事件,则例程将返回STATUS_PENDING。
言论
如果在用户模式下调用 ZwNotifyChangeKey 函数,则应使用名称“NtNotifyChangeKey”而不是“ZwNotifyChangeKey”。
对于内核模式驱动程序的调用,NtXxx 和 ZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxx 与 ZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 |
目标平台 | 普遍 |
标头 | ntifs.h (include Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDIS(storport),PowerIrpDDis(wdm) |