Olay Tanımlayıcıları (Olay Günlüğü)
Olay tanımlayıcıları belirli bir olayı benzersiz olarak tanımlar. Her olay kaynağı kendi numaralandırılmış olaylarını ve ileti dosyasında eşlendikleri açıklama dizelerini tanımlayabilir. Olay görüntüleyicileri bu dizeleri kullanıcıya sunabilir. Kullanıcının neyin yanlış gittiğini anlamasına ve hangi eylemleri gerçekleştirmesi gerektiğini önermesine yardımcı olmalıdır. Açıklamayı yöneticilerde veya destek teknisyenlerinde değil, kendi sorunlarını çözen kullanıcılara yönlendirin. Daha fazla bilgi için bkz. Hata İletisi Yönergeleri.
Biçim
Aşağıdaki diyagramda bir olay tanımlayıcısının biçimi gösterilmektedir.
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+---+-+-+-----------------------+-------------------------------+
|Sev|C|R| Facility | Code |
+---+-+-+-----------------------+-------------------------------+
-
Önem Derecesi
-
Şiddet. Önem derecesi aşağıdaki gibi tanımlanır:
- 00 - Başarı
- 01 - Bilgilendiren
- 10 - Uyarı
- 11 - Hata
-
C
-
Müşteri biti. Bu bit aşağıdaki gibi tanımlanır:
- 0 - Sistem kodu
- 1 - Müşteri kodu
-
R
-
Ayrılmış bit.
-
Tesisi
-
Tesis kodu. Bu değer FACILITY_NULL olabilir.
-
Kodu
-
Tesisin durum kodu.
İleti Tanımları
İletiler olay iletisi dosyasında tanımlanır. Olay iletisi dosyasındaki açıklama dizeleri olay tanımlayıcısına göre dizine alınarak Olay Görüntüleyicisi'nin olay tanımlayıcısına göre herhangi bir olay için olaya özgü metin görüntülemesini sağlar. Tüm açıklamalar yerelleştirilir ve dile bağımlıdır. İleti dosyası oluşturma hakkında daha fazla bilgi için bkz. İleti Metin Dosyaları.
Açıklama dizeleri, n %biçiminde ekleme dizesi yer tutucuları içerebilir; burada %1 ilk ekleme dizesini gösterir vb. Örneğin, .mc dosyasındaki örnek bir giriş aşağıda verilmiştir:
MessageId=0x4
Severity=Error
Facility=System
SymbolicName=MSG_CMD_DELETE
Language=English
File %1 contains %2, which is in error.
.
Bu durumda, ReadEventLog tarafından döndürülen arabellek ekleme dizelerini içerir. EVENTLOGRECORD yapısının NumStrings üyesi ekleme dizelerinin sayısını gösterir. EVENTLOGRECORD yapısının StringOffset üyesi, arabellekteki ilk ekleme dizesinin konumunu gösterir. FormatMessage işlevini çağırırken arabellekteki her dizenin adresini gösteren bir DWORD_PTRs dizisi geçirebilirsiniz ve dizeleri iletiye ekler.
Açıklama dizesi, parametre ileti dosyasındaki parametre dizeleri için yer tutucular da içerebilir. Yer tutucular n%%biçimindedir; burada %%1 1 tanımlayıcısı ile parametre dizesiyle değiştirilir ve bu şekilde devam eder. Ancak, parametre dizelerini FormatMessagedöndüren ileti dizesine eklemek size bağlı. Genellikle, olayın ileti dizesini almak için FormatMessage çağırırsınız. Daha sonra %%n parametreleri için ileti dizesini ayrıştırabilirsiniz. İletide bir veya daha fazla parametre varsa, kaynağın ParameterMessageFile kayıt defteri değerini yükleyin. İleti dizesindeki her parametre için tanımlayıcıyı alın ve parametre dizesini almak için FormatMessage geçirin. İleti dizesindeki parametresini, FormatMessage döndürülen parametre dizesiyle değiştirin.
Ekleme Dizeleri
Ekleme dizeleri, açıklama dizelerindeki yer tutucuların değerlerini doldurmak için kullanılan isteğe bağlı dilden bağımsız dizelerdir. Dizeler yerelleştirilmediğinden, bu yer tutucuların yalnızca sayısal değerler, dosya adları, kullanıcı adları gibi dilden bağımsız dizeleri temsil etmek için kullanılması kritik önem taşır. Dize uzunluğu 32 kilobayt - 1 karakteri aşmamalıdır.
Daha büyük bir açıklama oluşturmak için birkaç dize kullanmaktan kaçının. Ekleme dizesi metin olarak değil veri olarak ele alınmalıdır. Örneğin, aşağıdaki örnekte pszString1 ve pszString2, pszDescription için ekleme dizeleri olarak kullanılmamalıdır.
LPSTR pszString1 = "successfully";
LPSTR pszString2 = "not";
LPSTR pszDescription = "The user was %1 added to the database.";
Aşağıdaki örnekte, pszDescription'da ekleme dizesi için pszString1 veya pszString2 kullanmak uygundur.
LPSTR pszString1 = "c:\\testapp1.c";
LPSTR pszString2 = "c:\\testapp2.c";
LPSTR pszDescription = "Access denied. Attempted to open the file %1."