Aracılığıyla paylaş


[Bülten Arşivi ^] [Birim 1, Sayı 2 >]

Systems Internals Bülten Cilt 1, Sayı 1

http://www.sysinternals.com


14 Nisan 1999 - Bu sorunda:

  1. SISTEM IÇLERINDEKI YENILIKLER

    • Windows 9x için VolumeID
    • EFSDump
    • Compaq Alpha için ListDLL'ler
    • "Önyükleme İşleminin İçinde, Bölüm 2"
    • Nisan Windows NT Dergisi Makalem
    • Süresi Dolacağı Yerde Kredi Yok
    • Pek De Yeni Olmayan Şeyler
  2. İÇ HABERLER

    • Win2K Sürücü Doğrulayıcı
    • Boot.ini ile Y2K Testi
  3. YAKLAŞANLAR

    • Win2K'de kuyruğa alınan spinlock'lar
    • Belirteçmon

SPONSOR: WINTERNALS SOFTWARE

Systems Internals Newsletter, Winternals Software sponsorluğunda, web'de http://www.winternals.com. Winternals Software, Windows NT/2K için gelişmiş sistem araçlarının önde gelen geliştiricisi ve sağlayıcısıdır. Winternals Software ürünleri Windows NT 4.0 için FAT32, ERD Commander (Windows NT için önyükleme diski özelliği) ve NTRecover'ı içerir.

Herkese merhaba,

Systems Internals Bülteni'nin ilk taksitine hoş geldiniz. Bültenin bir hafta önce duyurulmasından bu yana 1000 abone edindiğini söylemekten mutluluk duyuyorum.

Bültendeki amacım, Size Systems Internals'te görünen yeni yardımcı programlar ve makaleler hakkında zamanında bilgi vermek, ayrıca Size Systems Internals web sitesinde uygun bir foruma sahip olmayan Windows iç sistemleri hakkında bilgi vermektir. Bültenle ilgili herhangi bir yorumunuz veya öneriniz varsa, mark@'de bunları bana iletmekten çekinmeyin.... Ayrıca, lütfen bülteni ilginizi çekebilecek bildiğiniz herkese iletin. Aboneliğinizi abone yapma, abonelikten çıkarma veya değiştirme yönergeleri bültenin sonunda sağlanır.

Teşekkürler!

-İşaret

SISTEM IÇLERINDEKI YENILIKLER

WINDOWS 9X IÇIN VOLUMEID

Windows NT ve Windows 9x, "label" komutunu kullanarak bir mantıksal sürücü veya disket üzerindeki etiketi değiştirmenize izin verirken, sürücüleri biçimlendirirken rastgele atadıkları birim kimliklerini değiştirebilmeniz için hiçbir yol sağlamaz. Bir yıldan uzun süredir Systems Internals sitesinde Windows NT için kullanılabilen VolumeID programı, Windows 9x'e yeni geçirilmiştir. Bu uygulama, sabit sürücülerdeki ve disketlerdeki birim kimliklerini istediğiniz şekilde değiştirmenize olanak tanır.

VolumeID, uygulamaların doğrudan mantıksal sürücülere ve Win9x'te fiziksel sürücülere (disketler) dosya sistemlerini atlayarak okumasına ve yazmasına olanak sağlayan API'leri kullanır. Windows NT/2K VolumeID'de ham sürücü verilerine erişmek için normal ReadFile ve WriteFile kullanılır; püf noktası erişmek istediği birimin adını nasıl belirttiğidir. Q100027 Microsoft Bilgi Bankası makalesinde Windows NT/2K altında bir uygulamadan fiziksel veya mantıksal sürücülere nasıl erişebileceğinizi öğrenebilirsiniz. Windows 9x'in mantıksal sürücülere erişimi için, Q174569 Microsoft Bilgi Bankası makalesinde sağlanan örnek kodu temel alabilirsiniz. Windows 9x'te uygulamanızdan doğrudan disket sürücüsü erişimi gerçekleştirmeniz gerekiyorsa, MSDN'de belgelenen Win32 IOCTL VWIN32_DIOC_DOS_INT13 kullanın.

VolumeID'i şu konumdan indirin: http://www.sysinternals.com/misc.htm.

EFSDUMP

Windows 2000, Microsoft'un yerleşik dosya şifreleme teknolojisi olan Şifreleme Dosya Sistemi'nin ilk örneği olacaktır. EFS ile şifrelenmiş dosyaları işlemek için queryusersOnEncryptedFile gibi şifrelenmiş dosyalara erişim sahibi olmak üzere hangi kullanıcıların kayıtlı olduğunu ve hangi kullanıcıların bu dosyalar için Kurtarma Aracıları olarak kaydedildiğini görmenizi sağlayan bir dizi yeni API gelir. Sisteminizdeki şifrelenmiş dosyalar için bu bilgileri kolayca görmenizi sağlayan EFSDump adlı küçük bir program yazdım.

EFS API'leri konusunda çalışırken, Windows 2000 yayın döngüsünün bu geç aşamasında oldukça rahatsız edici bir durum olan Nisan MSDN'sinde belgelenmemiş yeni API'lerin sayısı var. En önemlisi, OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw ve CloseEncryptedFileRaw (tümü Win2K'nin ADVAPI32.DLL tarafından dışarı aktarılır) şu anda belgelenmemiş durumdadır. Bu API'lerin kullanılması, şifrelenmiş dosyaları yedeklemek isteyen herhangi bir uygulama için gereklidir. Bu, Microsoft'un bu dosyalar hakkında yalnızca iş ortaklarını seçmek için bilgi ilettiği veya Microsoft'un bunları genel olarak belgelediği durumlarda yedekleme yazılımı şirketlerinin ürünlerini kapıdan çıkarmak için çabalamaları gerekmesi anlamına gelir. Windows 2000'in NTBACKUP programının geliştiricilerinin API belgelerine zaten erişimi olduğu kesindir: Win2K Beta 3'ün NTBACKUP'ı API'leri etkin bir şekilde kullanıyor.

EFS iç işlevleriyle ilgileniyorsanız, Windows NT Magazine'deki "NT Internals" sütunumda EFS'deki haziran/temmuz iki bölümlü serime göz atdığınızdan emin olun. FET'lerin (Dosya Şifreleme Anahtarları) ve kullanıcı EFS anahtarlarının tam olarak nerede depolandığını, şifreleme işleminin NTFS, EFS sürücüsü ve LSASRV (Yerel Güvenlik Yetkilisi Alt Sistem Sunucusu) tarafından nasıl gerçekleştirildiğini ve elbette şifre çözmenin nasıl çalıştığını açıkliyorum.

EFSDump'ı tam kaynak koduyla indirin: http://www.sysinternals.com/misc.htm.

COMPAQ ALPHA IÇIN LISTDLLS

Systems Internals'te Alfa için kullanılabilir yardımcı programların sayısı artmaya devam ediyor. En son ekleme, çalışan işlemler için DLL bilgilerini görüntülemenizi sağlayan bir komut satırı yardımcı programı olan ListDLL'ler'dir. HandleEx aracım, bu bilgilerin yanı sıra işlemlerin açtığı tanıtıcılar (dosyalar, işlemler, iş parçacıkları, eşitleme nesneleri) hakkındaki bilgileri görmenizi sağlar, ancak HandleEx bir GUI aracı olduğundan her zaman uygun değildir (örneğin, bir toplu iş dosyası içinde çalıştırılamaz).

Tipik Systems Internals yardımcı programının x86 sürümünün indirmelerinin ilgili Alfa sürümüne oranını merak ediyor musunuz? Yüklü Alpha NT kullanıcı tabanının toplam NT pazarının %5'i olduğu sektör tahminlerini yakından izleyen yaklaşık 20:1.

ListDLL'leri ve HandleEx dahil olmak üzere diğer Alfa bağlantı noktalarını http://www.sysinternals.com/alpha.htm.

"ÖNYÜKLEME IŞLEMININ IÇINDE, BÖLÜM 2"

Windows NT Magazine'den Ocak "NT Internals" sütunum artık Windows NT Magazine web sitesi üzerinden satır içi olarak kullanılabilir. Bunun ve Bölüm 1 ve daha eski "NT Internals" sütunlarının bağlantısını Systems Internals'in Yayınlar sayfasında bulabilirsiniz: http://www.sysinternals.com/publ.htm.

NISAN WINDOWS NT MAGAZINE MAKALEM

Ayrıca, Windows NT Magazine'in Nisan sayısında yer alan "Linux ve Enterprise" başlıklı özellik makaleme de göz atabilirsiniz. Linux çekirdeğinin bu sürümünün performans açısından NT ve diğer UNIX varyantlarıyla kafa kafaya rekabet etmesini engelleyecek Linux 2.2 çekirdek ve ağ sunucusu uygulamalarıyla ("kurumsal" uygulamalar) ilgili birkaç önemli sorun ortaya çıkarıyorum.

VADESİ DOLACAĞı YERDE KREDİ YOK

İlgili bir notta, Linux'un kurumsal işletim sistemi olarak özelliği hakkında yakın zamanda yayımlanan D.H. Brown 'ı (analist bir şirket) duymuş olabilirsiniz. Raporun yazarının, ocak ayında Linux çekirdeği Usenet haber grubuna genel olarak yayımladığı bir e-postadan büyük ölçüde "ödünç" aldığı ortaya çıktı. Rapora erişiminiz varsa ve Linux ve çok işlemcili (rapor genel kullanıma açık değil) hakkında bilgi veren sayfaları (44 ve 45) okuyorsanız (rapor genel kullanıma açık değil; bunu büyük bir toplam karşılığında satın almalısınız) ve ardından Deja News'te e-postamı okusanız, küçük ayrıntılara kadar doğrudan paralel bir değer görürsünüz.

ÇOK YENI OLMAYAN ŞEYLER

Haber bülteninin bu bölümünü, Sistem İçleri sitesinde farkında olmayabileceğiniz son değişiklikleri getirmek ve/veya bir yardımcı program hakkında sitede bulunandan daha fazla bilgi sağlamak için kullanıyorum. Örneğin, birkaç hafta önce Filemon v4.1'i yayımladık. Filemon'un bu sürümü, Windows NT/2K altında hem Adlandırılmış Kanal hem de Posta Yuvası etkinliğini izleyebilir. Adlandırılmış Kanallar ve Mailslot'lar dosya sistemi sürücüleri olarak uygulandığından, bunu desteklemek için gereken kodda yapılan geliştirme nispeten küçük bir geliştirmeydi. Bu özel dosya sistemlerinin desteklediği özel IOCTL'leri (G/Ç Denetim Komutları) Filemon'un gösterebilmesi için zor olan kısmı (yorucu) bulmaktı. Dosyamon'ı (Windows NT/2K ve Windows 9x'te çalışır) adresinden indirebilirsiniz http://www.sysinternals.com/filemon.htm.

Filemon'ın dahili olarak nasıl çalıştığı hakkında daha fazla bilgi edinmek isterseniz, "Inside NT Utilities" adlı Şubat Windows NT Magazine "NT Internals" sütunuma bakın. Makalede Filemon, Regmon, NTFSDOS, NewSID ve HandleEx'in nasıl kullanılacağı açıklanır ve nasıl çalıştıkları hakkında biraz bilgi verilmektedir.

İÇ HABERLER

WINDOWS 2000 SÜRÜCÜ DOĞRULAYıCı

Windows 2000 Beta 3, Sürücü Doğrulayıcı adlı çok güçlü bir cihaz sürücüsü geliştirme yardımı kullanıma sunulmuştur. Bu araç, sürücünüzün denetimini elde etmek için çekirdekteki kodla birlikte çalışır ve daha önce mümkün olmayan bir şekilde çekirdek modu kurallarına bağlı kalmak için bunu kullanın. Buggy cihaz sürücüleri NT'nin kararsız bir işletim sistemi olduğu birçok kişi arasında saygınlık açısından en önemli katkıdır ve bu araç, sürücü yazarlarının hatalarını kullanıcılardan önce bulmasına yardımcı olarak bu itibarı onarmayı amaçlar.

Birkaç tür ince sorun, gündelik sürücü testi (pazara çıkış süresi kısıtlamaları altında gerçekleştirilen en yaygın test türü) ve hatta ciddi stres testlerinden geçmenizi sağlayabilir. Yaygın sürücü sorunlarından biri, "yükseltilmiş IRQL" (yüksek kesme önceliği) konumunda disk belleğine erişen bir sürücüdür. Sürücünün eriştiği bellek erişim sırasında fiziksel olarak mevcutsa (disk belleği dosyasına çağrılmamışsa), geçersiz erişim dikkat çekmez. Bu kuralı ihlal eden bir sürücüyü kullanıcıların vahşi dünyasına bırakın ve görünmeye bağlı olarak Mavi Ekran kilitlenmesine neden olun.

Diğer bir yaygın sürücü programlama hatası türü, bir geliştiricinin disk belleği ve/veya disk belleği olmayan belleğin her zaman kullanılabilir olacağı varsayımıyla kodu yazmasıdır; örneğin, ayırmalar için dönüş değerlerini denetlemez. Havuz tükenirse ve sürücü bir NULL arabellek adresi alırsa, sürücü sistemi Mavi Ekran'a başvurur. Havuz tükenmesi nadir görülen bir durum olsa da, Sistem Yöneticisine Mavi Ekran vermesi gereken bir şey değildir. İlgili bellek hatası, bir sürücünün ayırdığı bir arabelleğin dışında okuduğu veya yazdığı arabellek taşması veya yetersiz çalıştırmasıdır.

Sürücü Doğrulayıcı, bir sürücüdeki IRQL'leri işleyen tüm işlevlere (örn. KeRaiseIrql, KeAcquireSpinLock) yapılan çağrıları, sürücü yüklendiğinde karşılık gelen doğrulayıcı çekirdek işlevleriyle (VerifierKeRaiseIrql, VerifierKeAcquireSpinLock) değiştirerek IRQL sorunlarını giderir. IRQL'e DISPATCH_LEVEL veya daha yükseğe yükseltildiğinde doğrulayıcı kodu, MmTrimAllPageableSystemMemory()disk belleğine alınan tüm verileri fiziksel belleğin dışına zorlamak için bir iç Bellek Yöneticisi işlevini çağırır. Bu nedenle, bir sürücünün disk belleğine alınabilen verilere veya kodlara veya daha yüksek bir sürümden DISPATCH_LEVEL erişilmemesiyle ilgili IRQL kuralını kırdığı anda, Bellek Yöneticisi mevcut olmayan bir sayfaya erişme girişimini algılar ve Mavi Ekran oluşturur. Bu, bir geliştiricinin sürücü kapıdan çıkmadan önce bu tür hataları hızlı bir şekilde yakalamasını sağlar, çünkü kilitlenme hatalarını ayıklayabilir ve sürücüsünü hata yığınında görebilir.

Sürücü Doğrulayıcı, sürücü standart çekirdek sürümleri yerine doğrulayıcı bellek işlevlerini çağıracak şekilde doğrulanacak sürücünün içeri aktarma tablosuna düzeltme eki uygulama ile Bellek kullanımı testini gerçekleştirir. Örneğin çağrısı, ExAllocatePool çağrısı ile VerifierAllocatePooldeğiştirilir. Bir geliştiricinin bellek hatalarını hızla bulmasına yardımcı olmak için Doğrulayıcı'nın kullandığı iki teknik vardır. Birincisi, bir koruma sayfasının (koruma sayfası geçersiz bir sayfadır) arabelleğin hemen sonuna yerleştirildiği özel bir bellek havuzu kullanmasıdır. Buna ek olarak, arabelleğin arabellek öncesinde ayrıldığı sayfanın bölümü bir imzayla doldurulur. Bir sayfanın içinde arabellek sonunun ötesindeki taşmalar, koruma sayfasında geçersiz sayfa hatalarına neden olacağından hemen algılanır. Arabellek öncesinde verilerde değişiklik yapılması gereken alt çalıştırmalar, sürücü belleği serbest bıraktığında Doğrulayıcı tarafından algılanır, çünkü imza değişir.

Her zaman boş olmayan havuz bekleyen sürücüler, Doğrulayıcı tarafından "bellek hata ekleme" kullanımıyla kilitlenmeler oluşturmak için kandırılır. Doğrulayıcı'nın bir sürücünün havuz ayırmalarında rastgele başarısız olmasını sağlayabilirsiniz.

Sürücü Doğrulayıcı'nın denetlemesi gereken IRP (G/Ç İstek Paketi) tutarlılığı ve sistem ve sürücü kodu sayfalarının salt okunur koruması gibi birkaç hata türü daha vardır.

Cihaz sürücüsü geliştiricisiyseniz Doğrulayıcı ile test ederek kendiniz, şirketiniz ve NT topluluğuna bir iyilik yapmış olursunuz. Sürücü Doğrulayıcı'ya erişiminiz olur olmaz Win2K ile uyumlu NT 4.0 sürücülerinizi de test etmelisiniz (geliştiricilerin çoğu, MSDN'nin Nisan veya Mayıs ayının sonlarında Win2K Beta 3'ün gönderimiyle edinecektir).

Daha fazla bilgi için bkz . Sürücü Doğrulayıcı.

ÖNYÜKLEME ILE Y2K TESTI. INI

Systems Internals Web sitesini sık sık denetlediyseniz, büyük olasılıkla yeni Win2K belgesiz BOOT'un farkındasınızdır. INI anahtarı, /YEAR. Web sitesinde anahtarın NT 4.0 Service Pack 4 tarafından da desteklendiğinden bahsetmedim. Bu anahtar, NT sistemindeki tüm yazılımların ve NT'nin farklı bir yıl olduğunu düşünmenizi sağlar. Örneğin, /YEAR=2001, sistemin 1999 yerine 2001 olduğunu düşünmesini sağlar. Bu nedenle, anahtar herhangi bir yazılım düzeyinde Y2K sorunlarını test etmek için idealdir ve BIOS saatini el ile sıfırlamak yerine bunu kullanmanın avantajı (örneğin Saat uygulaması aracılığıyla), değişikliğin geçici olması ve yalnızca önyüklemesinde anahtarın bulunduğu bir yüklemede önyükleme yaptığınızda etkin olmasıdır. INI satırı. Bu, BOOT'dan mevcut bir önyükleme hattını alarak özel bir Y2K yüklemesi oluşturmayı kolaylaştırır. INI, yineleme ve /YEAR anahtarını ekleme.

YAKLAŞANLAR

Bir sonraki bülteni birkaç hafta içinde bekleyin. Bir dahaki sefere size vereceğim iç ipuçları, Windows 2000'in genel spinlock'ları için kullandığı yeni bir spinlock türü olan Kuyruğa Alınmış Spinlock'lar hakkında olacak. Windows 2000'de mevcut olan genel spinlock'lar şunlardır:

  • KiDispatcherLock: zamanlayıcı veritabanı kilidi
  • KiContext-SwapLock: sırt değiştirme kilidi
  • MmPfnLock: fiziksel sayfa çerçevesi veritabanı kilidi
  • MmSystemSpaceLock: çekirdek modu adres alanı kilidi
  • CcMasterSpinLock: Cache Manager'ın genel spinlock'u
  • CcVacbSpinLock: Önbellek Yöneticisi'nin eşleme dizisi kilidi

Windows 2000 çekirdeği, NT 4.0'ın yaptığı gibi bu genel kilitler için normal çekirdek spinlock'ları (KeAcquireSpinLock, KeReleaseSpinLock) kullanmak yerine kuyruğa alınmış spinlock'ları (KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock) kullanır. Bu kilitler, SMP'lerde veri yolu etkinliğini en aza indiren bazı ilginç özelliklere sahiptir. Bir dahaki sefere kuyruğa alınmış spinlock'ların nasıl uygulandığını anlatacağım.

Yakında Systems Internals'te Tokenmon, ancak başka bir izleme aracı sunulacaktır. Tokenmon, oturum açma bilgileri, oturum kapatmalar, ayrıcalıkların kullanımı ve kimliğe bürünme dahil olmak üzere sisteminizdeki belirteçle ilgili tüm etkinlikler hakkında ayrıntılı bilgiler gösterir.


Systems Internals Bülten'i okuduğun için teşekkür ederiz.

Yayın tarihi: 14 Nisan 1999 Çarşamba 19:16 ottoh

[Bülten Arşivi ^] [Birim 1, Sayı 2 >]