Função ZwNotifyChangeKey (ntifs.h)
A rotina ZwNotifyChangeKey permite que um driver solicite notificação quando uma chave do Registro é alterada.
Sintaxe
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
);
Parâmetros
[in] KeyHandle
Manipule para a chave para a qual registrar uma rotina de notificação. Esse identificador é criado por uma chamada bem-sucedida para ZwCreateKey ou ZwOpenKey. O chamador deve ter especificado KEY_NOTIFY acesso.
[in, optional] Event
Identificador opcional para um evento criado pelo chamador a ser definido como o estado Sinalizado quando a operação for concluída. Se não for NULL, o chamador será colocado em um estado de espera até que a operação seja bem-sucedida, momento em que o evento é definido como o estado Sinalizado.
[in, optional] ApcRoutine
Ponteiro para uma rotina de APC fornecida pelo chamador a ser executada após a conclusão da operação. Esse parâmetro é opcional e pode ser NULL.
[in, optional] ApcContext
Ponteiro para passar como um argumento para a rotina APC para a qual a ApcRoutine aponta. Esse argumento será necessário se ApcRoutine não for NULL e deverá ser convertido no tipo PVOID. Caso contrário, se ApcRoutine for NULL, defina esse parâmetro como NULL também.
O significado desse parâmetro depende se a rotina é chamada do modo kernel ou do modo de usuário:
Para uma chamada no modo kernel, defina esse parâmetro como um dos seguintes valores de enumeração WORK_QUEUE_TYPE :
- CriticalWorkQueue
- DelayedWorkQueue
Para uma chamada no modo de usuário, esse parâmetro aponta para um contexto especificado pelo chamador para a rotina de APC.
[out] IoStatusBlock
Ponteiro para uma estrutura IO_STATUS_BLOCK que contém o status final e informações sobre a operação. Para chamadas bem-sucedidas que retornam dados, o número de bytes gravados no Buffer é fornecido em IoStatusBlock-Information>.
[in] CompletionFilter
Máscara de bits de operações que fazem com que o driver seja notificado. Especifique um ou mais dos seguintes sinalizadores:
Valor | Significado |
---|---|
REG_NOTIFY_CHANGE_NAME | Notifique o chamador se uma subchave for adicionada ou excluída. |
REG_NOTIFY_CHANGE_ATTRIBUTES | Notifique o chamador de alterações nos atributos da chave, como as informações do descritor de segurança. |
REG_NOTIFY_CHANGE_LAST_SET | Notifique o chamador de alterações para um valor da chave. Isso pode incluir a adição ou exclusão de um valor ou a alteração de um valor existente. (O chamador não receberá nenhuma notificação se o novo valor gravado na chave corresponder ao valor anterior da chave.) |
REG_NOTIFY_CHANGE_SECURITY | Notifique o chamador de alterações ao descritor de segurança da chave. |
[in] WatchTree
Se TRUE, o driver será notificado sobre alterações em todas as subchaves da chave especificada. Se FALSE, o driver só será notificado para alterações na chave especificada.
[out, optional] Buffer
Reservado. Especifique NULL.
[in] BufferSize
Reservado. Especifique zero.
[in] Asynchronous
Se FALSE, a rotina não retornará até que o evento especificado ocorra. Se TRUE, a rotina retornará imediatamente.
Retornar valor
A rotina ZwNotifyChangeKey retorna STATUS_SUCCESS com êxito ou o valor NTSTATUS apropriado, caso contrário. Se o chamador especificar TRUE para o parâmetro Assíncrono e o evento ainda não tiver ocorrido, a rotina retornará STATUS_PENDING.
Comentários
Se a chamada para a função ZwNotifyChangeKey ocorrer no modo de usuário, você deverá usar o nome "NtNotifyChangeKey" em vez de "ZwNotifyChangeKey".
Para chamadas de drivers no modo kernel, as versões NtXxx e ZwXxx de uma rotina dos Serviços do Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclua Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |