Funzione ZwNotifyChangeKey (ntifs.h)

La routine ZwNotifyChangeKey consente a un driver di richiedere la notifica quando viene modificata una chiave del Registro di sistema.

Sintassi

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
);

Parametri

[in] KeyHandle

Gestire la chiave per cui registrare una routine di notifica. Questo handle viene creato da una chiamata riuscita a ZwCreateKey o ZwOpenKey. Il chiamante deve avere specificato KEY_NOTIFY accesso.

[in, optional] Event

Handle facoltativo per un evento creato dal chiamante da impostare sullo stato Segnalato al termine dell'operazione. Se non è NULL, il chiamante viene inserito in uno stato di attesa fino a quando l'operazione non riesce, al momento in cui l'evento viene impostato sullo stato Segnalato.

[in, optional] ApcRoutine

Puntatore a una routine APC fornita dal chiamante da eseguire al termine dell'operazione. Questo parametro è facoltativo e può essere NULL.

[in, optional] ApcContext

Puntatore a cui passare come argomento la routine APC a cui punta ApcRoutine . Questo argomento è obbligatorio se ApcRoutine non è NULL e deve essere eseguito il cast al tipo PVOID. In caso contrario, se ApcRoutine è NULL, impostare anche questo parametro su NULL.

Il significato di questo parametro dipende dal fatto che la routine venga chiamata dalla modalità kernel o dalla modalità utente:

  • Per una chiamata in modalità kernel, impostare questo parametro su uno dei valori di enumerazione seguenti WORK_QUEUE_TYPE :

    • CriticalWorkQueue
    • DelayedWorkQueue
  • Per una chiamata in modalità utente, questo parametro punta a un contesto specificato dal chiamante per la routine APC.

[out] IoStatusBlock

Puntatore a una struttura IO_STATUS_BLOCK che contiene lo stato finale e le informazioni sull'operazione. Per le chiamate riuscite che restituiscono dati, il numero di byte scritti in Buffer viene fornito in IoStatusBlock-Information>.

[in] CompletionFilter

Maschera di bit delle operazioni che causano la notifica del driver. Specificare uno o più dei flag seguenti:

Valore Significato
REG_NOTIFY_CHANGE_NAME Notificare al chiamante se una sottochiave viene aggiunta o eliminata.
REG_NOTIFY_CHANGE_ATTRIBUTES Notificare al chiamante le modifiche apportate agli attributi della chiave, ad esempio le informazioni sul descrittore di sicurezza.
REG_NOTIFY_CHANGE_LAST_SET Notificare al chiamante le modifiche apportate a un valore della chiave. Ciò può includere l'aggiunta o l'eliminazione di un valore o la modifica di un valore esistente. Il chiamante non riceve alcuna notifica se il nuovo valore scritto nella chiave corrisponde al valore precedente della chiave.
REG_NOTIFY_CHANGE_SECURITY Notificare al chiamante le modifiche apportate al descrittore di sicurezza della chiave.

[in] WatchTree

Se TRUE, il driver riceve una notifica sulle modifiche apportate a tutte le sottochiavi della chiave specificata. Se FALSE, il driver riceve una notifica solo per le modifiche apportate alla chiave specificata.

[out, optional] Buffer

Riservato. Specificare NULL.

[in] BufferSize

Riservato. Specificare zero.

[in] Asynchronous

Se FALSE, la routine non restituisce finché non si verifica l'evento specificato. Se TRUE, la routine restituisce immediatamente.

Valore restituito

La routine ZwNotifyChangeKey restituisce STATUS_SUCCESS in caso di esito positivo o il valore NTSTATUS appropriato in caso contrario. Se il chiamante specifica TRUE per il parametro Asincrono e l'evento non si è ancora verificato, la routine restituisce STATUS_PENDING.

Commenti

Se la chiamata alla funzione ZwNotifyChangeKey viene eseguita in modalità utente, è necessario usare il nome "NtNotifyChangeKey" anziché "ZwNotifyChangeKey".

Per le chiamate da driver in modalità kernel, le versioni NtXxx e ZwXxx di una routine di Servizi di sistema nativi di Windows possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Using Nt and Zw Versions of the Native System Services Routines .For more information about the Nt Xxx and Zw versions of the Native System Services Routines.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regole di conformità DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Vedi anche

IO_STATUS_BLOCK

WORK_QUEUE_ITEM

WORK_QUEUE_TYPE

ZwCreateKey

ZwOpenKey