Sifat Penyedia
Ciri Penyedia adalah metode untuk melampirkan lebih banyak data ke pendaftaran penyedia individu. Mereka dapat digunakan untuk penyedia berbasis manifes atau TraceLogging. Saat ini termasuk dukungan untuk menambahkan Nama Penyedia dan/atau Grup Penyedia ke pendaftaran penyedia individual. Lebih banyak jenis sifat kemungkinan akan ditambahkan di masa depan. Informasi ini disimpan dalam kernel sebagai blob biner dari format yang ditetapkan.
Sifat hanya dapat diatur sekali untuk pendaftaran. Setiap upaya lebih lanjut untuk mengatur sifat pada pendaftaran tersebut akan gagal.
Untuk mengatur Sifat Penyedia pada penyedia berbasis manifes, panggil fungsi EventSetInformation dengan kelas informasi EventProviderSetTraits. Buffer EventInformation harus berisi blob biner dengan format berikut:
{
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
}
Sifat individu harus dalam format berikut:
TRAIT {
UINT16 TraitSize // Size of this individual trait including this field
UINT8 Type // ETW_PROVIDER_TRAIT_TYPE
BYTE[] Data
}
Dari sifat individu, ETW_PROVIDER_TRAIT_TYPE didefinisikan sebagai:
typedef enum {
EtwProviderTraitTypeGroup = 1,
EtwProviderTraitTypeMax
} ETW_PROVIDER_TRAIT_TYPE;
Penyedia TraceLogging secara otomatis mengatur Sifat Penyedia saat fungsi TraceLoggingRegister dipanggil. Nama penyedia TraceLogging akan selalu disertakan dalam sifat-sifatnya. Grup dapat diatur pada penyedia TraceLogging menggunakan makro TraceLoggingOptionGroup dalam definisi penyedia.
Sifat Kustom
Meskipun sebagian besar dari 255 jenis sifat yang mungkin belum ditentukan, jenis sifat 1-127 dicadangkan untuk definisi oleh Microsoft. Nilai jenis terindeks yang lebih tinggi yang tersisa dapat digunakan oleh pengembang eksternal sesuai keinginan mereka. Siapa pun yang mempertimbangkan untuk menambahkan sifat kustom mereka sendiri ke penyedia mereka harus mencoba menjaga ukuran sifat total mereka di bawah 256 byte karena alasan berikut:
- Ciri-ciri disertakan dalam setiap peristiwa yang ditulis untuk penyedia. Sifat besar dapat menyebabkan file log yang sangat besar.
- Sifat disimpan di kumpulan kernel yang tidak dipagasi selama masa pakai penyedia.
Grup Penyedia
Grup penyedia adalah entitas yang dapat dikontrol yang ditentukan GUID seperti penyedia itu sendiri. Perbedaan utamanya adalah bahwa sementara GUID penyedia digunakan untuk mengontrol pendaftaran hanya penyedianya, grup akan mengontrol semua pendaftaran anggotanya. Misalnya, mengaktifkan grup penyedia dengan kata kunci dan tingkat tertentu akan mengaktifkan semua pendaftaran anggota grup dengan kata kunci dan tingkat tersebut.
Keanggotaan grup dapat dibatasi oleh izin. Jika pemanggil EventSetInformation tidak memiliki izin untuk bergabung dengan grup yang ditentukan, keanggotaan akan ditolak.
Dalam beberapa kasus, pengontrol sesi pelacakan mungkin ingin mengecualikan beberapa penyedia dari pengaktifan grup. Ini dapat dilakukan dengan mengatur daftar tidak diizinkan. Daftar yang tidak diizinkan adalah daftar GUID penyedia yang tidak akan diaktifkan berdasarkan pengaturan grup untuk satu sesi pengelogan. Daftar yang tidak diizinkan dapat diubah secara dinamis dengan TraceSetInformation dan kelas informasi TraceSetDisallowList.
Meskipun sebagian besar tindakan yang diaktifkan dapat dilakukan untuk Grup Penyedia dengan cara yang sama dengan penyedia individu, ada beberapa pengecualian. Pengecualian meliputi:
- Grup Penyedia tidak dapat dikontrol oleh sesi pelacakan privat.
- Nama Peristiwa, ID Peristiwa, dan filter Payload tidak berlaku untuk Grup Penyedia karena mereka mengasumsikan informasi spesifik dari penyedia individu.