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ü Doğrulayıcı'nın iki G/Ç Doğrulaması düzeyi vardır:
1. Düzey G/Ç Doğrulaması , G/Ç Doğrulaması seçildiğinde her zaman etkindir.
Windows XP ve sonraki sürümlerde G/Ç Doğrulaması seçildiğinde Düzey 2 G/Ç Doğrulaması her zaman etkindir.
Ayrıca bkz.Gelişmiş G/Ç Doğrulaması Windows işletim sisteminin Windows 7 ve sonraki sürümlerinde, G/Ç Doğrulama'yı seçtiğinizde Gelişmiş G/Ç Doğrulaması otomatik olarak etkinleştirilir. Ayrı bir seçenek olarak seçilmesi mümkün veya gerekli değildir.
Düzey 1 G/Ç Doğrulaması
Düzey 1 G/Ç Doğrulaması etkinleştirildiğinde, IoAllocateIrp aracılığıyla elde edilen tüm IRP'ler özel bir havuzdan ayrılır ve kullanımları izlenir.
Ayrıca, Sürücü Doğrulayıcı geçersiz G/Ç çağrılarını denetler, örneğin:
Türü IO_TYPE_IRP olmayan bir IRP'yi boşaltmaya çalışır
Geçersiz cihaz nesnelerini IoCallDriver'a geçirir
Geçersiz durum içeren veya hala iptal yordamı ayarlanmış olan bir IRP'yi IoCompleteRequest'e geçirir
IRQL seviyesinde sürücü dağıtım rutinine yapılan bir çağrıdaki değişiklikler
Bir iş parçacığıyla ilişkili olarak kalan bir IRP'yi serbest bırakmaya çalışır
Bir cihaz nesnesinin zaten başlatılmış bir zamanlayıcı içeren IoInitializeTimer'a geçişleri
Geçersiz bir arabelleğin IoBuildAsynchronousFsdRequest veya IoBuildDeviceIoControlRequest'e geçirilmesi
Bu G/Ç durum bloğu çok fazla kaldırılmış bir yığına ayrıldığında G/Ç durum bloğunu IRP'ye geçirir
Bir olay nesnesi, çok fazla çözümlenmiş bir yığın üzerinde ayrıldığında, bu olay nesnesi IRP'ye geçirilir.
Özel IRP havuzu sınırlı boyutta olduğundan, G/Ç Doğrulaması en çok aynı anda yalnızca bir sürücüde kullanıldığında etkilidir.
G/Ç Doğrulama Düzeyi 1 hataları, 0xC9 hata denetimi gerçekleştirilmesine neden olur. Bu hata denetiminin ilk parametresi hangi ihlalin oluştuğuna işaret eder. Tam parametre listesi için Hata Denetimi 0xC9 (DRIVER_VERIFIER_IOMANAGER_VIOLATION) bölümüne bakın.
Düzey 2 G/Ç Doğrulaması
G/Ç Doğrulama Düzeyi 2 hataları farklı şekillerde görüntülenir: mavi ekranda, kilitlenme bilgi dökümü dosyasında ve çekirdek hata ayıklayıcısında.
Mavi ekranda, bu hatalar GÇ SİSTEMİ DOĞRULAMA HATASI iletisiyle ve XXX'nin G/Ç hata kodu olduğu WDM SÜRÜCÜ HATASIXXX dizesiyle belirtilir.
Çökme döküm dosyasında, bu hataların çoğu BugCheck 0xC9 (DRIVER_VERIFIER_IOMANAGER_VIOLATION) iletisi ve G/Ç hata kodu ile kaydedilir. Bu durumda G/Ç hata kodu, hata denetimi 0xC9 ilk parametresi olarak görünür. Geri kalanı, Sürücü Doğrulayıcı hata koduyla birlikte Hata Denetimi 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) iletisiyle not edilir. Bu durumda, Sürücü Doğrulayıcı hata kodu hata denetimi 0xC4 ilk parametresi olarak görünür.
Çekirdek hata ayıklayıcısında (KD veya WinDbg), bu hatalar WDM DRIVER ERROR iletisi ve açıklayıcı bir metin dizesi ile not edilir. Çekirdek hata ayıklayıcısı etkin olduğunda, Düzey 2 hatalarını yoksaymak ve sistem işlemini sürdürmek mümkündür. (Bu, diğer hata denetimleriyle mümkün değildir.)
Mavi ekran, kilitlenme bilgi dökümü dosyası ve çekirdek hata ayıklayıcının her birinde ek bilgiler de görüntülenir. G/Ç Doğrulama Düzeyi 2 hata iletilerinin çoğunun tam açıklaması için bkz. Hata Denetimi 0xC9. Hata Kontrolü 0xC4 için kalanına bakın.
Windows Vista'dan başlayarak G/Ç Doğrulama seçeneği aşağıdaki sürücü hatalarını denetler:
Kullanıcı modu uygulamalarından kaynaklanan IRP'lerin tamamlanması ve iptali çok uzun sürüyor.
Henüz alınmamış bir kaldırma kilidi serbest bırakılmıştır.
IoReleaseRemoveLock veya IoReleaseRemoveLockAndWait'i ilgili IoAcquireRemoveLock çağrısında kullanılan etiket parametresinden farklı bir etiket parametresiyle çağırma.
Kesintiler devre dışı bırakılmışken IoCallDriver çağrılıyor.
IRQL'de ioCallDriver'ı DISPATCH_LEVEL'den büyük olarak çağırma.
Kesmeler devre dışı bırakılmış bir sürücü görev dağıtım yordamından geri dönüyor.
IRQL değiştirilerek bir sürücü dağıtım rutininden geri dönme.
APC'ler devre dışı bırakılmış bir sürücü dağıtım yordamından geri dönüyor. Bu durumda, sürücü KeEnterCriticalRegion'ıKeLeaveCriticalRegion'dan daha fazla kez çağırmış olabilir. Bu, Hata Denetimi 0x20 (KERNEL_APC_PENDING_DURING_EXIT) ve Hata Denetimi 0x1 (APC_INDEX_MISMATCH) için birincil nedendir.
Windows 7'den başlayarak G/Ç Doğrulama seçeneği aşağıdaki sürücü hatalarını denetler:
- ExFreePool'u çağırarak IRP'leri boşaltmaya çalışır. IRP'ler IoFreeIrp ile serbest olmalıdır.
Buna ek olarak, başka bir yaygın sürücü hatasını algılamak için bu seçeneği kullanabilirsiniz; kilitleri kaldırma işlemini yeniden başlatabilirsiniz. Kilitleri kaldır veri yapıları cihaz uzantılarının içinde ayrılmalıdır. Bu, G/Ç yöneticisinin yalnızca cihaz nesnesi silindiğinde IO_REMOVE_LOCK yapısını tutan belleği boşaltmasını sağlar. Sürücü aşağıdaki üç adımı gerçekleştirirse, 2. adımdan sonra bir uygulama veya sürücü hala Device1'e başvuruda bulunabilir:
- Device1'e karşılık gelen IO_REMOVE_LOCK yapısını ayırır, ancak ayırmayı Device1 uzantısının dışında yapar.
- Device1 kaldırılırken IoReleaseRemoveLockAndWait'i çağırır.
- Aynı kilit için IoInitializeRemoveLock'u çağırarak Cihaz2 için kaldırma kilidi olarak yeniden kullanabilir.
2. adımdan sonra bir uygulama veya sürücü hala Device1'e başvuruda bulunabilir. Uygulama veya sürücü, bu cihaz kaldırılmış olsa bile Device1'e istek göndermeye devam edebilir. Bu nedenle, G/Ç yöneticisi Device1'i silmeden yeni kaldırma kilidiyle aynı belleği yeniden kullanmak güvenli değildir. Başka bir iş parçacığı bunu almaya çalışırken aynı kilidi yeniden başlatma, sürücü ve tüm sistem için öngörülemeyen sonuçlarla kilidin bozulmasına neden olabilir.
Windows 7 ve sonraki sürümlerinde Windows işletim sisteminde, I/O Doğrulama seçildiğinde Gelişmiş I/O Doğrulama otomatik olarak etkinleştirilir.
Bu Seçeneği Etkinleştir
Sürücü Doğrulayıcı Yöneticisi'ni veya Verifier.exe komut satırını kullanarak bir veya daha fazla sürücü için G/Ç Doğrulama özelliğini etkinleştirebilirsiniz. Ayrıntılar için bkz. Sürücü Doğrulayıcı Seçeneklerini Seçme.
Komut satırında.
Komut satırında G/Ç Doğrulama seçeneği Bit 4 (0x10) ile gösterilir. G/Ç Doğrulamasını etkinleştirmek için 0x10 bayrak değerini kullanın veya bayrak değerine 0x10 ekleyin. Örneğin:
verifier /flags 0x10 /driver MyDriver.sysÖzellik bir sonraki önyüklemeden sonra etkin olacaktır.
G/Ç Doğrulamasını, komutuna /volatile parametresini ekleyerek bilgisayarı yeniden başlatmadan da etkinleştirebilir ve devre dışı bırakabilirsiniz. Örneğin:
verifier /volatile /flags 0x10 /adddriver MyDriver.sysBu ayar hemen etkindir, ancak bilgisayarı kapattığınızda veya yeniden başlattığınızda kaybolur. Ayrıntılar için bkz. Geçici Ayarları Kullanma.
G/Ç Doğrulama özelliği standart ayarlara da dahildir. Örneğin:
verifier /standard /driver MyDriver.sysSürücü Doğrulayıcı Yöneticisini Kullanarak
- Özel ayarlar oluştur'u (kod geliştiricileri için) seçin ve İleri'ye tıklayın.
- Tam liste'den tek tek ayarları seçin.
- G/Ç doğrulamayı seçin (denetleyin).
G/Ç Doğrulama özelliği standart ayarlara da dahildir. Bu özelliği kullanmak için Sürücü Doğrulayıcı Yöneticisi'nde Standart Ayarlar Oluştur'a tıklayın.