Partager via


Fonction ZwNotifyChangeKey (ntifs.h)

La routine ZwNotifyChangeKey permet à un pilote de demander une notification lorsqu’une clé de Registre change.

Syntaxe

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

Paramètres

[in] KeyHandle

Gérez la clé pour laquelle inscrire une routine de notification. Ce handle est créé par un appel réussi à ZwCreateKey ou ZwOpenKey. L’appelant doit avoir spécifié KEY_NOTIFY accès.

[in, optional] Event

Handle facultatif pour un événement créé par l’appelant à définir l’état Signaled une fois l’opération terminée. S’il n’est pas NULL, l’appelant est placé dans un état d’attente jusqu’à ce que l’opération réussisse, à ce moment-là, l’événement est défini sur l’état Signaled.

[in, optional] ApcRoutine

Pointeur vers une routine APC fournie par l’appelant à exécuter une fois l’opération terminée. Ce paramètre est facultatif et peut être NULL.

[in, optional] ApcContext

Pointeur pour passer en tant qu’argument à la routine APC vers laquelle ApcRoutine pointe. Cet argument est obligatoire si ApcRoutine n’a pas la valeur NULL et doit être converti en type PVOID. Sinon, si ApcRoutine a la valeur NULL, définissez également ce paramètre sur NULL.

La signification de ce paramètre dépend si la routine est appelée à partir du mode noyau ou du mode utilisateur :

  • Pour un appel en mode noyau, définissez ce paramètre sur l’une des valeurs d’énumération WORK_QUEUE_TYPE suivantes :

    • CriticalWorkQueue
    • DelayedWorkQueue
  • Pour un appel en mode utilisateur, ce paramètre pointe vers un contexte spécifié par l’appelant pour la routine APC.

[out] IoStatusBlock

Pointeur vers une structure de IO_STATUS_BLOCK qui contient la status finale et des informations sur l’opération. Pour les appels réussis qui retournent des données, le nombre d’octets écrits dans Buffer est fourni dans IoStatusBlock-Information>.

[in] CompletionFilter

Masque de bits des opérations qui entraînent la notification du pilote. Spécifiez un ou plusieurs des indicateurs suivants :

Valeur Signification
REG_NOTIFY_CHANGE_NAME Informez l’appelant si une sous-clé est ajoutée ou supprimée.
REG_NOTIFY_CHANGE_ATTRIBUTES Informez l’appelant des modifications apportées aux attributs de la clé, telles que les informations de descripteur de sécurité.
REG_NOTIFY_CHANGE_LAST_SET Informez l’appelant des modifications apportées à une valeur de la clé. Cela peut inclure l’ajout ou la suppression d’une valeur, ou la modification d’une valeur existante. (L’appelant ne reçoit aucune notification si la nouvelle valeur écrite sur la clé correspond à la valeur précédente de la clé.)
REG_NOTIFY_CHANGE_SECURITY Informez l’appelant des modifications apportées au descripteur de sécurité de la clé.

[in] WatchTree

Si la valeur est TRUE, le pilote est informé des modifications apportées à toutes les sous-clés de la clé spécifiée. Si la valeur est FALSE, le pilote est averti uniquement des modifications apportées à la clé spécifiée.

[out, optional] Buffer

Réservé. Spécifiez NULL.

[in] BufferSize

Réservé. Spécifiez zéro.

[in] Asynchronous

Si la valeur est FALSE, la routine ne retourne pas tant que l’événement spécifié ne se produit pas. Si la valeur est TRUE, la routine retourne immédiatement.

Valeur retournée

La routine ZwNotifyChangeKey retourne STATUS_SUCCESS en cas de réussite, ou la valeur NTSTATUS appropriée dans le cas contraire. Si l’appelant spécifie TRUE pour le paramètre asynchrone et que l’événement ne s’est pas encore produit, la routine retourne STATUS_PENDING.

Remarques

Si l’appel à la fonction ZwNotifyChangeKey se produit en mode utilisateur, vous devez utiliser le nom « NtNotifyChangeKey » au lieu de « ZwNotifyChangeKey ».

Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Utilisation des versions Nt et Zw des routines des services système natifs.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport),PowerIrpDDis(wdm)

Voir aussi

IO_STATUS_BLOCK

WORK_QUEUE_ITEM

WORK_QUEUE_TYPE

ZwCreateKey

ZwOpenKey