Freigeben über


WPP-Softwareverfolgung

In diesem Abschnitt wird beschrieben, wie Sie den Windows-Softwareablaufverfolgungs-Präprozessor (WPP ) verwenden, um den Betrieb einer Softwarekomponente (Ablaufverfolgungsanbieter) nachzuverfolgen. Ein Ablaufverfolgungsanbieter kann einer der folgenden Sein:

  • Ein Kernelmodustreiber.

  • Ein Benutzermodustreiber, eine Anwendung oder eine DLL (Dynamic Link Library).

Die WPP-Softwareablaufverfolgung ergänzt und verbessert die WMI-Ereignisablaufverfolgung , indem sie Möglichkeiten zur Vereinfachung der Ablaufverfolgung des Ablaufverfolgungsanbieters hinzufügt. Es ist ein effizienter Mechanismus für den Ablaufverfolgungsanbieter, um binärnachrichten in Echtzeit zu protokollieren. Die protokollierten Nachrichten können anschließend in eine lesbare Ablaufverfolgung des Vorgangs des Ablaufverfolgungsanbieters konvertiert werden.

Wann sollten Sie die WPP-Softwareablaufverfolgung verwenden?

Die WPP-Softwareablaufverfolgung ist in erster Linie für das Debuggen von Code während der Entwicklung vorgesehen. Wenn Sie Ereignisse veröffentlichen möchten, die von Anwendungen genutzt werden können, die an strukturierten ETW-Ereignissen interessiert sind, verwenden Sie zusätzlich zur Ablaufverfolgung während der Entwicklung Folgendes:

Weitere Informationen finden Sie unter Wann sollte ich die WPP-Softwareablaufverfolgung oder die ETW-API (Event Tracing for Windows) verwenden?

Die Protokollierung von Nachrichten mit der WPP-Softwareablaufverfolgung ähnelt der Verwendung von Windows-Ereignisprotokollierungsdiensten. Der Treiber protokolliert eine Nachrichten-ID und unformatierte Binärdaten in einer Protokolldatei. Anschließend konvertiert ein Postprozessor die Informationen in der Protokolldatei in ein lesbares Formular. Die WPP-Softwareablaufverfolgung unterstützt jedoch Nachrichtenformate, die leistungsfähiger und flexibler sind als die von den Ereignisprotokollierungsdiensts unterstützten. Die WPP-Softwareablaufverfolgung bietet beispielsweise integrierte Unterstützung für IP-Adressen, GUIDs, System-IDs, Zeitstempel und andere nützliche Datentypen. Darüber hinaus können Benutzer benutzerdefinierte Datentypen hinzufügen, die für ihre Anwendung relevant sind.

Übersicht über den WPP-Softwareablaufverfolgungsprozess

Der grundlegende Prozess zum Hinzufügen der WPP-Softwareablaufverfolgung zu einem Treiber oder einer Anwendung umfasst die folgenden Schritte. Wenn Sie eine der im WDK bereitgestellten Visual Studio-Vorlagen zum Erstellen eines WDF-Treibers verwenden, ist ein Großteil der Arbeit für Sie erledigt.

  • Definieren Sie eine Steuerelement-GUID, die den Treiber oder die Anwendung eindeutig als Ablaufverfolgungsanbieter identifiziert. Der Anbieter gibt diese GUID in seiner Definition des WPP_CONTROL_GUIDS Makros und in einer zugehörigen Steuerelementdatei an, die von Tracelog oder einem anderen Ablaufverfolgungscontroller verwendet wird.

  • Fügen Sie die erforderlichen WPP-bezogenen C-Präprozessordirektiven und WPP-Makroaufrufe zu den Quelldateien des Anbieters hinzu, wie unter Hinzufügen von WPP-Softwareablaufverfolgung zu einem Windows-Treiber und in WPP-Softwareablaufverfolgungsreferenz beschrieben.

  • Ändern Sie das Visual Studio-Projekt, um den WPP-Präprozessor auszuführen und den Treiber zu erstellen, wie in Schritt 6 des Hinzufügens der WPP-Softwareablaufverfolgung zu einem Windows-Treiber beschrieben. Weitere Buildzeitoptionen finden Sie im WPP-Präprozessor .

  • Installieren Sie den Treiber oder die Komponente. Starten Sie eine Ablaufverfolgungssitzung, und zeichnen Sie die Ablaufverfolgungsmeldungen auf. Verwenden Sie die Tools für die Softwareablaufverfolgung, z. B. TraceView, Tracelog, Tracefmt und Tracepdb , um Ablaufverfolgungssitzungen zu konfigurieren, zu starten und zu beenden sowie Ablaufverfolgungsmeldungen anzuzeigen und zu filtern. Diese Tools sind im Windows Driver Kit (WDK) enthalten.

In diesem Abschnitt

Hinweis Ereignisablaufverfolgung für Windows (ETW) und WPP unterstützen die meisten Kernelmodus- und Benutzermodustreiber. ETW und WPP verwenden jedoch Typen, die für bestimmte Treibertypen nicht verfügbar sind, z. B. Miniporttreiber. Um zu ermitteln, ob ein bestimmter Treibertyp unterstützt wird, fügen Sie dem Treiber grundlegende WPP-Makros hinzu, z. B. WPP_INIT_TRACING und WPP_CLEANUP. Wenn der Code nicht kompiliert wird, weil die verwendeten Typen nicht definiert sind, können ETW und WPP den Treibertyp nicht unterstützen.

Weitere Informationen zu ETW finden Sie unter Ereignisablaufverfolgung für Windows.

Hinweis WPP-Ablaufverfolgungsanbieter können jeweils nur durch eine Ablaufverfolgungssitzung aktiviert werden. Weitere Informationen finden Sie unter WPP-Anbieter .

Informationen zur WMI-Bibliotheksunterstützungsroutinen, die die WPP-Softwareablaufverfolgung unterstützen, finden Sie unter:

WmiQueryTraceInformation

WmiTraceMessage

WmiTraceMessageVa