Share via


macro TRACELOGGING_DEFINE_PROVIDER_STORAGE (traceloggingprovider.h)

Riserva l'archiviazione statica per un handle del provider TraceLogging che verrà definito dall'utente. Preferisce TRACELOGGING_DEFINE_PROVIDER su questa macro.

Sintassi

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

Parametri

[in] storageVariable

Nome da usare per la variabile di archiviazione del provider statico, ad esempio MyStaticProviderStorage.

[in] providerName

Valore letterale stringa con il nome del provider TraceLogging. Questo nome deve essere specifico dell'organizzazione e del componente in modo che non sia in conflitto con i provider di altri componenti. Questa stringa di nome verrà inclusa all'interno di ogni evento ETW generato dal provider, quindi provare a usare un nome relativamente breve. Ad esempio, è possibile usare un nome come "MyCompany.MyComponent" o "MyCompany.MyOrganization.MyComponent".

Deve essere un valore letterale stringa. Non usare una variabile.

[in] providerId

GUID controllo ETW per il provider, specificato come elenco delimitato da virgole di 11 interi tra parentesi. Ad esempio, il GUID {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5} verrebbe espresso come (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5).

Sebbene qualsiasi GUID univoco possa essere usato per l'ID provider, Microsoft consiglia di usare un GUID generato dal nome del provider usando l'algoritmo di hash dei nomi ETW. Per informazioni sulla generazione dell'ID del provider, vedere TRACELOGGING_DEFINE_PROVIDER .

[in, optional] __VA_ARGS__

Parametri facoltativi per il provider. La maggior parte dei provider non deve specificare parametri facoltativi.

Se si vuole che il provider sia associato a un gruppo di provider ETW, aggiungere la macro TraceLoggingOptionGroup per specificare il GUID del gruppo del provider. In caso contrario, non specificare parametri __VA_ARGS__ .

Valore restituito

nessuno

Osservazioni

Nella maggior parte dei casi si userà TRACELOGGING_DEFINE_PROVIDER anziché questa macro. In alcuni scenari insoliti, potrebbe essere necessario usare questa macro per allocare l'archiviazione statica per un provider TraceLogging senza dichiarare anche la variabile di handle. Il codice dichiarerà successivamente la variabile handle in base alle esigenze.

TRACELOGGING_DEFINE_PROVIDER_STORAGE dichiarerà una variabile statica con i dati necessari per un provider. È quindi possibile creare un handle prendendo l'indirizzo di questa variabile. Una chiamata di TRACELOGGING_DEFINE_PROVIDER_STORAGE(storageVar, ...) può essere considerata come simile al codice come:

static TraceLoggingProviderState storageVar = { ... };

Esempio di utilizzo:

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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione traceloggingprovider.h

Vedi anche

TRACELOGGING_DECLARE_PROVIDER

TRACELOGGING_DEFINE_PROVIDER

TraceLoggingWrite