Dela via


Leverantörsegenskaper

Provideregenskaper är en metod för att koppla mer data till en enskild providerregistrering. De kan användas för manifest- eller spårningsloggningsproviders. Detta inkluderar för närvarande stöd för att lägga till ett providernamn och/eller en providergrupp i en enskild providerregistrering. Fler egenskapstyper kommer sannolikt att läggas till i framtiden. Den här informationen lagras i kerneln som en binär blob av ett angivet format.

Egenskaper kan bara anges en gång för en registrering. Alla ytterligare försök att ange egenskaperna för registreringen misslyckas.

Om du vill ange provideregenskaper på en manifestbaserad provider anropar du funktionen EventSetInformation med informationsklassen EventProviderSetTraits. EventInformation-bufferten bör innehålla en binär blob med följande format:

{
   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
}

Individuella egenskaper bör ha följande format:

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

Från den enskilda egenskapen definieras ETW_PROVIDER_TRAIT_TYPE som:

typedef enum {
    EtwProviderTraitTypeGroup = 1,
    EtwProviderTraitTypeMax
} ETW_PROVIDER_TRAIT_TYPE;

Spårningsloggningsproviders anger automatiskt provideregenskaperna när funktionen TraceLoggingRegister anropas. TraceLogging-providerns namn kommer alltid att ingå i dess egenskaper. En grupp kan anges på en tracelogging-provider med hjälp av TraceLoggingOptionGroup makro i providerdefinitionen.

Anpassade egenskaper

Även om de flesta av de 255 möjliga egenskapstyperna ännu inte har definierats, är egenskapstyperna 1–127 reserverade för definition av Microsoft. De återstående högre indexerade typvärdena kan användas av externa utvecklare som de anser lämpligt. Den som överväger att lägga till sina egna anpassade egenskaper till sin leverantör bör försöka hålla sin totala egenskapsstorlek under 256 byte av följande skäl:

  • Egenskaperna ingår i varje händelse som skrivs för leverantören. Stora egenskaper kan leda till mycket stora loggfiler.
  • Egenskaperna lagras i en icke-sidsidig kernelpool under providerns livslängd.

Providergrupper

En providergrupp är en GUID-definierad kontrollbar entitet ungefär som en provider själv. Den viktigaste skillnaden är att även om ett provider-GUID används för att styra registreringar av bara leverantören, kommer en grupp att kontrollera alla sina medlemsregistreringar. Om du till exempel aktiverar en providergrupp med ett visst nyckelord och en viss nivå aktiveras alla gruppmedlemsregistreringar med det nyckelordet och nivån.

Gruppmedlemskap kan begränsas av behörigheter. Om anroparen för EventSetInformation inte har behörighet att ansluta till den angivna gruppen nekas medlemskap.

I vissa fall kan spårningssessionskontrollanten vilja undanta några leverantörer från dess aktivering av en grupp. Detta kan göras genom att ange en otillåten lista. En otillåten lista är en lista över provider-GUID:er som inte aktiveras baserat på gruppinställningarna för en enda loggningssession. Tillåt inte listor kan ändras dynamiskt med TraceSetInformation och informationsklassen TraceSetDisallowList.

De flesta aktiverade åtgärder kan utföras för providergrupper på ett liknande sätt som enskilda leverantörer, men det finns vissa undantag. Undantag är:

  • Providergrupper kan inte styras av privata spårningssessioner.
  • Filter för händelsenamn, händelse-ID och nyttolast gäller inte för providergrupper eftersom de förutsätter specifik information om en enskild leverantör.