Compartilhar via


Função ZwNotifyChangeKey (ntifs.h)

A rotina de 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 de APC que a ApcRoutine aponta para. Esse argumento será necessário se ApcRoutine não for NULL e precisar ser convertido para digitar 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 do APC.

[out] IoStatusBlock

Ponteiro para uma estrutura de 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 no 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 adicionar ou excluir um valor ou alterar 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 no 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 VERDADEIRO, a rotina retornará imediatamente.

Valor de retorno

A rotina de 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.

Observações

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 versões de uma rotina dos Serviços de 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 de serviços do sistema nativo.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000
da Plataforma de Destino Universal
cabeçalho ntifs.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte também

IO_STATUS_BLOCK

WORK_QUEUE_ITEM

WORK_QUEUE_TYPE

ZwCreateKey

ZwOpenKey