Freigeben über


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

Behandeln Sie den Schlüssel, um eine Benachrichtigungsroutine zu registrieren. Dieses Handle wird durch einen erfolgreichen Aufruf von ZwCreateKey oder ZwOpenKeyerstellt. Der Aufrufer muss KEY_NOTIFY Zugriff angegeben haben.

[in, optional] Event

Optionaler Handle für ein vom Aufrufer erstelltes Ereignis, das auf den Signalzustand festgelegt werden soll, wenn der Vorgang abgeschlossen ist. Wenn nicht NULL, wird der Aufrufer in einen Wartezustand versetzt, bis der Vorgang erfolgreich ist, zu dem zeitpunkt, zu dem das Ereignis auf den Zustand "Signaled" festgelegt ist.

[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 werden soll, auf die ApcRoutine verweist. Dieses Argument ist erforderlich, wenn ApcRoutine- nicht NULL ist und in den Typ PVOID gegossen werden muss. Wenn ApcRoutine NULL ist, legen Sie diesen Parameter auch auf NULL fest.

Die Bedeutung dieses Parameters hängt davon ab, ob die Routine aus dem Kernelmodus oder vom 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

Zeigen Sie auf eine IO_STATUS_BLOCK Struktur, die den endgültigen Status und Informationen zum Vorgang enthält. Bei erfolgreichen Aufrufen, die Daten zurückgeben, wird die Anzahl der in Buffer geschriebenen Bytes in IoStatusBlock-->Informationangegeben.

[in] CompletionFilter

Bitmaske von Vorgängen, die dazu führen, dass der Treiber benachrichtigt wird. Geben Sie ein oder mehrere 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 neue Wert, der in den Schlüssel geschrieben wurde, mit dem vorherigen Wert des Schlüssels übereinstimmt.)
REG_NOTIFY_CHANGE_SECURITY Benachrichtigen Sie den Aufrufer über Änderungen an der Sicherheitsbeschreibung des Schlüssels.

[in] WatchTree

Wenn TRUE, wird der Treiber über Änderungen an allen Unterschlüsseln des angegebenen Schlüssels benachrichtigt. Wenn FALSE, wird der Treiber nur für Änderungen am angegebenen Schlüssel benachrichtigt.

[out, optional] Buffer

Reserviert. Geben Sie NULL an.

[in] BufferSize

Reserviert. Geben Sie Null an.

[in] Asynchronous

Wenn FALSE, wird die Routine erst zurückgegeben, wenn das angegebene Ereignis auftritt. Wenn WAHR, wird die Routine sofort zurückgegeben.

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 parameter Asynchronous angibt und das Ereignis noch nicht aufgetreten ist, gibt die Routine STATUS_PENDING zurück.

Bemerkungen

Wenn der Aufruf der ZwNotifyChangeKey--Funktion im Benutzermodus auftritt, 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 behandeln und interpretieren. Weitere Informationen zur Beziehung zwischen den NtXxx und ZwXxx- Versionen einer Routine finden Sie unter Using Nt and Zw Versions of the Native System Services Routines.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Siehe auch

IO_STATUS_BLOCK

WORK_QUEUE_ITEM

WORK_QUEUE_TYPE

ZwCreateKey-

ZwOpenKey-