Partager via


Caractéristiques du fournisseur

Les caractéristiques du fournisseur sont une méthode permettant d’attacher davantage de données à une inscription de fournisseur individuelle. Ils peuvent être utilisés pour les fournisseurs basés sur un manifeste ou TraceLogging. Cela inclut actuellement la prise en charge de l’ajout d’un nom de fournisseur et/ou d’un groupe de fournisseurs à une inscription de fournisseur individuelle. D’autres types de caractéristiques sont susceptibles d’être ajoutés à l’avenir. Ces informations sont stockées dans le noyau sous la forme d’un objet blob binaire d’un format défini.

Les caractéristiques ne peuvent être définies qu’une seule fois pour une inscription. Toute autre tentative de définition des caractéristiques sur cette inscription échouera.

Pour définir les caractéristiques du fournisseur sur un fournisseur basé sur un manifeste, appelez la fonction EventSetInformation avec la classe d’informations EventProviderSetTraits. La mémoire tampon EventInformation doit contenir un objet blob binaire au format suivant :

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

Les caractéristiques individuelles doivent être au format suivant :

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

À partir de la caractéristique individuelle, ETW_PROVIDER_TRAIT_TYPE est définie comme suit :

typedef enum {
    EtwProviderTraitTypeGroup = 1,
    EtwProviderTraitTypeMax
} ETW_PROVIDER_TRAIT_TYPE;

Les fournisseurs TraceLogging définissent automatiquement les caractéristiques du fournisseur lorsque la fonction TraceLoggingRegister est appelée. Le nom du fournisseur TraceLogging sera toujours inclus dans ses caractéristiques. Un groupe peut être défini sur un fournisseur TraceLogging à l’aide de la macro TraceLoggingOptionGroup dans la définition du fournisseur.

Caractéristiques personnalisées

Bien que la plupart des 255 types de caractéristiques possibles ne soient pas encore définis, les types de caractéristiques 1-127 sont réservés à la définition par Microsoft. Les valeurs de type indexées restantes peuvent être utilisées par les développeurs externes comme ils le voient. Toute personne qui envisage d’ajouter ses propres caractéristiques personnalisées à son fournisseur doit essayer de conserver sa taille totale de caractéristiques inférieure à 256 octets pour les raisons suivantes :

  • Les caractéristiques sont incluses dans chaque événement écrit pour le fournisseur. Les caractéristiques volumineuses peuvent entraîner des fichiers journaux très volumineux.
  • Les caractéristiques sont stockées dans un pool de noyau non paginés pendant la durée de vie du fournisseur.

Groupes de fournisseurs

Un groupe de fournisseurs est une entité contrôlable définie par GUID comme un fournisseur lui-même. La principale différence est qu’un GUID de fournisseur est utilisé pour contrôler les inscriptions de son fournisseur uniquement, un groupe contrôle toutes ses inscriptions membres. Par exemple, l’activation d’un groupe de fournisseurs avec un mot clé et un niveau donnés active toutes les inscriptions de membres de groupes avec ce mot clé et ce niveau.

L’appartenance au groupe peut être limitée par les autorisations. Si l’appelant de EventSetInformation n’a pas les autorisations nécessaires pour rejoindre le groupe spécifié, l’appartenance est refusée.

Dans certains cas, le contrôleur de session de trace peut vouloir exclure quelques fournisseurs de son activation d’un groupe. Pour ce faire, définissez une liste non autorisé. Une liste d’interdictions est une liste de GUID de fournisseur qui ne seront pas activés en fonction des paramètres de groupe d’une session de journalisation unique. Les listes non autorisés peuvent être modifiées dynamiquement avec TraceSetInformation et la classe d’informations TraceSetDisallowList.

Bien que la plupart des actions d’activation puissent être effectuées pour les groupes de fournisseurs de manière similaire à celles des fournisseurs individuels, il existe certaines exceptions. Les exceptions sont les suivantes :

  • Les groupes de fournisseurs ne peuvent pas être contrôlés par des sessions de suivi privées.
  • Les filtres Nom d’événement, ID d’événement et Charge utile ne s’appliquent pas aux groupes de fournisseurs, car ils supposent des informations spécifiques d’un fournisseur individuel.