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.
Bellek bozulması yaygın bir sürücü sorunudur. Sürücü hataları, yapıldıktan uzun süre sonra kazalara neden olabilir. Bu hatalardan en yaygın olanı, zaten serbest bırakılmış belleğe erişme ve n bayt ayırma ve ardından n+1 bayt'a erişmedir.
Sürücü Doğrulayıcı, bellek bozulmasını algılamak için sürücü belleğini özel bir havuzdan ayırabilir ve bu havuzu yanlış erişim için izleyebilir. ExAllocatePoolWithTag gibi çekirdek modu sistem tarafından sağlanan yordamlar ve engAllocMem gibi GDI sistem tarafından sağlanan yordamlar için özel havuz desteği sağlanır.
Hizalamalara göre özel havuz
Özel havuzun iki hizalaması vardır:
- Başlangıç Doğrulama hizalaması, erişim alt taşmalarını algılamada daha iyidir.
- Doğrulama Bitişi hizalaması, erişim taşmalarını tespit etmede daha iyidir.
Başlangıcı Doğrula ve Bitişi Doğrula seçeneklerini kullanma hakkında daha fazla bilgi için bkz. Aşırı Çalıştırmaları ve Yetersiz Çalıştırmaları Algılama. Bellek bozulmalarının büyük çoğunluğunun az çalıştırmalardan değil, taşmalardan kaynaklandığını unutmayın.
Özel Havuz özelliği etkin olduğunda ve Bitişi Doğrula seçildiğinde, sürücü tarafından istenen her bellek ayırması ayrı bir sayfaya yerleştirilir. Ayırmanın sayfaya sığmasına izin veren mümkün olan en yüksek adres döndürülür, böylece bellek sayfanın sonuna hizalanır. Sayfanın önceki bölümü özel desenlerle yazılır. Önceki sayfa ve sonraki sayfa erişilemez olarak işaretlenir.
Eğer sürücü, ayırma işleminin sonundan sonra belleğe erişmeye çalışırsa, Sürücü Doğrulayıcı bunu hemen algılar ve Hata Denetimi 0xCD verir. Sürücü, arabelleğin başlangıcından önce belleğe yazarsa, bu (büyük olasılıkla) desenleri değiştirir. Arabellek serbest bırakıldığında Sürücü Doğrulayıcı değişikliği algılar ve Hata Kontrolü 0xC1 iletisi verir.
Sürücü arabelleği boşalttıktan sonra okuma veya yazma işlemi yaparsa, Sürücü Doğrulayıcı'sı Hata Denetimi 0xCC verir.
Başlangıç Doğrula seçildiğinde, bellek arabelleği sayfanın başlangıcıyla hizalanır. Bu ayarda, alt çalıştırmalar anında bir hata denetimine neden olur ve aşırı çalıştırmalar bellek boşaltıldığında hata denetimine neden olur. Bu seçenek, Ucu Doğrula seçeneğiyle aynıdır.
Taşma hatalarının, sürücülerde alt çalıştırma hatalarından çok daha yaygın olması nedeniyle, Doğrula Son'un varsayılan hizalama olduğunu doğrulayın.
Tek bir bellek ayırma, bu ayarları geçersiz kılarak ve Öncelik parametresi XxxSpecialPoolOverrun veya XxxSpecialPoolUnderrun olarak ayarlanmış ExAllocatePoolWithTagPriority çağrısı yaparak kendi hizalamasını seçebilir. (Bu rutin, özel havuz özelliğini etkinleştirme veya devre dışı bırakma işlemlerini yapamaz ya da normal havuzdan sağlanacak bir bellek tahsisi için özel havuzu talep edemez. Bu rutin yalnızca belirli bir hizalamayı kontrol edebilir.)
Windows işletim sisteminin Windows 7 ve sonraki sürümlerinde, Özel Havuz seçeneği aşağıdaki çekirdek API'leri kullanılarak ayrılan belleği destekler:
IoAllocateIrp ve G/Ç istek paketi (IRP) veri yapılarını ayırabilen diğer rutinler
RtlAnsiStringToUnicodeString ve diğer çalışma zamanı kitaplığı (RTL) dize rutinleri
IoSetCompletionRoutineEx
Havuz etiketine veya ayırma boyutuna göre özel havuz
Belirtilen bir sürücü tarafından ayırmalar için özel havuz isteyen Sürücü Doğrulayıcı'nın Özel Havuz özelliğine ek olarak, özel havuzu kullanmanın iki yolu daha vardır:
Havuz etiketi. Belirtilen havuz etiketine sahip tüm ayırmalar için özel havuz isteyin.
Boyut. Belirtilen boyut aralığındaki tüm ayırmalar için özel havuz isteyin.
Havuz etiketi veya boyut aralığı için özel havuz istemek için , Windows için Hata Ayıklama Araçları'nda bulunan bir araç olan Gflags'i kullanın. Ayrıntılar için bkz. Genel Bayraklar Yardımcı Programını Kullanma.
Sürücü Doğrulayıcı'nın Özel Havuz özelliğini ve Gflags'ın özel havuz özelliklerini aynı anda kullanabilirsiniz. Bunu yaparsanız, özel havuzun sınırlı olduğunu, özel havuzdan tahsis girişimlerinin tümünün başarılı olmadığını ve Windows'un normal bellek havuzlarından karşılanan özel havuzdan tahsis edilmeye çalışılmış başarısız girişimler için başarılı bir durum kodu döndürdüğünü unutmayın.
Özel havuz verimliliği
Tüm özel havuz istekleri yerine getirilmiyor. Özel havuzdan yapılan her ayırma, bir sayfa sayfa dışı yapılamayan fiziksel bellek ve iki sayfa sanal adres alanı kullanır. Havuz tükenirse, özel havuz yeniden kullanılabilir duruma gelene kadar bellek standart şekilde ayrılır. Standart havuzdan özel bir havuz isteği doldurulduğunda, havuz isteği başarılı olduğundan istekte bulunan işlev hata döndürmez. Bu nedenle, Özel Havuz özelliği etkinleştirilirse aynı anda birden çok sürücünün doğrulanması önerilmez.
Çok sayıda küçük bellek isteği yapan tek bir sürücü de bu havuzu tüketebilir. Bu durumda, sürücünün bellek ayırmalarına havuz etiketleri atamak ve özel havuzu her seferinde bir havuz etiketine ayırmak tercih edilebilir.
Sistemdeki fiziksel bellek miktarıyla birlikte özel havuzun boyutu artar; ideal olarak bu en az 1 Gigabayt (GB) olmalıdır. x86 makinelerinde sanal (fiziksel alana ek olarak) alan kullanıldığından /3GB önyükleme seçeneğini kullanmayın. Disk belleği dosyasının minimum/maksimum miktarlarını iki veya üç kat artırmak da iyi bir fikirdir.
Bir sürücünün tüm bellek tahsislerinin test edildiğinden emin olmak için, sürücünün uzun süreler boyunca yoğun bir şekilde test edilmesi önerilir.
Özel havuzu izleme
Havuz ayırmalarıyla ilgili istatistikler izlenebilir. Bunlar Sürücü Doğrulayıcı Yöneticisi, Verifier.exe komut satırı veya günlük dosyasında görüntülenebilir. Ayrıntılar için bkz. Genel Sayaçları İzleme .
Özel Havuz Ayırmaları Başarılı sayacı Havuz Ayırmaları Başarılı sayacına eşitse, özel havuz, tüm bellek ayırmalarını karşılayacak kadar yeterlidir. Önceki sayaç sonrakinden düşükse, özel havuz en az bir kez tükenmiştir.
Bu sayaçlar, boyutu bir sayfa veya daha büyük olan tahsisleri izlemez çünkü özel havuz bunlar için geçerli değildir.
Özel Havuz özelliği etkinse ancak tüm havuz ayırmalarının 95% azı özel havuzdan atanmışsa, Sürücü Doğrulayıcı Yöneticisi'nde bir uyarı görüntülenir. Windows 2000'de bu uyarı Sürücü Durumu ekranında görünür. Windows XP ve sonraki sürümlerde bu uyarı Genel Sayaçlar ekranında görünür. Bu durumda, daha kısa bir sürücü listesini doğrulamanız, havuz etiketine göre tek tek havuzları doğrulamanız veya sisteminize daha fazla fiziksel bellek eklemeniz gerekir.
Özel havuz kullanımını izlemek için çekirdek hata ayıklayıcısı uzantısı !verifier da kullanılabilir. Sürücü Doğrulayıcı Yöneticisi'ninkine benzer bilgiler sunar. Hata ayıklayıcı uzantıları hakkında bilgi için bkz. Windows Hata Ayıklama.
Özel havuz seçeneğini etkinleştirme
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 Özel Havuz özelliğini etkinleştirebilirsiniz. Ayrıntılar için bkz. Sürücü Doğrulayıcı Seçeneklerini Seçme.
Uyarı
Özel Havuz özelliğini havuz etiketine veya ayırma boyutuna göre etkinleştirmek veya Başlangıç Doğrulama (alt çalıştırmaları algıla) ve Bitişi Doğrula (taşmaları algıla) hizalamalarını ayarlamak için Genel Bayraklar yardımcı programını kullanın; bu hizalama ayarları tüm özel havuz ayırmalarına uygulanır.
Komut satırında
Komut satırında Özel Havuz seçeneği Bit 0 (0x1) ile gösterilir. Özel Havuz'u etkinleştirmek için 0x1 bayrak değerini kullanın veya bayrak değerine 0x1 ekleyin. Örneğin:
verifier /flags 0x1 /driver MyDriver.sysÖzellik bir sonraki önyüklemeden sonra etkin olacaktır.
Ayrıca komutuna /volatile parametresini ekleyerek bilgisayarı yeniden başlatmadan Özel Havuzu etkinleştirebilir ve devre dışı bırakabilirsiniz. Örneğin:
verifier /volatile /flags 0x1 /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.
Özel Havuz ö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.
- Özel havuz'a tıklayın (işaretleyin).
Özel Havuz ö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.