Bagikan melalui


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:
Guid
Menunjukkan bahwa data properti adalah Guid. Jenis data MOF harus objek. Payload diharapkan menjadi struktur GUID .
IPAddr dan IPAddrV4
Data adalah alamat IP V4. Jenis data MOF harus objek. Payload diharapkan menjadi panjang yang tidak ditandatangani. Setiap byte dari panjang yang tidak ditandatangani mewakili salah satu dari empat bagian alamat IP (p1.p2.p3.p4). Byte berurutan rendah berisi nilai untuk p1, byte berikutnya berisi nilai untuk p2, dan sebagainya.
Sebelum Windows Vista: Ekstensi IPAddrV4 tidak didukung.
IPAddrV6
Data adalah alamat IP V6. Jenis data MOF harus objek. Payload diharapkan menjadi struktur IN6_ADDR .
Sebelum Windows Vista: Ekstensi IPAddrV6 tidak didukung.
NoPrint
Menunjukkan bahwa konsumen tidak boleh mencetak data ini.
Port
Data mengidentifikasi nomor port. Jenis data MOF harus objek. Payload diharapkan menjadi pendek yang tidak ditandatangani.
RString
Karakter baris baru diganti dengan spasi. Payload diharapkan menjadi string ANSI yang dihentikan null.
RWString
Karakter baris baru diganti dengan spasi. Payload diharapkan menjadi string karakter lebar yang dihentikan null.
Sid
Data mewakili SID blob biner. Jenis data MOF harus objek.
SID memiliki panjang variabel. Nilai yang terkandung dalam 4 byte pertama (ULONG) menunjukkan apakah blob berisi SID. Jika 4 byte pertama (ULONG) dari blob bukan nol, blob berisi SID. Bagian pertama dari blob berisi TOKEN_USER (struktur diselaraskan pada batas 8-byte) dan bagian kedua berisi SID. Untuk mengatasi bagian SID dari blob:
  • Mengatur penunjuk byte ke awal blob
  • Kalikan ukuran penunjuk untuk log peristiwa dengan 2 dan tambahkan produk ke penunjuk byte (anggota PointerSizeTRACE_LOGFILE_HEADER berisi nilai ukuran penunjuk)

Anda bisa menggunakan makro berikut untuk menentukan panjang SID.
#define SeLengthSid( Sid ) \
  (8 + (4 * ((SID *)Sid)->SubAuthorityCount))
SizeT
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.
Varian
Data mewakili blob. Empat byte pertama (uint32) menunjukkan ukuran blob. Jenis data MOF harus objek .
WmiTime
Menerjemahkan stempel waktu ke waktu sistem. Jenis data MOF harus objek . Payload diharapkan menjadi bilangan bulat 64-bit yang tidak ditandatangani.
Sebelum Windows Vista: Tidak tersedia.
Format Menentukan format data properti. Misalnya, termasuk Format("w") pada properti string menunjukkan string adalah string yang lebar. Potensi nilai:
Istilah Deskripsi
C
Tampilkan nilai properti sebagai karakter ASCII. Anda dapat menggunakan kualifikasi ini dengan jenis data uint8 .
S
Perlakukan array karakter sebagai string yang dihentikan null. String adalah string karakter lebar jika jenis data adalah char16; jika tidak, string adalah string karakter ASCII.
W
Nilai properti adalah string karakter lebar. Anda dapat menggunakan kualifikasi ini dengan jenis data string .
X
Tampilkan nilai properti sebagai angka heksadesimal. Anda dapat menggunakan kualifikasi ini dengan jenis data bilangan bulat 16, 32, dan 64-bit.

 

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:
Dihitung

Panjang string disematkan di awal string sebagai nilai USHORT .

NotCounted

String tidak dihentikan null dan panjang string tidak disematkan di awal string. Dalam hal ini, string harus menjadi elemen terakhir dan menempati semua ruang hingga akhir data peristiwa.

NullTerminated

String dihentikan null. Jika Anda tidak menentukan kualifikasi StringTermination , string diasumsikan dihentikan null.

ReverseCounted

Panjang string disematkan di awal string sebagai nilai USHORT dalam format big-endian.

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.

ValueType("flag"),
ValueMap {"0x01", "0x02", "0x04", "0x08"},
Values {"ValueMapFlag1", "ValueMapFlag2", "ValueMapFlag4", "ValueMapFlag8"}]
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;
};