Compartilhar via


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)

Confira também

IO_STATUS_BLOCK

WORK_QUEUE_ITEM

WORK_QUEUE_TYPE

ZwCreateKey

ZwOpenKey