Функция 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
Указатель для передачи в качестве аргумента в подпрограмму APC, на которую указывает ApcRoutine . Этот аргумент является обязательным, если ApcRoutine не имеет значение NULL и должен быть приведен к типу PVOID. В противном случае, если ApcRoutine имеет значение NULL, присвойте этому параметру значение NULL.
Значение этого параметра зависит от того, вызывается ли подпрограмма из режима ядра или из пользовательского режима:
Для вызова режима ядра задайте для этого параметра одно из следующих WORK_QUEUE_TYPE значений перечисления:
- CriticalWorkQueue
- DelayedWorkQueue
Для вызова в пользовательском режиме этот параметр указывает на контекст, заданный вызывающим объектом, для подпрограммы APC.
[out] IoStatusBlock
Указатель на структуру IO_STATUS_BLOCK , содержащую конечное состояние и сведения об операции. Для успешных вызовов, возвращающих данные, количество байтов, записанных в Buffer, предоставляется в IoStatusBlock-Information>.
[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 (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по