Функция 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, содержащую окончательное состояние и сведения об операции. Для успешных вызовов, возвращающих данные, число байтов, записанных в буфер буфера, предоставляется в 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
Замечания
Если вызов функции ZwNotifyChangeKey происходит в пользовательском режиме, следует использовать имя "NtNotifyChangeKey" вместо "ZwNotifyChangeKey".
Для вызовов драйверов в режиме ядра NtXxx и ZwXxx версии подпрограммы Windows Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 |
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
правил соответствия DDI |