Share via


TRACELOGGING_DEFINE_PROVIDER_STORAGE Makro (traceloggingprovider.h)

Reserviert statischen Speicher für ein TraceLogging-Anbieterhandle, das vom Benutzer definiert wird. Bevorzugen Sie TRACELOGGING_DEFINE_PROVIDER diesem Makro.

Syntax

void TRACELOGGING_DEFINE_PROVIDER_STORAGE(
  [in]            storageVariable,
  [in]            providerName,
  [in]            providerId,
  [in, optional]  __VA_ARGS__
);

Parameter

[in] storageVariable

Der Name, der für die Speichervariable des statischen Anbieters verwendet werden soll, z. B. MyStaticProviderStorage.

[in] providerName

Ein Zeichenfolgenliteral mit dem Namen des TraceLogging-Anbieters. Dieser Name sollte spezifisch für Ihre organization und Komponente sein, damit er nicht mit Anbietern aus anderen Komponenten in Konflikt steht. Diese Namenszeichenfolge wird in jedes vom Anbieter generierte ETW-Ereignis eingeschlossen. Versuchen Sie daher, einen relativ kurzen Namen zu verwenden. Sie können beispielsweise einen Namen wie "MyCompany.MyComponent" oder "MyCompany.MyOrganization.MyComponent"verwenden.

Dies muss ein Zeichenfolgenliteral sein. Verwenden Sie keine Variable.

[in] providerId

Die ETW-Steuerelement-GUID für den Anbieter, die als durch Trennzeichen getrennte Liste von 11 ganzen Zahlen in Klammern angegeben wird. Die GUID {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5} würde z. B. als (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5)ausgedrückt werden.

Während eine eindeutige GUID für die Anbieter-ID verwendet werden kann, empfiehlt Microsoft die Verwendung einer GUID, die aus dem Anbieternamen mithilfe des ETW-Namenshashingalgorithmus generiert wird. Informationen zum Generieren der Anbieter-ID finden Sie unter TRACELOGGING_DEFINE_PROVIDER .

[in, optional] __VA_ARGS__

Optionale Parameter für den Anbieter. Die meisten Anbieter müssen keine optionalen Parameter angeben.

Wenn Ihr Anbieter einer ETW-Anbietergruppe zugeordnet werden soll, fügen Sie das Makro TraceLoggingOptionGroup hinzu, um die Gruppen-GUID des Anbieters anzugeben. Geben Sie andernfalls keine __VA_ARGS__ Parameter an.

Rückgabewert

Keine

Bemerkungen

In den meisten Fällen verwenden Sie TRACELOGGING_DEFINE_PROVIDER anstelle dieses Makros. In bestimmten ungewöhnlichen Szenarien müssen Sie dieses Makro möglicherweise verwenden, um statischen Speicher für einen TraceLogging-Anbieter zuzuweisen, ohne auch die Handle-Variable zu deklarieren. Ihr Code deklariert anschließend die Handle-Variable nach Bedarf.

TRACELOGGING_DEFINE_PROVIDER_STORAGE deklarieren eine statische Variable mit den daten, die für einen Anbieter benötigt werden. Sie können dann ein Handle erstellen, indem Sie die Adresse dieser Variablen verwenden. Ein Aufruf von TRACELOGGING_DEFINE_PROVIDER_STORAGE(storageVar, ...) kann als ähnlich wie bei Code betrachtet werden:

static TraceLoggingProviderState storageVar = { ... };

Beispielverwendung:

TRACELOGGING_DEFINE_PROVIDER_STORAGE( // defines static storageVar
    storageVar, // Name of the storage variable
    "MyCompany.MyComponent", // Human-readable name for the provider
    // {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
    (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5));

const TraceLoggingHProvider g_hMyProvider = &storageVar; // Make a handle

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile traceloggingprovider.h

Weitere Informationen

TRACELOGGING_DECLARE_PROVIDER

TRACELOGGING_DEFINE_PROVIDER

TraceLoggingWrite