Udostępnij za pośrednictwem


Cechy dostawcy

Cechy dostawcy to metoda dołączania większej ilości danych do rejestracji poszczególnych dostawców. Mogą być one używane dla dostawców opartych na manifeście lub TraceLogging. Obecnie obejmuje to obsługę dodawania nazwy dostawcy i/lub grupy dostawców do rejestracji indywidualnego dostawcy. W przyszłości prawdopodobnie zostanie dodanych więcej typów cech. Te informacje są przechowywane w jądrze jako binarny obiekt blob w formacie zestawu.

Cechy można ustawić tylko raz na potrzeby rejestracji. Wszelkie dalsze próby ustawienia cech tej rejestracji nie powiedzą się.

Aby ustawić cechy dostawcy dla dostawcy opartego na manifeście, wywołaj funkcję EventSetInformation z klasą informacyjną EventProviderSetTraits. Bufor EventInformation powinien zawierać binarny obiekt blob w następującym formacie:

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

Poszczególne cechy powinny mieć następujący format:

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

Z poszczególnych cech ETW_PROVIDER_TRAIT_TYPE jest definiowana jako:

typedef enum {
    EtwProviderTraitTypeGroup = 1,
    EtwProviderTraitTypeMax
} ETW_PROVIDER_TRAIT_TYPE;

Dostawcy tracelogging automatycznie ustawiają cechy dostawcy, gdy wywoływana jest funkcja TraceLoggingRegister. Nazwa dostawcy tracelogging będzie zawsze uwzględniana w jego cechach. Grupę można ustawić dla dostawcy tracelogging przy użyciu makra TraceLoggingOptionGroup w definicji dostawcy.

Cechy niestandardowe

Chociaż większość z 255 możliwych typów cech nie jest jeszcze zdefiniowana, typy cech 1–127 są zarezerwowane dla definicji przez firmę Microsoft. Pozostałe wyższe wartości typu indeksowanego mogą być używane przez deweloperów zewnętrznych, ponieważ są one odpowiednie. Każdy, kto rozważa dodanie własnych cech niestandardowych do dostawcy, powinien spróbować zachować całkowity rozmiar cech poniżej 256 bajtów z następujących powodów:

  • Cechy są uwzględniane w każdym zdarzeń napisanych dla dostawcy. Duże cechy mogą prowadzić do bardzo dużych plików dziennika.
  • Cechy są przechowywane w niestronicowanej puli jądra przez okres istnienia dostawcy.

Grupy dostawców

Grupa dostawców to zdefiniowana przez identyfikator GUID jednostka sterowalna podobnie jak sam dostawca. Kluczową różnicą jest to, że podczas gdy identyfikator GUID dostawcy jest używany do kontrolowania rejestracji tylko jego dostawcy, grupa będzie kontrolować wszystkie jego rejestracje członków. Na przykład włączenie grupy dostawców przy użyciu danego słowa kluczowego i poziomu spowoduje włączenie wszystkich rejestracji członków grupy z tym słowem kluczowym i poziomem.

Członkostwo w grupie może być ograniczone przez uprawnienia. Jeśli obiekt wywołujący EventSetInformation nie ma uprawnień do dołączenia do określonej grupy, członkostwo zostanie odrzucone.

W niektórych przypadkach kontroler sesji śledzenia może chcieć wykluczyć kilku dostawców z jej włączenia grupy. Można to zrobić, ustawiając listę niedozwoloną. Lista niedozwolona to lista identyfikatorów GUID dostawcy, które nie zostaną włączone w oparciu o ustawienia grupy dla jednej sesji rejestrowania. Nie zezwalaj na dynamiczne zmiany list za pomocą TraceSetInformation i klasy informacyjnej TraceSetDisallowList.

Chociaż większość akcji włączania można wykonywać dla grup dostawców w podobny sposób do poszczególnych dostawców, istnieją pewne wyjątki. Wyjątki obejmują:

  • Grupy dostawców nie mogą być kontrolowane przez prywatne sesje śledzenia.
  • Filtry nazwy zdarzenia, identyfikatora zdarzenia i ładunku nie mają zastosowania do grup dostawców, ponieważ zakładają one określone informacje o pojedynczym dostawcy.