EtwRegister-Funktion (wdm.h)
Die EtwRegister-Funktion registriert den Ereignisanbieter und muss aufgerufen werden, bevor ein Anbieter mit der Ablaufverfolgung beginnen kann. Die EtwRegister-Funktion ist das Kernelmodus-Pendant zur EventRegister-Funktion des Benutzermodus. Die Funktion kann auch einen Zeiger auf eine optionale Rückruffunktion bereitstellen, die verwendet werden kann, um zusätzliche Funktionen zur Ereignisfilterung bereitzustellen.
Syntax
NTSTATUS EtwRegister(
[in] LPCGUID ProviderId,
[in, optional] PETWENABLECALLBACK EnableCallback,
[in, optional] PVOID CallbackContext,
[out] PREGHANDLE RegHandle
);
Parameter
[in] ProviderId
Ein Zeiger auf die Ereignisanbieter-GUID.
[in, optional] EnableCallback
Ein Zeiger auf eine optionale Rückruffunktion. Die Rückruffunktion bietet zusätzliche Funktionen zur Ereignisfilterung. Die Rückruffunktion ist benutzerdefinierter.
[in, optional] CallbackContext
Die Funktion übergibt den optionalen Rückrufkontext, wenn ein Rückruf erfolgt. Sie können den optionalen Kontext angeben, wenn Sie einen Anbieter registrieren. Der Parameter CallbackContext unterstützt die Szenarien, in denen ein Rückruf von mehreren Anbietern gemeinsam genutzt wird, wie in einer C++-Klasse. CallbackContext bietet eine Möglichkeit, die Zielanbieterinstanzen für den Aktivierungsrückruf zu unterscheiden.
[out] RegHandle
Ein Zeiger auf eine Variable, die das Anbieterregistrierungshandle empfängt, wenn der Funktionsaufruf erfolgreich ist.
Rückgabewert
Die EtwRegister-Funktion gibt einen status Code aus der folgenden Liste zurück:
Rückgabecode | Beschreibung |
---|---|
|
Gibt an, dass der Ereignisanbieter erfolgreich bei ETW registriert wurde. |
|
Gibt an, dass der Parameter ungültig war. |
|
Gibt an, dass die Anforderung aus dem durch den NTSTATUS-Wert angegebenen Grund fehlgeschlagen ist. Ausführliche Informationen zum tatsächlichen status Rückgabecode finden Sie unter Ntstatus.h. |
Hinweise
Bevor ein Kernelmodustreiber Ereignisse nachverfolgen kann, muss sich der Treiber mit der EtwRegister-Funktion als Ereignisanbieter registrieren. Wenn ein Kernelmodustreiber EtwRegister aufruft, gibt die Funktion ein Registrierungshandle zurück. Dieses Registrierungshandle kann verwendet werden, um zu testen, ob ein Schlüsselwort (keyword) oder eine Ebene für einen bestimmten Anbieter aktiviert ist, und um Ereignisablaufverfolgungs- und Protokollierungsfunktionen aufzurufen. Nach Abschluss der Ablaufverfolgung muss ein Treiber die EtwUnregister-Funktion aufrufen, um die Registrierung des Anbieters aufzuheben. Für jeden Aufruf von EtwRegister muss ein entsprechender Aufruf von EtwUnregister vorhanden sein. Wenn die Registrierung des Ereignisanbieters nicht aufgehoben wird, kann dies zu Fehlern führen, wenn der Prozess entladen wird, da die dem Prozess zugeordneten Rückruffunktionen nicht mehr gültig sind. Es sollten keine Ablaufverfolgungsaufrufe ausgeführt werden, die außerhalb des Codes liegen, der durch die Funktionen EtwRegister und EtwUnregister begrenzt ist. Um eine optimale Leistung zu erzielen, können Sie die EtwRegister-Funktion in Ihrer DriverEntry-Routine und die EtwUnregister-Funktion in Ihrer DriverUnload-Routine aufrufen.
Aufrufer von EtwRegister müssen unter IRQL = PASSIVE_LEVEL im Kontext eines Systemthreads ausgeführt werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Vista und späteren Windows-Versionen. |
Zielplattform | Universell |
Header | wdm.h (include Wdm.h, Ntddk.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für