Partager via


Caractéristiques du fournisseur

Les caractéristiques de 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 en tant qu’objet blob binaire au 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 des caractéristiques de 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éfini 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ères 1 à 127 sont réservés à la définition par Microsoft. Les autres valeurs de type indexées supérieures peuvent être utilisées par les développeurs externes comme ils le voient. Toute personne envisageant 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 noyaus 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, tout 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 de membres. Par exemple, l’activation d’un groupe de fournisseurs avec un mot clé et un niveau donnés permet à toutes les inscriptions de membres de groupes avec ce mot clé et ce niveau.

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

Dans certains cas, le contrôleur de session de suivi peut vouloir exclure quelques fournisseurs de son activation d’un groupe. Pour ce faire, définissez une liste d’interdiction. Une liste d’interdictions est une liste de GUID de fournisseur qui ne seront pas activés en fonction des paramètres de groupe pour une session de journalisation unique. Les listes d’interdiction 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 la même manière que les fournisseurs individuels, il existe quelques exceptions. Voici certaines exceptions :

  • Les groupes de fournisseurs ne peuvent pas être contrôlés par des sessions de suivi privées.
  • Les filtres Nom de l’é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.