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ı, bir veya daha fazla sürücüyü doğrularken aşağıdaki denetimleri gerçekleştirir. Bu denetimleri etkinleştiremez veya devre dışı bırakamazsınız. Windows 10, sürüm 1709'dan itibaren bu otomatik denetimler ilgili standart bayraklara taşındı. Sonuç olarak, Sürücü Doğrulayıcı'yı standart bayraklarla etkinleştiren kullanıcıların uygulanan denetimlerde hiçbir azalma görmemesi gerekir.
IRQL ve Bellek Yordamlarını İzleme
Sürücü Doğrulayıcı, seçili sürücüyü aşağıdaki yasak eylemler için izler:
KeLowerIrql'i çağırarak IRQL'i yükseltme
KeRaiseIrql'i çağırarak IRQL'i düşürme
Sıfır boyutlu bellek ayırma isteği
IRQL > APC_LEVEL ile disk belleği havuzu ayırma veya boşaltma
IRQL > DISPATCH_LEVEL ile sayfalama yapılmayan havuzu tahsis etme veya serbest bırakma
Önceki ayırmadan geri döndürülmemiş bir adresi bırakmaya çalışmak
Zaten serbest olan bir adresi serbest bırakmaya çalışma
IRQL > APC_LEVEL ile hızlı bir mutex edinme veya bırakma
DISPATCH_LEVEL'e eşit olmayan IRQL ile bir döndürme kilidini alma veya bırakma
Döndürme kilidi iki kez serbest bırakılsın.
Bir ayırma isteğini MUST_SUCCEED olarak işaretleme. Böyle isteklere izin verilmemektedir.
Sürücü Doğrulayıcı etkin değilse, bu ihlaller her durumda anında sistem kilitlenmesine neden olmayabilir. Sürücü Doğrulayıcı, sürücünün davranışını izler ve bu ihlallerden herhangi birinin oluşması durumunda hata denetimi 0xC4 yapılır. Hata denetimi parametrelerinin listesi için bkz . Hata Denetimi 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION).
İzleme Yığını Değiştirme
Sürücü Doğrulayıcı, doğrulanan sürücü tarafından yığın kullanımını izler. Sürücü yığınını değiştirirse ve yeni yığın bir iş parçacığı yığını veya DPC yığını değilse, bir hata denetimi verilir. (Bu, ilk parametre 0x90 eşit olan hata denetimi 0xC4 olacaktır.) KB hata ayıklayıcısı komutu tarafından görüntülenen yığın genellikle bu işlemi gerçekleştiren sürücüyü gösterir.
Sürücü Kaldırmayı Denetleme
Doğrulanan bir sürücü çıkartıldıktan sonra, Sürücü Doğrulayıcı sürücünün düzgün bir şekilde temizlenip temizlenmediğini doğrulamak için birkaç denetim gerçekleştirir.
Özellikle, Sürücü Doğrulayıcı şunları arar:
Silinmemiş zamanlayıcılar
Bekleyen ertelenmiş yordam çağrıları (DPC' ler)
Silinmemiş görünüm listeleri
Silinmemiş işçi parçacıkları
Silinmemiş kuyruklar
Diğer benzer kaynaklar
Böyle sorunlar, sürücü kaldırıldıktan bir süre sonra sistem hata denetimlerinin gerçekleştirilmesine neden olabilir ve bu hata denetimlerinin nedenini belirlemek zor olabilir. Sürücü Doğrulayıcı etkin olduğunda, bu tür ihlaller sürücü kaldırıldıktan hemen sonra hata denetimi 0xC7 verilmesine neden olur. Hata denetimi parametrelerinin listesi için bkz. Hata Denetimi 0xC7 (TIMER_OR_DPC_INVALID).
Bellek Tanımlayıcı Listesi (MDL) Kullanımını İzleme
Windows Vista'da, Sürücü Doğrulayıcı aşağıdaki yasak eylemler için seçilen sürücüyü de izler:
Uygun bayraklara sahip olmayan bir MDL üzerinde MmProbeAndLockPages veya MmProbeAndLockProcessPages çağırma. Örneğin, MmBuildMdlForNonPagedPool kullanılarak oluşturulmuş bir MDL için MmProbeAndLockPages çağrısı yapmak yanlıştır.
Uygun bayraklara sahip olmayan bir MDL üzerinde MmMapLockedPages çağrısı. Örneğin, zaten bir sistem adresine eşlenmiş veya kilitlenmemiş bir MDL için MmMapLockedPages çağrısı yapmak yanlıştır.
Kısmi bir MDL üzerinde MmUnlockPages veya MmUnmapLockedPages çağırma, yani IoBuildPartialMdl kullanılarak oluşturulan MDL.
Bir sistem adresiyle eşlenmeyen bir MDL üzerinde MmUnmapLockedPages çağrısı.
Sürücü Doğrulayıcı etkin değilse, bu ihlaller sistemin her durumda hemen yanıt vermeyi durdurmasına neden olmayabilir. Sürücü Doğrulayıcı, sürücünün davranışını izler ve bu ihlallerden herhangi birinin oluşması gerçekleşirse hata denetimi 0xC4 verir. Hata denetimi parametrelerinin listesi için bkz . Hata Denetimi 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION).
NonPagedPoolSession Belleğinden Eşitleme Nesnesi Ayırma
Windows 7'den başlayarak, Sürücü Doğrulayıcı oturum belleğinden eşitleme nesnelerini denetler.
Eşitleme nesneleri sayfalanamaz olmalıdır. Ayrıca genel, sistem genelindeki sanal adres alanında da yaşamaları gerekir.
Grafik sürücüsü EngAllocMem gibi API'leri çağırarak oturum belleği ayırabilir. Genel adres alanından farklı olarak, oturum adres alanı her Terminal Server oturumu için sanallaştırılır. Bu, iki farklı oturum bağlamında kullanılan aynı sanal adresin iki farklı nesneye başvurduğu anlamına gelir. Windows çekirdeğinin herhangi bir Terminal Server oturumundan eşitleme nesnelerine erişebilmesi gerekir. Farklı bir oturumdan oturum bellek adresine başvurmaya çalışılması, sistem kilitlenmeleri veya başka bir oturumun verilerinin sessiz bozulması gibi öngörülemeyen sonuçlara neden olur.
Windows 7'den başlayarak, doğrulanmış bir sürücü KeInitializeEvent veya KeInitializeMutex gibi API'leri çağırarak bir eşitleme nesnesi başlattıktan sonra, Sürücü Doğrulayıcı nesnenin adresinin oturum sanal adres alanının içinde olup olmadığını denetler. Sürücü Doğrulayıcı bu tür bir yanlış adres algılarsa, parametre 1 değeri 0xDF olan bir Hata Denetimi 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION verir.
Nesne Başvuru Sayacı 0'dan 1'e Değişir
Windows 7'den başlayarak, Sürücü Doğrulayıcı yanlış nesne başvurularının ek sınıflarını denetler.
Windows çekirdek nesne yöneticisi Dosya nesnesi veya İş Parçacığı nesnesi gibi bir nesne oluşturduğunda, yeni nesnenin başvuru sayacı 1 olarak ayarlanır. Başvuru sayacı , ObReferenceObjectByPointer veya ObReferenceObjectByHandle gibi API'lere yapılan çağrılarla artırılır. Başvuru sayacı, aynı nesne için her ObDereferenceObject çağrısında azaltılır.
Başvuru sayacı 0 değerine ulaştıktan sonra nesne serbest edilmeye uygun hale gelir. Nesne yöneticisi onu hemen serbest bırakabilir veya daha sonra serbest bırakabilir. ObReferenceObjectByPointer veya ObDereferenceObject'i çağırmak ve başvuru sayacını 0'dan 1'e değiştirmek, zaten serbest bir nesnenin başvuru sayacını artırma anlamına gelir. Başka birinin bellek ayırma işleminin bozulmasına neden olabileceği için bu her zaman yanlıştır.
Sistem Kapatma Blokları veya Gecikmeler
Windows 7'den başlayarak, sistem kapatma işlemi başlatıldıktan 20 dakika sonra tamamlanmazsa Sürücü Doğrulayıcı çekirdek hata ayıklayıcısına bir kesme işlemi yapar. Sürücü Doğrulayıcı, Windows çekirdeğinin Kayıt Defteri, Tak Çalıştır veya G/Ç yöneticisi alt sistemleri gibi çeşitli alt sistemlerini kapatmaya başladığı zaman olarak sistem kapatma işleminin başlangıcını atar.
Sisteme bir çekirdek hata ayıklayıcısı eklenmemişse, Sürücü Doğrulayıcı bu kesme noktası yerine parametre 1 değeri 0x115 olan bir Hata Denetimi 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION verir.
Genellikle 20 dakikadan kısa bir süre içinde tamamlanamayan bir sistem kapatma işlemi, bu sistemde çalışan sürücülerden birinin hatalı çalıştığını gösterir. Çekirdek hata ayıklayıcısından !analyze -v çalıştırılırken kapatma işleminden sorumlu sistem çalışan iş parçacığının yığın izlemesi görüntülenir. Bu yığın izlemesini incelemeniz ve kapatma iş parçacığının test edilen sürücülerden biri tarafından engellenip engellenmediğini belirlemeniz gerekir.
Bazen tüm sürücüler düzgün çalışıyor olsa bile sistem yoğun stres testlerine tabi olduğundan kapanamaz. Kullanıcı, bu Sürücü Doğrulayıcı kesme noktasından sonra yürütmeye devam etmeyi seçebilir ve sistemin sonunda kapanıp kapanmadığını denetleyebilir.