ZwNotifyChangeKey-Funktion (ntifs.h)

Die ZwNotifyChangeKey-Routine ermöglicht es einem Treiber, eine Benachrichtigung anzufordern, wenn sich ein Registrierungsschlüssel ändert.

Syntax

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

Parameter

[in] KeyHandle

Handle mit dem Schlüssel, für den eine Benachrichtigungsroutine registriert werden soll. Dieses Handle wird durch einen erfolgreichen Aufruf von ZwCreateKey oder ZwOpenKey erstellt. Der Aufrufer muss KEY_NOTIFY Zugriff angegeben haben.

[in, optional] Event

Optionales Handle für ein vom Aufrufer erstelltes Ereignis, das nach Abschluss des Vorgangs auf den Signalzustand festgelegt werden soll. Wenn nicht NULL, wird der Aufrufer in einen Wartezustand versetzt, bis der Vorgang erfolgreich ist. Zu diesem Zeitpunkt wird das Ereignis auf den Signalzustand festgelegt.

[in, optional] ApcRoutine

Zeiger auf eine vom Aufrufer bereitgestellte APC-Routine, die nach Abschluss des Vorgangs ausgeführt werden soll. Dieser Parameter ist optional und kann NULL sein.

[in, optional] ApcContext

Zeiger, der als Argument an die APC-Routine übergeben soll, auf die ApcRoutine verweist. Dieses Argument ist erforderlich, wenn ApcRoutine nicht NULL ist und in den Typ PVOID umgewandelt werden muss. Wenn ApcRoutine NULL ist, legen Sie diesen Parameter andernfalls ebenfalls auf NULL fest.

Die Bedeutung dieses Parameters hängt davon ab, ob die Routine aus dem Kernelmodus oder aus dem Benutzermodus aufgerufen wird:

  • Legen Sie für einen Kernelmodusaufruf diesen Parameter auf einen der folgenden WORK_QUEUE_TYPE-Enumerationswerte fest:

    • CriticalWorkQueue
    • DelayedWorkQueue
  • Bei einem Benutzermodusaufruf verweist dieser Parameter auf einen vom Aufrufer angegebenen Kontext für die APC-Routine.

[out] IoStatusBlock

Zeiger auf eine IO_STATUS_BLOCK-Struktur, die die endgültige status und Informationen zum Vorgang enthält. Für erfolgreiche Aufrufe, die Daten zurückgeben, wird die Anzahl der in Buffer geschriebenen Bytes in IoStatusBlock-Information> angegeben.

[in] CompletionFilter

Bitmaske von Vorgängen, die dazu führen, dass der Treiber benachrichtigt wird. Geben Sie mindestens eins der folgenden Flags an:

Wert Bedeutung
REG_NOTIFY_CHANGE_NAME Benachrichtigen Sie den Aufrufer, wenn ein Unterschlüssel hinzugefügt oder gelöscht wird.
REG_NOTIFY_CHANGE_ATTRIBUTES Benachrichtigen Sie den Aufrufer über Änderungen an den Attributen des Schlüssels, z. B. die Sicherheitsbeschreibungsinformationen.
REG_NOTIFY_CHANGE_LAST_SET Benachrichtigen Sie den Aufrufer über Änderungen an einem Wert des Schlüssels. Dies kann das Hinzufügen oder Löschen eines Werts oder das Ändern eines vorhandenen Werts umfassen. (Der Aufrufer erhält keine Benachrichtigung, wenn der in den Schlüssel geschriebene neue Wert mit dem vorherigen Wert des Schlüssels übereinstimmt.)
REG_NOTIFY_CHANGE_SECURITY Benachrichtigen Sie den Aufrufer über Änderungen am Sicherheitsdeskriptor des Schlüssels.

[in] WatchTree

True gibt an, dass der Treiber über Änderungen an allen Unterschlüsseln des angegebenen Schlüssels benachrichtigt wird. Bei FALSE wird der Treiber nur bei Änderungen am angegebenen Schlüssel benachrichtigt.

[out, optional] Buffer

Reserviert. Geben Sie NULL an.

[in] BufferSize

Reserviert. Geben Sie null an.

[in] Asynchronous

False gibt die Routine erst zurück, wenn das angegebene Ereignis eintritt. Wenn TRUE, gibt die Routine sofort zurück.

Rückgabewert

Die ZwNotifyChangeKey-Routine gibt STATUS_SUCCESS bei Erfolg oder andernfalls den entsprechenden NTSTATUS-Wert zurück. Wenn der Aufrufer TRUE für den Asynchronous-Parameter angibt und das Ereignis noch nicht aufgetreten ist, gibt die Routine STATUS_PENDING zurück.

Hinweise

Wenn der Aufruf der ZwNotifyChangeKey-Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtNotifyChangeKey" anstelle von "ZwNotifyChangeKey" verwenden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

IO_STATUS_BLOCK

WORK_QUEUE_ITEM

WORK_QUEUE_TYPE

ZwCreateKey

ZwOpenKey