[Archiv bulletinů ^] [Svazek 1, číslo 2 >]

The Systems Internals Bulletin volume 1, Number 1

http://www.sysinternals.com


14. dubna 1999 – V tomto problému:

  1. CO JE NOVÉHO V INTERNÍCH SYSTÉMECH

    • VolumeID pro Windows 9x
    • EFSDump
    • ListDLLs pro Compaq Alpha
    • "Uvnitř procesu spouštění, část 2"
    • Můj dubnový systém Windows NT časopis článek
    • Bez kreditu, kde je splatný
    • Ne tak nové věci
  2. INTERNÍ ZPRÁVY

    • Ověřitel ovladače Win2K
    • Testování Y2K s Boot.ini
  3. CO SE CHYSTÁ

    • Spinlocks ve frontě ve Win2K
    • Tokenmon

SPONZOR: WINTERNALS SOFTWARE

Bulletin Internals Systems je sponzorován společností Winternals Software na webu na adrese http://www.winternals.com. Winternals Software je přední vývojář a poskytovatel pokročilých systémů nástrojů pro systém Windows NT/2K. Produkty Winternals Software zahrnují FAT32 pro systém Windows NT 4.0, ERD Commander (funkce spouštěcího disku pro systém Windows NT) a NTRecover.

Dobrý den,

Vítejte na první instalaci bulletinu Systems Internals. S radostí říkám, že bulletin již získal 1000 odběratelů od svého oznámení o něco více než týden.

Mým cílem v bulletinu je poskytnout vám včasné informace o nových nástrojích a článcích, které se objevují v systémech Internals, plus poskytnout tidbity informací o interních systémech Windows, které nemají odpovídající fórum na webu Systems Internals. Pokud máte nějaké komentáře nebo návrhy týkající se bulletinu, můžete je předat mi na mark@.... Také prosím předejte bulletin komukoli, koho víte, že by to mohlo zajímat. Pokyny k odběru, zrušení odběru nebo úpravě předplatného jsou k dispozici na konci bulletinu.

Díky!

-Známka

CO JE NOVÉHO V INTERNÍCH SYSTÉMECH

VOLUMEID PRO WINDOWS 9X

I když systém Windows NT a Windows 9x umožňují změnit popisek na logické jednotce nebo disketové jednotce pomocí příkazu "label", poskytují žádné prostředky pro to, abyste mohli změnit ID svazku, které libovolně přiřazují při formátování jednotek. Program VolumeID, který byl k dispozici pro systém Windows NT na webu Interní systémy již více než rok, byl právě portován do Systému Windows 9x. Pomocí tohoto apletu můžete změnit ID svazků na pevných discích a disketách tak, jak chcete.

VolumeID používá rozhraní API, která aplikacím umožňují číst a zapisovat přímo na logické jednotky a na fyzických jednotkách (disketových jednotkách) Win9x a obcházet systémy souborů. Na systém Windows NT/2K VolumeID používá pro přístup k nezpracovaným datům jednotek běžný soubor ReadFile a WriteFile – trik určuje název svazku, ke který chce získat přístup. Informace o přístupu k fyzickým nebo logickým jednotkám z aplikace najdete v článku systém Windows NT/2K znalostní báze Microsoft Knowledge Base Q100027. Pro přístup k logickým jednotkám systému Windows 9x můžete kód založit na ukázkovém kódu uvedeném v článku znalostní báze Microsoft Knowledge Base Q174569. Pokud potřebujete provést přímý přístup k disketové jednotce z vaší aplikace ve Windows 9x, použijte win32 IOCTL VWIN32_DIOC_DOS_INT13, který je dokumentován v MSDN.

Stáhnout VolumeID na adrese http://www.sysinternals.com/misc.htm.

EFSDUMP

Systém Windows 2000 bude debutem integrované technologie šifrování souborů od Microsoftu, systému souborů Encrypting. S EFS přichází řada nových rozhraní API pro manipulaci se šifrovanými soubory, včetně jedné, QueryUsersOnEncryptedFile, která umožňuje zjistit, kteří uživatelé mají zaregistrovaný přístup k šifrovaným souborům a kteří uživatelé jsou pro tyto soubory zaregistrovaní jako agenti obnovení. Napsal jsem malý program s názvem EFSDump, který vám umožní snadno zobrazit tyto informace pro šifrované soubory ve vašem systému.

I když jsem na téma rozhraní EFS API, existuje řada nových rozhraní API, která nebyla zdokumentována jako dubnový MSDN, něco docela rušivého v této pozdní fázi cyklu vydání Systému Windows 2000. Nejvýrazněji platí, že OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw a CloseEncryptedFileRaw (všechny jsou exportovány ADVAPI32.DLL Win2K) v současné době nejsou v dokumentu. Použití těchto rozhraní API vyžaduje každá aplikace, která si přeje zálohovat šifrované soubory, což znamená, že Microsoft o nich předává informace jenom vybraným partnerům, nebo společnosti se zálohovacím softwarem budou muset vytáhnout své produkty ven, když je Microsoft nakonec veřejně zdokumentuje. Je jisté, že vývojáři programu NTBACKUP systému Windows 2000 už měli přístup k dokumentaci k rozhraní API: NTBACKUP win2K Beta 3 aktivně používá rozhraní API.

Pokud vás zajímají interní nástroje EFS, nezapomeňte se podívat na nadcházející červen/červenec dvoudílné série efs ve sloupci "NT Internals" v systém Windows NT Magazine. V článku přesně popíšem, kde jsou uložené klíče FEKs (Šifrovací klíče souborů) a klíče EFS uživatele, jak proces šifrování provádí NTFS, ovladač EFS a LSASRV (Místní server subsystému autority zabezpečení) a jak dešifrování funguje.

Stáhnout EFSDump s úplným zdrojovým kódem na adrese http://www.sysinternals.com/misc.htm.

LISTDLLS PRO COMPAQ ALPHA

Počet nástrojů dostupných pro Alpha at Systems Internals stále roste. Nejnovějším doplňkem je ListDLLs, nástroj příkazového řádku, který umožňuje zobrazit informace o knihovně DLL pro spuštěné procesy. Nástroj HandleEx umožňuje zobrazit tyto informace a také informace o popisovačích (soubory, procesy, vlákna, synchronizační objekty), které byly otevřeny, ale HandleEx je nástroj GUI, takže jeho ne vždy pohodlné (nejde spustit v dávkovém souboru například).

Zajímá vás poměr stahování typického nástroje Systems Internals verze x86 s odpovídající verzí Alpha? Jeho přibližně 20:1, který úzce sleduje odhady odvětví nainstalované uživatelské základny Alpha NT jako 5% z celkového trhu NT.

Seznamy ListDLLs a další alfa porty, včetně HandleEx, si můžete stáhnout na adrese http://www.sysinternals.com/alpha.htm.

"UVNITŘ PROCESU SPOUŠTĚNÍ, ČÁST 2"

Můj leden "NT Internals" sloupec z systém Windows NT Magazine je nyní k dispozici on-line prostřednictvím systém Windows NT Magazine webové stránky. Odkaz na něj najdete i ve sloupcích 1 a starších "NT Internals" na stránce Publikace v systémech Internals: http://www.sysinternals.com/publ.htm.

MY APRIL WINDOWS NT MAGAZINE ČLÁNEK

Nezapomeňte se také podívat na můj článek o funkcích v dubnovém vydání časopisu systém Windows NT Magazine, "Linux a enterprise". Odhalím několik významných problémů týkajících se jádra Linuxu 2.2 a síťových serverových aplikací ("podnikové" aplikace), které v konečném důsledku zabrání této verzi jádra Linuxu v konkurenční hlavicích s NT a dalšími variantami UNIX z hlediska výkonu.

BEZ KREDITU, KDE JE SPLATNÁ

Na související poznámce jste možná slyšeli o nedávno vydané společnosti D.H. Brown (analytik společnosti) v Linuxu jako podnikovém operačním systému. Ukázalo se, že autor zprávy silně "půjčil" z e-mailu mého, který někdo veřejně publikoval do linuxového jádra Usenet newsgroup zpět v lednu. Pokud máte přístup k sestavě a přečtete si stránky (44 a 45), které diskutují o Linuxu a multiprocesorech (sestava není veřejně dostupná – musíte si ji koupit za hefty sumu) a pak si přečíst můj e-mail v Deja News, uvidíte přímou paralelizaci až po malé podrobnosti.

NE TAK NOVÉ VĚCI

Používám tento oddíl bulletinu k vyvolání nedávných změn na webu Interní systémy, o kterých si nejste vědomi, a/nebo poskytnout další informace o nástroji, než je k dispozici na webu. Například před několika týdny jsme vydali Filemon v4.1. Tato verze Filemonu umožňuje monitorovat aktivitu pojmenovaného kanálu i slotu pošty v systém Windows NT/2K. Vylepšení kódu, který byl nutný k tomu, aby to bylo relativně malé, protože pojmenované kanály a Mailslots jsou implementovány jako ovladače systému souborů. Těžkou částí (zdlouhavé) bylo zjištění privátních vstupně-výstupních řídicích příkazů (I/O Control Commands), které tyto speciální systémy souborů podporují, aby je Filemon mohl ukázat. Filemon (který funguje na systém Windows NT/2K a Windows 9x) si můžete stáhnout na adresehttp://www.sysinternals.com/filemon.htm.

Pokud se chcete dozvědět více o tom, jak Filemon interně funguje interně, podívejte se na můj únorový systém Windows NT časopis "NT Internals" sloupec, který má název "Inside NT Utilities". Tento článek popisuje, jak používat Filemon, Regmon, NTFSDOS, NewSID a HandleEx a dozvíte se něco o tom, jak fungují.

INTERNÍ ZPRÁVY

WINDOWS 2000 DRIVER VERIFIER

Systém Windows 2000 Beta 3 představuje velmi výkonnou podporu pro vývoj ovladačů zařízení s názvem Driver Verifier. Tento nástroj pracuje s kódem v jádru k získání kontroly nad ovladačem a jeho cvičením pro dodržování pravidel režimu jádra způsobem, který předtím nebyl možný. Ovladače zařízení Buggy jsou zdaleka nejvýznamnějším příspěvkem k pověsti mnoha lidí, že NT je nestabilní operační systém, a tento nástroj je zaměřen na opravu této pověsti tím, že pomáhá autorům ovladačů najít své chyby předtím, než uživatelé.

Několik typů drobných problémů může díky neformálnímu testování obchodních faktorů (nejběžnějším typem zkoušek provedeným při těsných omezeních mezi časem) a dokonce i proklouznout přes závažné zátěžové testy. Jedním z typů běžných potíží s ovladačem je ovladač, který přistupuje k stránkované paměti se zvýšenými oprávněními IRQL (vysoká priorita přerušení). Pokud se stane, že paměť, ke které ovladač přistupuje, je fyzicky přítomná v době přístupu (nebyla stránkována do stránkovacího souboru), bude neplatný přístup bez zaškrtnutí. Uvolněte ovladač, který porušuje toto pravidlo, do divokého světa uživatelů a jeho vazby k zobrazení, což vede k chybovému ukončení modré obrazovky.

Dalším typem běžné chyby programování ovladačů je, že vývojář napíše kód s předpokladem, že stránkovaná a/nebo nestárka paměti bude vždy k dispozici, tj. nekontrolují návratové hodnoty pro přidělení. Pokud dojde k vyčerpání fondu a ovladač obdrží adresu vyrovnávací paměti NULL ovladač merrily dereferences systém na modrou obrazovku. I když je vyčerpání fondu vzácným výskytem, není to něco, co by mělo správci systému dát modrou obrazovku. Související chyba paměti je přetečení vyrovnávací paměti nebo podtečení, kdy ovladač čte nebo zapisuje mimo vyrovnávací paměť, které přidělil.

Nástroj Driver Verifier řeší problémy IRQL nahrazením volání všech funkcí, které manipulují s seznamy IRQLs v ovladači (např. KeRaiseIrql, KeAcquireSpinLock) odpovídajícími funkcemi jádra ověřovatele (VerifierKeRaiseIrql, VerifierKeAcquireSpinLock) v době, kdy se ovladač načte. Při každém vyvolání IRQL na DISPATCH_LEVEL nebo vyšší kód ověřovatele volá interní funkci Správce paměti, MmTrimAllPageableSystemMemory()aby všechny stránkovaná data vynutila nedostatek fyzické paměti. Proto okamžik, kdy ovladač přeruší pravidlo IRQL pro přístup k stránkovatelným datům nebo kódu z DISPATCH_LEVEL nebo vyšší verze, Správce paměti zjistí pokus o přístup k neexistující stránce a vyvolá modrou obrazovku. Vývojář tak může rychle zachytit tyto typy chyb, než ovladač přejde ven, protože může ladit chybové ukončení a vidět ovladač sedící v zásobníku chyb.

Nástroj Driver Verifier provádí testování využití paměti pomocí opravy tabulky importu ovladače, která se má ověřit, aby ovladač místo standardních verzí jádra volali ověřitelní paměťové funkce. Například volání ExAllocatePool je nahrazeno voláním VerifierAllocatePool. Verifier používá dvě techniky, které vývojáři pomáhají rychle najít chyby v paměti. První je, že používá speciální fond paměti, kde strážní stránka (strážná stránka je neplatná stránka) je umístěna těsně za koncem vyrovnávací paměti. Kromě toho je část stránky, ve které je vyrovnávací paměť přidělena, která předchází vyrovnávací paměti, vyplněna podpisem. Přetečení, která jsou na stránce za koncem vyrovnávací paměti, se detekují okamžitě, protože způsobí nelegální chyby stránky na strážené stránce. Podprůhledy, které zahrnují úpravy dat před vyrovnávací pamětí, jsou zjištěny ověřitelem, když ovladač uvolní paměť, protože podpis se změní.

Ovladače, které vždy očekávají neprázdný fond, budou ošidné do generování chybových ukončení nástrojem Verifier s použitím injektáže chyby paměti. Ověřitel můžete nakonfigurovat tak, aby náhodně selhal přidělení fondu ovladače.

Existuje několik dalšíchtypůchm kódům (IRP) existuje několik dalších typů chyb, které kontroluje ovladač, včetně konzistence vstupně-výstupní

Pokud jste vývojář ovladačů zařízení, budete dělat sami sebe, svou společnost a komunitu NT laskavost testováním pomocí verifieru. Mějte na paměti, že byste také měli otestovat ovladače NT 4.0, které jsou kompatibilní s Win2K, jakmile budete mít přístup k nástroji Driver Verifier (většina vývojářů ji dostane se zásilkou Win2K Beta 3 na webu MSDN na konci dubna nebo května).

Další informace naleznete v tématu Driver Verifier.

TESTOVÁNÍ Y2K POMOCÍ BOOTU. INI

Pokud často kontrolujete web interních systémů, pravděpodobně již znáte nové nezadokumentované spuštění Win2K. INI switch, /YEAR. Nezmínil jsem na webu, že přepínač je podporován také NT 4.0 Service Pack 4. Tento přepínač umožňuje falšování NT a veškerého softwaru v systému NT myslet, že je to jiný rok. Například /YEAR=2001 by systém myslel, že byl 2001 místo roku 1999. Přepínač je tedy ideální pro testování problémů s Y2K na jakékoli úrovni softwaru a výhodou jeho použití místo ručního resetování hodin SYSTÉMU BIOS (například pomocí apletu Clock) je, že změna je dočasná a aktivní pouze při spuštění instalace, která má přepínač, který je v jeho BOOT. Řádek INI. Díky tomu můžete snadno vytvořit speciální instalaci Y2K jednoduše tak, že z BOOT vezmete existující spouštěcí řádek. INI, duplikuje ho a přidá přepínač /YEAR.

CO SE CHYSTÁ

Během několika týdnů očekáváme další bulletin. Interní tip budu mít pro vás příště o Queued Spinlocks, nový typ spinlock, který Systém Windows 2000 používá pro své globální spinlocky. Tady jsou globální spinlocky, které existují v systému Windows 2000:

  • KiDispatcherLock: zámek databáze plánovače
  • KiContext-SwapLock: zámek pro prohození běhounu
  • MmPfnLock: zámek databáze fyzického rámce stránky
  • MmSystemSpaceLock: zámek adresního prostoru v režimu jádra
  • CcMasterSpinLock: globální zámek Správce mezipaměti
  • CcVacbSpinLock: zámek mapování pole správce mezipaměti

Místo použití běžných spinlocků jádra (KeAcquireSpinLock, KeReleaseSpinLock) pro tyto globální zámky jako NT 4.0, jádro Windows 2000 používá spinlocks ve frontě (KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock). Tyto zámky mají několik zajímavých vlastností, které minimalizují aktivitu sběrnice na ip adresách. Až budete příště vědět, jak se implementují zablokované zámky ve frontě.

Připravujeme v systémech Internals tokenmon, další monitorovací nástroj. Tokenmon vám ukáže podrobné informace o všech aktivitách souvisejících s tokeny ve vašem systému, včetně přihlášení, odhlášení, použití oprávnění a zosobnění.


Děkujeme vám za přečtení bulletinu Internals Systems.

Publikováno ve středu, 14. dubna 1999 16:16 od ottoh

[Archiv bulletinů ^] [Svazek 1, číslo 2 >]