Freigeben über


Anbietermerkmale

Anbietermerkmale sind eine Methode zum Anfügen weiterer Daten an eine einzelne Anbieterregistrierung. Sie können für manifestbasierte oder TraceLogging-Anbieter verwendet werden. Dies umfasst derzeit Unterstützung für das Hinzufügen eines Anbieternamens und/oder einer Anbietergruppe zu einer registrierung einzelner Anbieter. In Zukunft werden wahrscheinlich weitere Traittypen hinzugefügt. Diese Informationen werden im Kernel als binäres Blob eines Satzformats gespeichert.

Merkmale können nur einmal für eine Registrierung festgelegt werden. Alle weiteren Versuche, die Merkmale für diese Registrierung festzulegen, schlagen fehl.

Rufen Sie zum Festlegen von Providereigenschaften für einen manifestbasierten Anbieter die EventSetInformation- Funktion mit der EventProviderSetTraits-Informationsklasse auf. Der EventInformation-Puffer sollte ein binäres BLOB des folgenden Formats enthalten:

{
   UINT16 TraitsSize   // Total size of the traits including this field
   CHAR[] ProviderName // Null terminated utf-8 provider name
   TRAIT[] Traits      // Zero or more individual traits
}

Individuelle Merkmale sollten im folgenden Format vorliegen:

TRAIT {
      UINT16 TraitSize // Size of this individual trait including this field
      UINT8 Type       // ETW_PROVIDER_TRAIT_TYPE
      BYTE[] Data
      }

Aus der individuellen Eigenschaft wird ETW_PROVIDER_TRAIT_TYPE wie folgt definiert:

typedef enum {
    EtwProviderTraitTypeGroup = 1,
    EtwProviderTraitTypeMax
} ETW_PROVIDER_TRAIT_TYPE;

TraceLogging-Anbieter legen die Anbietereigenschaften automatisch fest, wenn die TraceLoggingRegister--Funktion aufgerufen wird. Der Name des TraceLogging-Anbieters wird immer in seine Merkmale einbezogen. Eine Gruppe kann für einen TraceLogging-Anbieter mithilfe des TraceLoggingOptionGroup Makros in der Anbieterdefinition festgelegt werden.

Benutzerdefinierte Eigenschaften

Obwohl die meisten der 255 möglichen Traittypen noch nicht definiert sind, sind trait-Typen 1-127 für die Definition durch Microsoft reserviert. Die verbleibenden höheren indizierten Typwerte können von externen Entwicklern verwendet werden, wie sie passen. Jeder, der seine eigenen benutzerdefinierten Eigenschaften zu ihrem Anbieter hinzufügt, sollte aus den folgenden Gründen versuchen, seine Gesamtgröße unter 256 Bytes zu halten:

  • Die Eigenschaften sind in jedem Ereignis enthalten, das für den Anbieter geschrieben wurde. Große Merkmale könnten zu sehr großen Protokolldateien führen.
  • Die Eigenschaften werden für die Lebensdauer des Anbieters im nicht seitenseitigen Kernelpool gespeichert.

Anbietergruppen

Eine Anbietergruppe ist eine GUID-definierte steuerbare Entität ähnlich wie ein Anbieter selbst. Der Hauptunterschied besteht darin, dass eine Anbieter-GUID verwendet wird, um Registrierungen nur des Anbieters zu steuern, eine Gruppe steuert jedoch alle Mitgliedsregistrierungen. Wenn Sie beispielsweise eine Anbietergruppe mit einem bestimmten Schlüsselwort und einer bestimmten Ebene aktivieren, werden alle Gruppenmitgliedsregistrierungen mit diesem Schlüsselwort und dieser Ebene aktiviert.

Die Gruppenmitgliedschaft kann durch Berechtigungen eingeschränkt werden. Wenn der Aufrufer von EventSetInformation keine Berechtigungen zum Beitreten zur angegebenen Gruppe hat, wird die Mitgliedschaft verweigert.

In einigen Fällen kann der Ablaufverfolgungssitzungscontroller einige Anbieter von der Aktivierung einer Gruppe ausschließen. Dies kann durch Festlegen einer unzulässigen Liste erfolgen. Eine Unzulässige Liste ist eine Liste von Anbieter-GUIDs, die basierend auf den Gruppeneinstellungen für eine einzelne Protokollierungssitzung nicht aktiviert werden. Listen mit TraceSetInformation und der TraceSetDisallowList-Informationsklasse können dynamisch geändert werden.

Obwohl die meisten Aktivierungsaktionen für Anbietergruppen auf ähnliche Weise wie einzelne Anbieter ausgeführt werden können, gibt es einige Ausnahmen. Zu den Ausnahmen gehören:

  • Anbietergruppen können nicht von privaten Ablaufverfolgungssitzungen gesteuert werden.
  • Ereignisname-, Ereignis-ID- und Nutzlastfilter gelten nicht für Anbietergruppen, da sie bestimmte Informationen eines einzelnen Anbieters annehmen.