Sağlayıcı Özellikleri
Sağlayıcı Özellikleri, tek bir sağlayıcı kaydına daha fazla veri ekleme yöntemidir. Bunlar bildirim tabanlı veya TraceLogging sağlayıcıları için kullanılabilir. Bu, şu anda tek bir sağlayıcı kaydına Sağlayıcı Adı ve/veya Sağlayıcı Grubu ekleme desteğini içerir. Gelecekte daha fazla özellik türü eklenecektir. Bu bilgiler çekirdekte ayarlanmış biçimde ikili blob olarak depolanır.
Özellikler bir kayıt için yalnızca bir kez ayarlanabilir. Bu kayıtta özellikleri ayarlamaya yönelik diğer girişimler başarısız olur.
Bildirim tabanlı bir sağlayıcıda Sağlayıcı Özelliklerini ayarlamak için EventProviderSetTraits bilgi sınıfıyla EventSetInformation işlevini çağırın. EventInformation arabelleği aşağıdaki biçimde bir ikili blob içermelidir:
{
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
}
Bireysel özellikler aşağıdaki biçimde olmalıdır:
TRAIT {
UINT16 TraitSize // Size of this individual trait including this field
UINT8 Type // ETW_PROVIDER_TRAIT_TYPE
BYTE[] Data
}
Bireysel özelliklerden ETW_PROVIDER_TRAIT_TYPE şöyle tanımlanır:
typedef enum {
EtwProviderTraitTypeGroup = 1,
EtwProviderTraitTypeMax
} ETW_PROVIDER_TRAIT_TYPE;
traceLogging sağlayıcıları, TraceLoggingRegister işlevi çağrıldığında Sağlayıcı Özelliklerini otomatik olarak ayarlar. TraceLogging sağlayıcısının adı her zaman özelliklerine dahil edilecek. Bir grup, sağlayıcı tanımındaki TraceLoggingOptionGroupmakrokullanılarak bir TraceLogging sağlayıcısında ayarlanabilir.
Özel Özellikler
255 olası özellik türünün çoğu henüz tanımlanmamış olsa da, 1-127 özellik türleri Microsoft tarafından tanım için ayrılmıştır. Kalan daha yüksek dizinli tür değerleri, dış geliştiriciler tarafından uygun gördükleri şekilde kullanılabilir. Sağlayıcısına kendi özel özelliklerini eklemeyi düşünen herkes, aşağıdaki nedenlerle toplam özellik boyutunu 256 bayt altında tutmaya çalışmalıdır:
- Özellikler sağlayıcı için yazılan her olaya dahil edilir. Büyük özellikler çok büyük günlük dosyalarına yol açabilir.
- Özellikler, sağlayıcının ömrü boyunca sayfalanmamış çekirdek havuzunda depolanır.
Sağlayıcı Grupları
Sağlayıcı grubu, sağlayıcının kendisine çok benzeyen GUID tanımlı denetlenebilir bir varlıktır. Önemli fark, bir sağlayıcı GUID'i yalnızca sağlayıcısının kayıtlarını denetlemek için kullanılırken grubun tüm üye kayıtlarını denetlemesidir. Örneğin, belirli bir anahtar sözcük ve düzeye sahip bir sağlayıcı grubunun etkinleştirilmesi, söz konusu anahtar sözcük ve düzeye sahip tüm grup üye kayıtlarını etkinleştirir.
Grup üyeliği izinlerle kısıtlanmış olabilir. EventSetInformation çağıranın belirtilen gruba katılma izinleri yoksa üyelik reddedilir.
Bazı durumlarda izleme oturumu denetleyicisi birkaç sağlayıcıyı bir grubun etkinleştirmesinin dışında tutmak isteyebilir. Bu, izin verme listesi ayarlanarak yapılabilir. İzin verme listesi, tek bir günlük oturumu için grup ayarlarına göre etkinleştirilmeyen sağlayıcı GUID'lerinin listesidir. İzin verme listeleri, TraceSetInformation ve TraceSetDisallowList bilgi sınıfıyla dinamik olarak değiştirilebilir.
Çoğu etkinleştirme eylemi Sağlayıcı Grupları için tek tek sağlayıcılara benzer şekilde yapılabilir ancak bazı özel durumlar vardır. Özel durumlar şunlardır:
- Sağlayıcı Grupları özel izleme oturumları tarafından denetlenemez.
- Olay Adı, Olay Kimliği ve Yük filtreleri, tek bir sağlayıcının belirli bilgilerini varsaydığından Sağlayıcı Grupları için geçerli değildir.