RegisterTraceGuidsA-Funktion (evntrace.h)

Die RegisterTraceGuids--Funktion registriert einen Klassischen (Windows 2000-Stil) ETW-Ereignisablaufverfolgungsanbieter und die Ereignisablaufverfolgungsklassen, die zum Generieren von Ereignissen verwendet werden. Diese Funktion gibt auch die Rückruffunktion an, die das System verwendet, um die Ablaufverfolgung vom Anbieter zu aktivieren und zu deaktivieren.

Diese Funktion ist veraltet. Neuer Code sollte EventRegister- verwenden, um einen ETW-Ereignisablaufverfolgungsanbieter im Windows Vista-Stil (Crimson) zu registrieren.

Syntax

ULONG WMIAPI RegisterTraceGuidsA(
  [in]      WMIDPREQUEST             RequestAddress,
  [in]      PVOID                    RequestContext,
  [in]      LPCGUID                  ControlGuid,
  [in]      ULONG                    GuidCount,
  [in, out] PTRACE_GUID_REGISTRATION TraceGuidReg,
  [in]      LPCSTR                   MofImagePath,
  [in]      LPCSTR                   MofResourceName,
  [out]     TRACEGUID_HANDLE         *RegistrationHandle
);

Parameter

[in] RequestAddress

Zeiger auf eine ControlCallback--Funktion, die Benachrichtigung empfängt, wenn der Anbieter durch eine Ereignisablaufverfolgungssitzung aktiviert oder deaktiviert wird. Die EnableTrace--Funktion löst diesen Rückruf aus.

[in] RequestContext

Zeiger auf einen optionalen vom Anbieter definierten Kontext, den ETW an die durch RequestAddressangegebene Funktion übergibt.

[in] ControlGuid

Steuern der GUID (Anbieter-ID) des Registrierensanbieters.

[in] GuidCount

Anzahl der Elemente im TraceGuidReg Array. Wenn TraceGuidReg-NULL-ist, legen Sie diesen Parameter auf 0 fest.

[in, out] TraceGuidReg

Zeiger auf ein Array von
TRACE_GUID_REGISTRATION Strukturen.

Jedes Element identifiziert eine Kategorie von Ereignissen, die der Anbieter bereitstellt.

Bei eingaben enthält das Guid Member jeder Struktur eine vom Registrierenanbieter zugewiesene Ereignisablaufverfolgungsklassen-GUID. Die Klassen-GUID identifiziert eine Kategorie von Ereignissen, die der Anbieter bereitstellt. Anbieter verwenden dieselbe Klassen-GUID, um den GUID-Member von EVENT_TRACE_HEADER festzulegen, wenn die TraceEvent--Funktion zum Protokollieren des Ereignisses aufgerufen wird.

Bei der Ausgabe empfängt das RegHandle- Mitglied ein Handle für die Klassen-GUID-Registrierung des Ereignisses. Wenn der Anbieter die TraceEventInstance--Funktion aufruft, verwenden Sie das RegHandle- Mitglied der TRACE_GUID_REGISTRATION, um das RegHandle- Mitglied von EVENT_INSTANCE_HEADERfestzulegen.

Dieser Parameter kann NULL- werden, wenn der Anbieter nur die TraceEvent--Funktion aufruft, um Ereignisse zu protokollieren. Wenn der Anbieter die TraceEventInstance--Funktion aufruft, um Ereignisse zu protokollieren, kann dieser Parameter nicht NULL-werden.

[in] MofImagePath

Dieser Parameter wird nicht unterstützt. Wird auf NULL-festgelegt. Sie sollten Mofcomp.exe verwenden, um die MOF-Ressource während des Setups Ihrer Anwendung zu registrieren. Weitere Informationen finden Sie unter Veröffentlichen des Ereignisschemas.

Windows XP mit SP1, Windows XP und Windows 2000: Zeiger auf eine optionale Zeichenfolge, die den Pfad der DLL oder des ausführbaren Programms angibt, die die durch MofResourceNameangegebene Ressource enthält. Dieser Parameter kann NULL- werden, wenn der Ereignisanbieter und der Consumer einen anderen Mechanismus verwenden, um Informationen zu den vom Anbieter verwendeten Ereignisablaufverfolgungsklassen zu teilen.

[in] MofResourceName

Dieser Parameter wird nicht unterstützt. Wird auf NULL-festgelegt. Sie sollten Mofcomp.exe verwenden, um die MOF-Ressource während des Setups Ihrer Anwendung zu registrieren. Weitere Informationen finden Sie unter Veröffentlichen des Ereignisschemas.

Windows XP mit SP1, Windows XP und Windows 2000: Zeiger auf eine optionale Zeichenfolge, die die Zeichenfolgenressource von MofImagePathangibt. Die Zeichenfolgenressource enthält den Namen der binären MOF-Datei, die die vom Anbieter unterstützten Ereignisablaufverfolgungsklassen beschreibt.

[out] RegistrationHandle

Empfängt das Registrierungshandle des Anbieters. Verwenden Sie das zurückgegebene Handle, wenn Sie die funktion UnregisterTraceGuids aufrufen.

Wichtig

Alle von einer DLL oder einem Treiber erstellten Registrierungshandles müssen vor dem Entladen der DLL oder des Treibers aufgehoben werden. Wenn die Registrierung des Anbieters nicht aufgehoben wird, tritt ein Absturz auf, wenn ETW versucht, den Rückruf des Anbieters aufzurufen.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.

Wenn die Funktion fehlschlägt, ist der Rückgabewert einer der Systemfehlercodes. Im Folgenden finden Sie einige häufige Fehler und deren Ursachen.

Wichtig

 Diese Funktion kann auch den von ControlCallback zurückgegebenen Wert zurückgeben, wenn ein Controller EnableTrace- aufruft, um den Anbieter zu aktivieren, und der Anbieter hat noch nicht RegisterTraceGuidsaufgerufen. In diesem Fall gibt RegisterTraceGuids den Rückgabewert des Rückrufs zurück, wenn die Registrierung erfolgreich war.

  • ERROR_INVALID_PARAMETER

    Eine der folgenden Punkte ist wahr:

    • RequestAddress- ist NULL-.
    • ControlGuid ist NULL-.
    • RegistrationHandle ist NULL-.

    Windows XP und Windows 2000:TraceGuidReg- ist NULL- oder GuidCount- kleiner oder gleich Null ist.

Bemerkungen

Anmerkung

Die meisten Entwickler rufen diese Funktion nicht direkt auf. Stattdessen verwenden Entwickler in der Regel ein ETW-Framework. Beispielsweise verwaltet TMF-basierte WPP die Aufrufe von RegisterTraceGuids, TraceMessage-und UnregisterTraceGuids- in Ihrem Auftrag.

Diese Funktion öffnet ein Classic (Windows 2000-Style)-Ereignisanbieterhandle, das zum Schreiben von MOF- und TMF-basierten WPP ETW-Ereignissen über TraceEvent-, TraceEventInstance, TraceMessageund TraceMessageVaverwendet werden kann.

Anmerkung

Zum Öffnen eines Windows Vista--Anbieters, das manifestbasierte oder TraceLogging-basierte ETW-Ereignisse über EventWrite-schreibt, verwenden Sie EventRegister.

Wenn die ControlGuid- des Anbieters zuvor registriert und aktiviert wurde, werden nachfolgende Registrierungen, die auf das gleiche ControlGuid- verweisen, automatisch aktiviert.

Ein Prozess kann bis zu 1.024 Anbieter-GUIDs registrieren. Sie sollten jedoch die Anzahl der Anbieter beschränken, die Ihr Prozess auf ein oder zwei registriert. Dieser Grenzwert umfasst diejenigen, die mit dieser Funktion registriert wurden, und die EventRegister--Funktion.

Vor Windows Vista: Es gibt keine Beschränkung auf die Anzahl der Anbieter, die ein Prozess registrieren kann.

Beispiele

Ein Beispiel, das RegisterTraceGuidsverwendet, finden Sie unter Writing Classic Events.

Anmerkung

Der evntrace.h-Header definiert RegisterTraceGuids als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [Desktop-Apps | UWP-Apps]
mindestens unterstützte Server- Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform- Fenster
Header- evntrace.h
Library Sechost.lib unter Windows 8.1 und Windows Server 2012 R2; Advapi32.lib unter Windows 8, Windows Server 2012, Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista und Windows XP
DLL- Sechost.dll unter Windows 8.1 und Windows Server 2012 R2; Advapi32.dll unter Windows 8, Windows Server 2012, Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista und Windows XP

Siehe auch

EnableTrace-

UnregisterTraceGuids-