Kualifikasi MOF Pelacakan Peristiwa
Gunakan kualifikasi yang ditentukan di bagian ini saat membuat kelas MOF penyedia Anda, kelas MOF peristiwa, kelas MOF jenis peristiwa, dan properti kelas MOF jenis peristiwa. Untuk contoh yang menyertakan beberapa kualifikasi ini, lihat Menerbitkan Skema Peristiwa Anda.
Kualifikasi kelas MOF penyedia
Tabel berikut mencantumkan kualifikasi yang dapat Anda tentukan pada kelas MOF penyedia.
Pengualifikasi | Jenis data | Deskripsi |
---|---|---|
Guid | String | Wajib diisi. Guid String yang secara unik mengidentifikasi penyedia. Misalnya, Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Ini adalah GUID yang sama dengan yang Anda gunakan saat memanggil fungsi RegisterTraceGuids untuk mendaftarkan penyedia Anda. |
Kualifikasi kelas EVENT MOF
Tabel berikut mencantumkan kualifikasi yang dapat Anda tentukan pada kelas peristiwa (kelas induk yang mengelompokkan kelas jenis peristiwa terkait).
Pengualifikasi | Jenis data | Deskripsi |
---|---|---|
Guid | String | Wajib diisi. Guid String yang mengidentifikasi kelas peristiwa. Misalnya, Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Penyedia peristiwa menggunakan Guid untuk mengatur EVENT_TRACE_HEADER. Anggota Guid , sehingga konsumen dapat menentukan kelas peristiwa yang mereka terima. |
EventVersion | Bilangan bulat | Kualifikasi ini bersifat opsional untuk versi terbaru kelas pelacakan peristiwa dan diperlukan untuk semua versi kelas yang lebih lama. Versi terbaru kelas tidak menentukan kualifikasi EventVersion atau memiliki nomor versi tertinggi. Nomor versi dimulai dengan 0, misalnya, EventVersion(0). Biasanya, ketika Anda membuat versi baru kelas, Anda juga mengganti nama versi sebelumnya menjadi <nama> kelas_Vn, di mana n adalah angka inkremental mulai dari 0. Misalnya, lihat FileIo dan FileIo_V0. |
Kualifikasi kelas MOF jenis peristiwa
Tabel berikut mencantumkan kualifikasi yang dapat Anda tentukan pada kelas jenis peristiwa (kelas yang menentukan data properti peristiwa).
Pengualifikasi | Nilai | Deskripsi |
---|---|---|
EventType | Bilangan bulat | Wajib diisi. Mengidentifikasi kelas jenis peristiwa. Misalnya, EventType(1). Penyedia peristiwa menggunakan nilai jenis peristiwa yang sama untuk mengatur EVENT_TRACE_HEADER. Class.Type. Jika kelas MOF yang sama digunakan untuk beberapa jenis peristiwa (karena menggunakan data peristiwa yang sama), tentukan nilai jenis peristiwa sebagai array bilangan bulat, misalnya, EventType{12,15}. |
EventTypeName | String | Pilihan. Menjelaskan jenis peristiwa. Misalnya, EventTypeName("Start"). Jika kelas MOF yang sama digunakan untuk beberapa jenis peristiwa (karena menggunakan data peristiwa yang sama), tentukan nilai nama jenis peristiwa sebagai array string, misalnya, EventTypeName{"Start", "End"}. Elemen array EventTypeName sesuai langsung dengan array EventType. |
Kualifikasi properti
Tabel berikut ini mencantumkan kualifikasi yang bisa Anda tentukan pada properti .
Pengualifikasi | Deskripsi | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Bitmap | Menentukan posisi bit yang memetakan ke nilai string. Jika Anda menentukan kualifikasi ini, Anda juga harus menentukan kualifikasi BitValues . | ||||||||||
BitValues | Nilai string. Jika kualifikasi BitMap juga ditentukan, string sesuai langsung dengan nilai dalam kualifikasi BitMap . Jika tidak, asumsikan nilai properti adalah indeks berbasis satu ke dalam string nilai (bit satu sesuai dengan string pertama dalam daftar). | ||||||||||
Ekstensi | Menyediakan informasi tambahan tentang cara menggunakan (menginterpretasikan) data. Nilai ekstensi tidak peka huruf besar/kecil. Sertakan nilai dalam tanda kutip, misalnya, Extension("Guid"). Nilai ekstensi yang mungkin adalah:
|
||||||||||
Format | Menentukan format data properti. Misalnya, termasuk Format("w") pada properti string menunjukkan string adalah string yang lebar. Potensi nilai:
|
||||||||||
Penunjuk | Menunjukkan bahwa properti berisi nilai penunjuk. Ukuran nilai pointer tergantung pada sistem operasi yang digunakan untuk mencatat peristiwa; payload akan berisi nilai 4-byte untuk sistem 32-bit atau nilai 8-byte untuk sistem 64-bit. Jenis data MOF harus objek . Konsumen harus mengabaikan jenis data dan Kualifikasi format jika properti menyertakan ekstensi SizeT . Untuk menentukan ukuran data yang akan dibaca untuk properti , gunakan:
Sebelum Windows Vista: Nilai PointerSize mungkin tidak akurat. Misalnya, pada komputer 64-bit, aplikasi 32-bit akan mencatat pointer 4-byte; namun, sesi akan mengatur PointerSize ke 8. Perhatikan bahwa beberapa peristiwa menggunakan PointerType alih-alih Pointer; jangan gunakan PointerType. |
||||||||||
StringTermination | Menunjukkan bagaimana properti string dihentikan. Misalnya, StringTermination("NullTerminated") menunjukkan properti string dihentikan null. Potensi nilai:
|
||||||||||
ValueDescriptions | Menyediakan deskripsi untuk setiap nilai dalam kualifikasi Nilai . Fungsi TdhEnumerateProviderFieldInformation dan TdhQueryProviderFieldInformation mengembalikan deskripsi ini ketika Anda mencoba mengambil informasi kata kunci dan tingkat. Deskripsi bersifat opsional. Jika Anda tidak memberikan deskripsi, fungsi mengembalikan NULL. Lihat Menentukan tingkat dan mengaktifkan nilai bendera untuk penyedia untuk detail selengkapnya. | ||||||||||
ValueMap | Menentukan indeks bilangan bulat atau nilai bendera yang memetakan ke nilai string. Jika Anda menentukan kualifikasi ini, Anda juga harus menentukan kualifikasi Nilai , dan secara opsional kualifikasi ValueType . Perhatikan bahwa ETW tidak mendukung opsi WMI untuk memiliki string untuk nilai peta nilai.
Contoh berikut menunjukkan cara menggunakan kualifikasi ValueMap, Values, dan ValueType.
|
||||||||||
Nilai | Nilai string. Jika kualifikasi ValueMap juga ditentukan, string terkait langsung dengan nilai dalam kualifikasi ValueMap . Jika tidak, asumsikan nilai properti adalah indeks berbasis nol ke dalam string nilai. | ||||||||||
ValueType | Menunjukkan apakah nilai ValueMap adalah nilai indeks bilangan bulat atau nilai bendera bit. Jika Anda tidak menentukan kualifikasi ini, nilai indeks bilangan bulat diasumsikan. Untuk menentukan bahwa nilai adalah nilai indeks bilangan bulat, gunakan ValueType("index"). Untuk menentukan bahwa nilainya adalah nilai bendera bit, gunakan ValueType("flag"). | ||||||||||
WmiDataId | Setiap properti harus berisi kualifikasi WmiDataId . WmiDataId mendefinisikan urutan konsumen membaca data peristiwa. Nilai untuk WmiDataId dimulai dari 1 dan kenaikan untuk setiap properti di kelas . Misalnya, WmiDataId(1). | ||||||||||
XmlFragment | Menunjukkan bahwa data dalam format XML dan siap ditampilkan tanpa pemformatan lebih lanjut. |
Menentukan tingkat dan mengaktifkan nilai bendera untuk penyedia
Untuk mendokumenkan tingkat dan mengaktifkan bendera yang akan digunakan pengontrol untuk mengaktifkan penyedia Anda, sertakan properti "Tingkat" dan "Bendera" di kelas MOF penyedia Anda. Nama properti Tingkat dan Bendera peka huruf besar/kecil. Properti harus menyertakan kualifikasi Nilai dan ValueMap , yang menentukan tingkat yang mungkin dan mengaktifkan nilai bendera. ValueMap untuk nilai bendera aktifkan harus berupa nilai bit (bendera). Kualifikasi ValueDescriptions bersifat opsional tetapi Anda harus menggunakannya untuk memberikan deskripsi untuk setiap nilai yang mungkin. Deskripsi digunakan ketika seseorang memanggil fungsi TdhEnumerateProviderFieldInformation dan TdhQueryProviderFieldInformation untuk mendapatkan tingkat yang mungkin dan mengaktifkan nilai bendera (kata kunci) untuk penyedia.
Berikut ini memperlihatkan kelas penyedia yang menentukan tingkat yang mungkin dan mengaktifkan nilai bendera.
[Dynamic,
Description("IIS_Trace") : amended,
guid("{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}"),
locale("MS\\0x409")]
class IIS_Trace : EventTrace
{
[Description ("Enable Flags") : amended,
ValueDescriptions{
"Allow_tracing_only_selected_requests ",
"IIS_authentication_events ",
"IIS_security_events ",
"IIS_filter_events ",
"IIS_static_file_events ",
"IIS_CGI_events ",
"IIS_compression_events ",
"IIS_cache_events ",
"IIS_request_notifications_events ",
"IIS_module_events ",
"IIS_FastCGI_events "},
DefineValues{
"UseUrlFilter",
"IISAuthentication",
"IISSecurity",
"IISFilter",
"IISStaticFile",
"IISCGI",
"IISCompression",
"IISCache",
"IISRequestNotification",
"IISModule",
"IISFastCGI"},
Values{
"UseUrlFilter",
"IISAuthentication",
"IISSecurity",
"IISFilter",
"IISStaticFile",
"IISCGI",
"IISCompression",
"IISCache",
"IISRequestNotification",
"IISModule",
"IISFastCGI"},
ValueMap{
"0x00000001",
"0x00000002",
"0x00000004",
"0x00000008",
"0x00000010",
"0x00000020",
"0x00000040",
"0x00000080",
"0x00000100",
"0x00000200",
"0x00001000"}: amended
]
uint32 Flags;
[Description ("Levels") : amended,
ValueDescriptions{
"Abnormal exit or termination",
"Severe errors that need logging",
"Warnings such as allocation failure",
"Includes non-error cases",
"Detailed traces from intermediate steps" } : amended,
DefineValues{
"TRACE_LEVEL_FATAL",
"TRACE_LEVEL_ERROR",
"TRACE_LEVEL_WARNING"
"TRACE_LEVEL_INFORMATION",
"TRACE_LEVEL_VERBOSE" },
Values{
"Fatal",
"Error",
"Warning",
"Information",
"Verbose" },
ValueMap{
"0x1",
"0x2",
"0x3",
"0x4",
"0x5" },
ValueType("index")
]
uint32 Level;
};