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