[Archiwum biuletynów ^][Wolumin 1, Liczba 2 >]

System wewnętrzny biuletyn woluminu 1, numer 1

http://www.sysinternals.com


14 kwietnia 1999 r. — w tym problemie:

  1. CO NOWEGO W SYSTEMACH WEWNĘTRZNYCH

    • VolumeID dla systemu Windows 9x
    • EFSDump
    • ListDLLs for Compaq Alpha
    • "Wewnątrz procesu rozruchu, część 2"
    • Mój kwietniowy artykuł magazynu Windows NT
    • Brak środków w przypadku, gdy jego należność
    • Nie tak nowe rzeczy
  2. WIADOMOŚCI WEWNĘTRZNE

    • Weryfikator sterowników Win2K
    • Testowanie Y2K za pomocą boot.ini
  3. CO SIĘ DZIEJE

    • Spinlocks w kolejce w win2K
    • Tokenmon

SPONSOR: WINTERNALS SOFTWARE

Biuletyn Internals Systems jest sponsorowany przez Winternals Software, w Sieci Web http://www.winternals.com. Winternals Software jest wiodącym deweloperem i dostawcą zaawansowanych narzędzi systemów dla systemu Windows NT/2K. Produkty Winternals Software obejmują FAT32 dla systemu Windows NT 4.0, ERD Commander (możliwości rozruchu dla systemu Windows NT) i NTRecover.

Witam wszystkich,

Witamy w pierwszej odsłonie biuletynu Systems Internals. Cieszę się, że biuletyn nabył już 1000 subskrybentów od czasu ogłoszenia nieco ponad tydzień temu.

Moim celem w biuletynie jest zapewnienie terminowych informacji na temat nowych narzędzi i artykułów, które pojawiają się w Systems Internals, plus dać tidbits informacji na temat wewnętrznych systemu Windows, które nie mają odpowiedniego forum w witrynie internetowej Systems Internals. Jeśli masz jakiekolwiek komentarze lub sugestie dotyczące biuletynu, możesz przekazać je do mnie w mark@.... Ponadto przekaż biuletyn każdemu, kto wie, że może cię to zainteresować. Instrukcje dotyczące subskrybowania, anulowania subskrypcji lub modyfikowania subskrypcji są udostępniane na końcu biuletynu.

Dziękujemy.

-Mark

CO NOWEGO W SYSTEMACH WEWNĘTRZNYCH

VOLUMEID DLA SYSTEMU WINDOWS 9X

Podczas gdy systemy Windows NT i Windows 9x umożliwiają zmianę etykiety na dysku logicznym lub dyskietce przy użyciu polecenia "label", nie zapewniają one możliwości zmiany identyfikatorów woluminów, które arbitralnie przypisują podczas formatowania dysków. Program VolumeID, który był dostępny dla systemu Windows NT w lokacji Systemy Wewnętrzne przez ponad rok, został właśnie przekierowany do systemu Windows 9x. To aplet umożliwia zmianę identyfikatorów woluminów na dyskach twardych i dyskietkach na dowolną wartość.

VolumeID używa interfejsów API, które umożliwiają aplikacjom odczytywanie i zapisywanie bezpośrednio na dyskach logicznych oraz na dyskach Win9x, dyskach fizycznych (dyskietkach), pomijając systemy plików. W systemie Windows NT/2K VolumeID używa zwykłych plików ReadFile i WriteFile do uzyskiwania dostępu do danych pierwotnych dysków — sztuczka polega na tym, jak określa nazwę woluminu, do którego chce uzyskać dostęp. Aby dowiedzieć się, jak uzyskać dostęp do dysków fizycznych lub logicznych z aplikacji w obszarze Windows NT/2K, zobacz artykuł z bazy wiedzy Microsoft Knowledge Base Q100027. W przypadku dostępu systemu Windows 9x do dysków logicznych możesz opierać kod na przykładowym kodzie podanym w artykule bazy wiedzy Microsoft Knowledge Base Q174569. Jeśli musisz wykonać bezpośredni dostęp do stacji dyskietek z aplikacji w systemie Windows 9x, użyj VWIN32_DIOC_DOS_INT13 IOCTL Win32, która jest udokumentowana w witrynie MSDN.

Pobierz identyfikator woluminu pod adresem http://www.sysinternals.com/misc.htm.

EFSDUMP

Windows 2000 będzie debiutem wbudowanej technologii szyfrowania plików firmy Microsoft, systemu szyfrowania plików. System EFS zawiera wiele nowych interfejsów API do manipulowania zaszyfrowanymi plikami, w tym jeden, QueryUsersOnEncryptedFile, który pozwala zobaczyć, którzy użytkownicy są zarejestrowani w celu uzyskania dostępu do zaszyfrowanych plików i którzy użytkownicy są zarejestrowani jako agenci odzyskiwania dla tych plików. Napisałem trochę programu o nazwie EFSDump, który umożliwia łatwe wyświetlanie tych informacji dla zaszyfrowanych plików w systemie.

Chociaż jestem na temat interfejsów API EFS, istnieje wiele nowych interfejsów API, które nie zostały udokumentowane jako april's MSDN, coś dość niepokojącego na tym późnym etapie w cyklu wydania systemu Windows 2000. W szczególności, OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw i CloseEncryptedFileRaw (wszystkie są eksportowane przez bibliotekę win2K ADVAPI32.DLL) są obecnie nieudokumentowane. Korzystanie z tych interfejsów API jest wymagane przez dowolną aplikację, która chce utworzyć kopię zapasową zaszyfrowanych plików, co oznacza, że firma Microsoft przekazuje informacje o nich tylko do wybierania partnerów lub firmy zajmujące się oprogramowaniem do tworzenia kopii zapasowych będą musiały prześcignąć swoje produkty, gdy firma Microsoft ostatecznie publicznie je udokumentowa. Jedną z rzeczy jest pewna, że deweloperzy programu NTBACKUP systemu Windows 2000 mają już dostęp do dokumentacji interfejsu API: NTBACKUP systemu Win2K Beta 3 aktywnie korzysta z interfejsów API.

Jeśli interesuje Cię wewnętrzna funkcja EFS, zapoznaj się z moim nadchodzącym czerwcem/lipcem dwuczęściowej serii efs w kolumnie "NT Internals" w magazynie Windows NT Magazine. W artykule opisano dokładnie, gdzie są przechowywane pliki FEKs (klucze szyfrowania plików) i klucze szyfrowania użytkownika, jak proces szyfrowania jest wykonywany przez ntfs, sterownik EFS i LSASRV (serwer podsystemu urzędu zabezpieczeń lokalnych) i oczywiście sposób działania odszyfrowywania.

Pobierz plik EFSDump z pełnym kodem źródłowym pod adresem http://www.sysinternals.com/misc.htm.

LISTDLLS FOR COMPAQ ALPHA

Liczba narzędzi dostępnych dla infrastruktury Alfa w systemach wewnętrznych nadal rośnie. Najnowszym dodatkiem jest ListDLLs, narzędzie wiersza polecenia, które umożliwia wyświetlanie informacji o bibliotekach DLL na potrzeby uruchamiania procesów. Narzędzie My HandleEx pozwala zobaczyć te informacje, a także informacje na temat dojść (plików, procesów, wątków, obiektów synchronizacji), które procesy zostały otwarte, ale HandleEx jest narzędziem graficznym interfejsu użytkownika, więc nie zawsze jest wygodne (nie można go uruchomić wewnątrz pliku wsadowego na przykład).

Czy zastanawiasz się, jaki jest współczynnik pobrań wersji x86 typowego narzędzia Systems Internals do odpowiedniej wersji Alpha? Jego około 20:1, który ściśle śledzi szacunki branżowe zainstalowanej bazy użytkowników Alpha NT jako 5% całkowitego rynku NT.

Listy LISTDLLs i inne porty alfa, w tym HandleEx, można pobrać pod adresem http://www.sysinternals.com/alpha.htm.

"WEWNĄTRZ PROCESU ROZRUCHU, CZĘŚĆ 2"

Moja styczniowa kolumna "NT Internals" z Magazynu Windows NT jest teraz dostępna online za pośrednictwem witryny internetowej Magazynu Windows NT. Link do niego można znaleźć, a także kolumny Część 1 i starsze "NT Internals" na stronie Publikacje w systemach wewnętrznych: http://www.sysinternals.com/publ.htm.

MÓJ APRIL WINDOWS NT MAGAZINE ARTYKUŁ

Pamiętaj również, aby zapoznać się z moim artykułem funkcji w kwietniowym wydaniu Windows NT Magazine, "Linux and the Enterprise". Ujawniam kilka znaczących problemów w odniesieniu do aplikacji jądra systemu Linux 2.2 i serwerów sieciowych ("przedsiębiorstwa", które ostatecznie uniemożliwią tej wersji jądra systemu Linux konkurowanie z NT i innymi wariantami system UNIX pod względem wydajności.

BRAK ŚRODKÓW, W KTÓRYCH NALEŻNA

Na powiązanej notatce, być może słyszałeś o niedawno wydanym D.H. Brown (firmie analityka) w zakresie możliwości systemu Linux jako systemu operacyjnego przedsiębiorstwa. Okazuje się, że autor raportu mocno "pożyczył" od e-maila, że ktoś publicznie wysłana do grupy dyskusyjnej Usenet w systemie Linux już w styczniu. Jeśli masz dostęp do raportu i czytasz strony (44 i 45) dyskutując o systemach Linux i multiprocesorach (raport nie jest publicznie dostępny — musisz kupić go na dużą sumę), a następnie przeczytać moją wiadomość e-mail w Wiadomości Deja, zobaczysz bezpośredni równoległy, aż do małych szczegółów.

NIE TAK NOWE RZECZY

Korzystam z tej sekcji biuletynu, aby wyświetlić najnowsze zmiany w witrynie Systemy Wewnętrzne, o których możesz nie wiedzieć, i/lub w celu dostarczenia więcej informacji o narzędziu niż to, co jest dostępne w witrynie. Na przykład kilka tygodni temu wydaliśmy plikmon v4.1. Ta wersja pliku Filemon może monitorować zarówno aktywność nazwanego potoku, jak i miejsca poczty w systemie Windows NT/2K. Rozszerzenie kodu wymaganego do obsługi tego kodu było stosunkowo niewielkie, ponieważ nazwane potoki i mailsloty są implementowane jako sterowniki systemu plików. Trudną częścią (żmudną) było ustalenie prywatnych poleceń IOCTLs (I/O Control Commands), że te specjalne systemy plików obsługują, aby Filemon mógł je pokazać. Możesz pobrać plik Filemon (który działa w systemach Windows NT/2K i Windows 9x) na stronie http://www.sysinternals.com/filemon.htm.

Jeśli chcesz dowiedzieć się więcej o tym, jak plikmon działa wewnętrznie, zobacz moją kolumnę "NT Internals" magazynu Windows NT w lutym, zatytułowaną "Inside NT Utilities". W tym artykule opisano sposób używania plików Filemon, Regmon, NTFSDOS, NewSID i HandleEx oraz o tym, jak działają.

WIADOMOŚCI WEWNĘTRZNE

WINDOWS 2000 DRIVER VERIFIER

System Windows 2000 Beta 3 wprowadza bardzo zaawansowaną pomoc programową sterowników urządzeń o nazwie Driver Verifier. To narzędzie współpracuje z kodem w jądrze, aby uzyskać kontrolę nad sterownikiem i wykonać go pod kątem przestrzegania reguł trybu jądra w sposób, który nie był wcześniej możliwy. Sterowniki urządzeń buggy są zdecydowanie najbardziej znaczącym wkładem w reputację wielu osób, że NT jest niestabilnym systemem operacyjnym, a to narzędzie ma na celu naprawienie tej reputacji, pomagając pisarzom kierowców znaleźć swoje błędy przed użytkownikami.

Kilka rodzajów subtelnych problemów może sprawić, że poprzez swobodne testowanie kierowców (najczęstszy typ testów wykonywanych w ciasnych ograniczeniach czasowych na rynku), a nawet poślizgnąć się po poważnych testach stresu. Jednym z typowych problemów ze sterownikiem jest uzyskiwanie dostępu do stronicowanej pamięci przez sterownik "podwyższony poziom irQL" (wysoki priorytet przerwań). Jeśli pamięć, do których uzyskuje się dostęp sterowników, jest fizycznie obecna w momencie dostępu (nie została ona stronicowana do pliku stronicowania), niedozwolony dostęp pozostanie niezauważony. Zwolnij sterownik, który narusza tę regułę do dzikiego świata użytkowników i jego związane z wyświetlaniem, co powoduje awarię blue screen.

Innym typem typowego błędu programowania sterowników jest napisanie kodu z założeniem, że stronicowana i/lub niestronicowana pamięć będzie zawsze dostępna, tj. nie sprawdzają zwracanych wartości alokacji. Jeśli pula się zabraknie, a sterownik otrzyma adres buforu NULL, sterownik pospiesznie wyłuska system do niebieskiego ekranu. Mimo że wyczerpanie puli jest rzadkim wystąpieniem, nie jest to coś, co powinno dać System Administracja istrator niebieski ekran. Powiązana usterka pamięci to przekroczenie buforu lub jego przekroczenie, w którym sterownik odczytuje lub zapisuje poza przydzielonym buforem.

Weryfikator sterowników rozwiązuje problemy IRQL, zastępując wywołania wszystkich funkcji, które manipulują plikami IRQLs w sterowniku (np. KeRaiseIrql, KeAcquireSpinLock) odpowiednimi funkcjami jądra weryfikatora (VerifierKeRaiseIrql, VerifierKeAcquireSpinLock) podczas ładowania sterownika. Za każdym razem, gdy środowisko IRQL jest wywoływane do DISPATCH_LEVEL lub wyższego kodu weryfikatora wywołuje wewnętrzną funkcję Menedżera pamięci, MmTrimAllPageableSystemMemory(), aby wymusić wszystkie stronicowane dane z pamięci fizycznej. W związku z tym, gdy sterownik przerywa regułę IRQL nie uzyskuje dostępu do stronicowalnych danych lub kodu z DISPATCH_LEVEL lub wyższych, Menedżer pamięci wykryje próbę uzyskania dostępu do strony nie obecnej i zgłosi niebieski ekran. Dzięki temu deweloper szybko przechwytuje te typy usterek, zanim kierowca wyjdą z drzwi, ponieważ mogą debugować awarię i zobaczyć, jak kierowca siedzi na stosie błędów.

Weryfikator sterowników przeprowadza testy użycia pamięci za pomocą poprawki tabeli importu sterownika do zweryfikowania, aby sterownik wywołuje funkcje pamięci weryfikatora zamiast standardowych wersji jądra. Na przykład wywołanie metody do ExAllocatePool jest zastępowane wywołaniem metody VerifierAllocatePool. Istnieją dwie techniki, których używa weryfikator, aby pomóc deweloperowi szybko znaleźć błędy pamięci. Pierwszy polega na tym, że używa specjalnej puli pamięci, w której strona ochrony (strona straży jest nieprawidłową stroną) jest umieszczana tuż obok końca buforu. Ponadto część strony, w której przydzielono bufor, który poprzedza bufor, jest wypełniany podpisem. Przepełnienia znajdujące się na stronie poza końcem buforu są wykrywane natychmiast, ponieważ spowodują one nielegalne błędy strony na stronie ochrony. Underruns, które obejmują modyfikację danych poprzedzających bufor, są wykrywane przez Weryfikatora, gdy sterownik cofnie przydział pamięci, ponieważ podpis zostanie zmieniony.

Sterowniki, które zawsze oczekują, że pula niepusta zostanie oszukana do generowania awarii przez Weryfikatora przy użyciu jego "iniekcji błędów pamięci". Weryfikator umożliwia losowe niepowodzenie alokacji puli sterownika.

Istnieje kilka innych typów błędów sprawdza weryfikatora sterowników, w tym spójność IRP (pakiet żądań we/wy) i ochronę tylko do odczytu stron kodu systemu i sterownika.

Jeśli jesteś deweloperem sterowników urządzeń, będziesz robić sobie, twoja firma i społeczność NT faworyzować, testując weryfikatora. Należy również przetestować sterowniki NT 4.0, które są zgodne z Win2K, gdy tylko masz dostęp do Weryfikatora sterowników (większość deweloperów otrzyma go z wysyłką MSDN Win2K Beta 3 pod koniec kwietnia lub maja).

Aby uzyskać więcej informacji, zobacz Driver Weryfikator.

TESTOWANIE Y2K PRZY UŻYCIU ROZRUCHU. INI

Jeśli często sprawdzasz witrynę sieci Web Systems Internals, prawdopodobnie wiesz już o nowym nieudokumentowanym rozruchu Win2K. Przełącznik INI, /YEAR. Nie wspomniałem w witrynie sieci Web, że przełącznik jest również obsługiwany przez NT 4.0 z dodatkiem Service Pack 4. Ten przełącznik umożliwia fałszowanie NT i całego oprogramowania w systemie NT do myślenia, że jest to inny rok. Na przykład /YEAR=2001 sprawi, że system uzna, że to 2001 zamiast 1999. W związku z tym przełącznik jest idealny do testowania problemów Y2K na dowolnym poziomie oprogramowania, a zaletą korzystania z niego zamiast ręcznego resetowania zegara BIOS (na przykład za pośrednictwem apletu Zegar), jest to, że zmiana jest tymczasowa i aktywna tylko podczas rozruchu do instalacji, która ma przełącznik obecny w rozruchu. Wiersz INI. Ułatwia to utworzenie specjalnej instalacji Y2K po prostu poprzez pobranie istniejącej linii rozruchowej z rozruchu. INI, duplikując go i dodając przełącznik /YEAR.

CO SIĘ DZIEJE

Za kilka tygodni spodziewaj się następnego biuletynu. Porada wewnętrzna będę miał dla ciebie następnym razem jest o Queued Spinlocks, nowy typ spinlock, że Windows 2000 używa do jego globalnych spinlocks. Oto globalne spinlocki, które istnieją w systemie Windows 2000:

  • KiDispatcherLock: blokada bazy danych harmonogramu
  • KiContext-SwapLock: blokada wymiany bieżnika
  • MmPfnLock: blokada bazy danych fizycznej ramki strony
  • MmSystemSpaceLock: blokada przestrzeni adresowej trybu jądra
  • CcMasterSpinLock: globalny spinlock menedżera pamięci podręcznej
  • CcVacbSpinLock: blokada mapowania tablicy menedżera pamięci podręcznej

Zamiast używać zwykłych spinlocks jądra (KeAcquireSpinLock, KeReleaseSpinLock) dla tych globalnych blokad, jak NT 4.0, jądra systemu Windows 2000 używa kolejek spinlocks (KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock). Te blokady mają kilka interesujących właściwości, które minimalizują aktywność magistrali na smPs. Następnym razem powiem, jak są implementowane kolejkowane spinlocki.

Wkrótce w systemach Internals to Tokenmon, kolejne narzędzie do monitorowania. Tokenmon pokaże szczegółowe informacje o wszystkich działaniach związanych z tokenem w systemie, w tym logowania, wylogowywania, używania uprawnień i personifikacji.


Dziękujemy za przeczytanie biuletynu Systems Internals.

Opublikowano środa, 14 kwietnia 1999 19:16 pm przez ottoh

[Archiwum biuletynów ^][Wolumin 1, Liczba 2 >]