Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sürücüler kendi hata türlerini ve hata iletilerini belirtebilir. Özel bir hata iletisi tanımlamak için öncelikle hata günlüğü girdisinin ErrorCode üyesi olarak belirtmek üzere yeni bir IO_ERR_XXX değeri tanımlamanız gerekir. Olay Görüntüleyicisi, sürücünün hata iletisini aramak için IO_ERR_xxx değerini kullanır.
Sürücünüzde özel hata iletilerini desteklemek için şu adımları izleyin:
Özel IO_ERR_XXX değerini ve ilgili hata iletilerini belirten bir ileti metin dosyası oluşturun. Daha fazla bilgi için bkz. Hata İletisi Metin Dosyası Oluşturma.
Hata iletisi metin dosyasını bir kaynağa derleyin ve kaynağı sürücü görüntüsüne ekleyin. Daha fazla bilgi için bkz. hata iletisi metin dosyasını derleme .
Sürücü görüntüsünü hata iletilerini içeren olarak kaydedin. Daha fazla bilgi için bkz. Hata İletileri Kaynağı Olarak Kaydetme.
Hata İletisi Metin Dosyası Oluşturma
Sürücünün özel IO_ERR_XXX değerleri ve eşleşen hata iletisi şablonlarının tanımı, sürücü görüntüsüne ileti tablosu kaynağı olarak eklenir. Bir sürücüye ait iletileri bir ileti metin dosyasında (.mc dosya adı uzantısına sahip) açıklayabilirsiniz.
İleti metin dosyası iki bölümden oluşur: üst bilgi bölümü ve ileti bölümü. Üst bilgi bölümü sayısal değerler için sembolik adların bildirimine izin verirken, ileti bölümü IO_ERR_XXX değerlerini ve eşleşen hata iletisi şablonlarını belirtir.
İleti metin dosyası örneği için GitHub'da bulunan Seri sürücü örneği Serlog.mc dosyasına bakın.
Üst Bilgi Bölümü
Üst bilgi bölümü şu satırı içermelidir:
MessageIdTypedef=NTSTATUS
Bu, İleti Derleyicisi tarafından oluşturulan IO_ERR_XXX değerlerinin türünün NTSTATUS olarak bildirilmesini sağlar.
Üst bilgi bölümünde görüntülenen diğer yönergeler, ileti bölümündeki sayısal değerler yerine kullanılan sembolik değerleri tanımlar.
SeverityNames ve FacilityNames yönergeleri, NTSTATUS değerlerinin önem derecesi ve tesis alanları için sembolik değerleri tanımlar. Yönergeler, anahtar sözcüğü= (değerler)şeklindedir, burada değerler, ad=değer:header_namebiçiminde, boşlukla ayrılmış bir veya daha fazla deyimden oluşur. name parametresi, ileti metin dosyasında sayısal değerini belirtmek için kullandığınız addır; header_name ise İleti Derleyicisi tarafından oluşturulan C üst bilgi dosyasında bildirilen bu değerin adıdır. :header_name yan tümcesi isteğe bağlıdır.
Önem derecesi kodları için sembolik adların üst bilgi bildirimi örneği aşağıda verilmiştir:
SeverityNames = (
Success = 0x0:STATUS_SEVERITY_SUCCESS
Informational = 0x1:STATUS_SEVERITY_INFORMATIONAL
Warning = 0x2:STATUS_SEVERITY_WARNING
Error = 0x3:STATUS_SEVERITY_ERROR
)
LanguageNames yönergesi, yerel ayar kimlikleri (LCID) için sembolik değerleri tanımlar. Yönerge, LanguageNames = (değerler)biçimindedir, burada değerleri, language_name=lcid:langfileformunda bir veya daha fazla deyimden oluşur ve boşlukla ayrılır. language_name parametresi, ileti metin dosyasında lcid yerine kullandığınız addır; dosya adı benzersiz bir dosya adı belirtir (uzantı olmadan). İleti Derleyicisi, ileti metin dosyasından kaynak betiğini oluşturduğunda, bu dil için tüm dize kaynaklarını langfile.binadıyla bir dosyada depolar.
İleti Bölümü
Her ileti tanımı, sürücünün bu tür bir hatayı bildirmek için kullandığı özel IO_ERR_XXX değerinin tanımıyla başlar. IO_ERR_XXX değeri, bir dizi anahtar sözcük = değer çifti tarafından tanımlanır. Olası anahtar sözcükler ve anlamları aşağıdaki gibidir.
| Anahtar sözcük | Değer |
|---|---|
Mesaj Kimliği |
Yeni IO_ERR_XXX değerinin kod alanı. |
Önem Derecesi |
Yeni IO_ERR_XXX değerinin önem alanı. Belirtilen değer, SeverityNames üst bilgi yönergesi tarafından tanımlanan sembolik adlardan biri olmalıdır. |
Tesis |
Yeni IO_ERR_XXX değerinin tesis alanı. Belirtilen değer, FacilityNames üst bilgi yönergesi tarafından tanımlanan sembolik adlardan biri olmalıdır. |
SymbolicName |
Yeni IO_ERR_XXX değerinin sembolik adı. İleti Derleyicisi, adın ilgili NTSTATUS değeri olarak #define bildirimini içeren bir C üst bilgi dosyası oluşturur. Sürücü, hata türünü belirtirken bu adı kullanır. |
İlk anahtar sözcük her zaman MessageIdolmalıdır.
İleti tanımının geri kalanı, hata iletisinin bir veya daha fazla yerelleştirilmiş sürümünden oluşur. Her sürüm şu biçimdedir:
Language=language_name
localized_message
LanguageNames üst bilgi yönergesi tarafından tanımlanan sembolik adlardan biri olması gereken language_name değeri, ileti metninin dilini belirtir. Yerelleştirilmiş ileti metninin kendisi bir Unicode dizeden oluşur. "%n" biçimindeki ekli dizeler, hata günlüğe kaydedildiğinde Olay Görüntüleyicisi'nin değiştireceği şablonlar olarak değerlendirilir. "%1" dizesi sürücünün cihaz nesnesinin adıyla değiştirilirken, "%2" ile "%n" arasında sürücü tarafından sağlanan tüm ekleme dizeleriyle değiştirilir.
Mesaj tanımı, yalnızca bir nokta içeren bir satırla sonlandırılır.
Özel hata iletileri tanımlarsanız, gerekmedikçe ekleme dizelerini kullanmamalısınız. Ekleme dizeleri yerelleştirilemez, bu nedenle sayılar veya dosya adları gibi dilden bağımsız dizeler için kullanılmalıdır. Sürücülerin çoğu ekleme dizelerini kullanmaz.
Hata Mesajı Metin Dosyasını Oluşturma
İleti metin dosyanızı bir kaynak betik dosyasına (.rc dosya adı uzantısına sahip) derlemek için İleti Derleyicisi'ni (mc.exe) kullanın. Bir formdaki komut
mc filename.mc
, İleti Derleyicisi'nin aşağıdaki dosyaları oluşturmasına neden olur:
dosya adı.h, dosya adıiçinde her bir özel IO_ERR_XXX değerinin bildirimlerini içeren bir üst bilgi dosyasıdır.mc.
dosya adı.rc uzantılı, bir kaynak betiğidir.
İleti metin dosyasında görünen her dil için bir dosya. Bu dosyaların her biri, bir dil için tüm hata iletisi dizesi kaynaklarını depolar. Her dilin dosyası langfileolarak adlandırılır.bin; burada langfile, ileti metin dosyasının LanguageNames yönergesindeki dil için belirtilen değerdir.
İleti Derleyicisi hakkında daha fazla bilgi Microsoft Windows SDK'sında bulunabilir.
Kaynak Derleyicisi, bir kaynak betiğini sürücü görüntünüze ekleyebileceğiniz bir kaynak dosyasına dönüştürür. Sürücünüzü derlemek için Derleme yardımcı programını kullanırsanız, kaynak betiğinin bir kaynak dosyasına dönüştürüldüğünden ve sürücü görüntünüze eklendiğinden emin olmak için kaynak betiğinin adını sürücünün SOURCES değişkenine ekleyebilirsiniz. Kaynak Derleyicisi hakkında daha fazla bilgi için Windows SDK belgelerine bakın. Sürücünüzü oluşturmak için Build aracını kullanma hakkında bilgi için bkz. Sürücü oluşturma.