Freigeben über


[Newsletter-Archiv ^] [< Band 2, Nummer 2] [Band 2, Nummer 4 >]

The Systems Internals Newsletter Band 2, Nummer 3

http://www.sysinternals.com
Copyright © 2000 Mark Russinovich


14. Juni 2000 – In dieser Ausgabe:

  1. LEITARTIKEL

  2. NEUERUNGEN BEI SYSINTERNALS

    • Regmon v4.25
    • ListDlls v2.22
    • TDImon v1.0
    • AutoRuns v1.1
    • LDMDump v1.0
    • Internals-Kolumnen für April/Juni
  3. INTERNALS – INFORMATIONEN

    • Windows NT-Buildverlauf
    • Windows NT/2000 Timer-Auflösung
    • Neubelegung der Tastatur
    • Sichere Systemspeicherzuordnung
    • Ausgeblendete Windows 98-Dateisystemprotokollierung
    • WinDev '00 West
  4. BALD VERFÜGBAR

    • "Sichere" Windows 98-Registrierungsschlüssel

SPONSOR: WINTERNALS SOFTWARE

Der Systems Internals Newsletter wird von Winternals Software gesponsert (im Web unter http://www.winternals.com.). Winternals Software ist der führende Entwickler und Anbieter von erweiterten Systemtools für Windows NT/2K. Zu den Winternals Software-Produkten gehören FAT32 für Windows NT 4.0, ERD Commander Professional Edition (erweiterte Startdatenträgerfunktion für Windows NT) und Remotewiederherstellung.

Mit dem neu veröffentlichten TCPView Pro können Sie die TCP/IP-Aktivitäten auf Windows NT 4.0-, Windows 2000- und Windows 95/98-Systemen überwachen. Im Gegensatz zu integrierten TCP/IP-Überwachungstools, die in Windows enthalten sind (z. B. netstat), zeigt Ihnen TCPView Pro, welcher Prozess den einzelnen TCP/IP-Adressen zugeordnet ist, sodass Sie leicht ermitteln können, welche Anwendung für bestimmte Verbindungen und Aktivitäten verantwortlich ist. TCPView Pro bietet eine dynamische Ansicht und eine statische Ansicht. In der statischen Ansicht werden die aktuell geöffneten lokalen IP-Adressen, der jedem Endpunkt zugeordnete Prozess und die Remote-IP-Adresse angezeigt, mit der ein Endpunkt verbunden ist. Mit der dynamischen Ansicht, die in keinem anderen Hilfsprogramm verfügbar ist, können Sie TCP/IP-Aktivitäten nach Prozessen in Echtzeit anzeigen.

Preisinformationen und eine Downloadmöglichkeit für eine 14-tägige Testversion finden Sie unter http://www.winternals.com/products/tcpview.shtml..

Guten Tag,

Willkommen beim Systems Internals Newsletter. Der Newsletter hat aktuell 22.000 Abonnenten.

Dave Solomon und ich befinden uns in der letzten Phase der Fertigstellung von "Inside Windows 2000, 3rd Ed.", was bedeutet, dass das Buch eher Mitte August als Ende Juli erhältlich sein wird (es wäre kein Microsoft-Produkt ohne eine Verzögerung beim Versanddatum). Jetzt, da das Buch in seiner endgültigen Form vorliegt, kann ich Ihnen einen Überblick darüber geben, was es enthält. Erstens hat es etwa 50 % mehr Inhalt als die vorherige Ausgabe und enthält vier brandneue Kapitel. Hier sehen Sie das Inhaltsverzeichnis:

  1. Einführung
  2. Aufbau
  3. Systemmechanismen
  4. Starten und Herunterfahren
  5. Verwaltungsmechanismen
  6. Prozesse und Threads
  7. Speicherverwaltung
  8. Sicherheit
  9. E/A-System
  10. Storage
  11. Cache-Manager
  12. Dateisysteme
  13. Netzwerk

Wie schon die 2. Auflage ist das Buch voller Experimente, die die von uns beschriebenen Konzepte veranschaulichen. Das Buch enthält außerdem eine CD mit einer Kopie der gesamten SysInternals-Website sowie einer Handvoll Tools, die wir in Experimenten verwenden.

Zwei Tools, die ich speziell für das Buch geschrieben habe, wurden von den Buchrezensenten sehr gut aufgenommen. Das erste heißt LiveKD und ermöglicht es Ihnen, einen beliebigen der Windows 2000-Kerneldebugger (i386kd, kd, WinDbg) auf einem Livesystem auszuführen. Dies bedeutet, dass Sie LiveKd starten und angeben, welchen Debugger es für Sie hosten soll. Anschließend geben Sie den Debugger ein und haben alle Debuggerbefehle zur Verfügung, die Sie auch beim Debuggen eines Absturzabbilds unterstützen würden. Praktisch alle debuggerbasierten Experimente im Buch können mithilfe von LiveKD ausgeführt werden, was bedeutet, dass Sie für die Ausführung weder ein zweites System noch ein serielles Kabel benötigen.

Das zweite Tool ist eine Leistungsmonitorerweiterung, mit der Sie die Livewerte jeder beliebigen Kernelvariable anzeigen können. Wenn Sie beispielsweise die Menge des verwendeten nicht auslagerten Pools mit PerfMon überwachen möchten, wählen Sie die Variable MmAllocatedNonPagedPool aus.

Ich werde Sie im Newsletter darüber informieren, wenn das Buch herauskommt, aber Sie können es jetzt über den Amazon.com-Link unter www.sysinternals.com/links.htm vorbestellen. Wie immer bitten wir Sie, den Newsletter an Freunde und Bekannte weiterzuleiten, von denen Sie denken, dass sie ihn interessant finden werden.

Vielen Dank!

-Mark

NEUERUNGEN BEI SYSTEM INTERNALS

REGMON V4.25

Dieses neueste Update des Regmon-Registrierungsüberwachungstools beinhaltet Unterstützung für den neuen KeyNameInformation-Abfragetyp von Windows 2000 für die Systemdienste ZwEnumerateKey und ZwQuerykey. Diese Funktionalität wird nicht für die Verwendung durch Win32-Anwendungen exportiert, sondern von den Registrierungsfunktionen des Systems in ADVAPI32 im Rahmen der benutzerspezifischen Registrierungsstrukturen für die Klassenregistrierung verwendet.

Es gibt zwei Möglichkeiten, wie Win32-Anwendungen unter Windows 2000 den Klassenregistrierungsteil der Registrierung öffnen können: Sie können HKEY_CLASS_ROOT angeben, oder sie können HKLM\Software\Classes angeben. Die erste Anweisung gibt ein Handle für den Klassenschlüssel pro Benutzer kombiniert mit dem globalen Klassenschlüssel zurück, und die zweite gibt nur ein Handle für die globalen Informationen zurück. Die ADVAPI32-Registrierungsfunktion kann lediglich ermitteln, welche der Benutzer angegeben hat, indem sie den zugrunde liegenden Namen des Registrierungsschlüsselhandles untersucht, der von einem Benutzer übergeben wurde, daher die Notwendigkeit für den neuen Abfragetyp. Weitere Informationen finden Sie in der SSH-Dokumentation unter RegOpenKeyEx.

Laden Sie Regmon v4.25 unter http:www.sysinternals.com/regmon.htm herunter.

LISTDLLS V2.22

Wenn ein Entwickler eine DLL (Dynamic Link Library) erstellt, teilt er dem Linker die "Basisadresse" der DLL mit. Dies ist die Adresse, für die der Linker relative Adressinformationen in der Imagedatei der DLL erstellt. Wenn eine DLL an einer anderen als ihrer Basisadresse geladen wird, muss der Ladevorgang alle relativen Adressen im geladenen DLL-Image korrigieren, um dem Unterschied Rechnung zu tragen.

Diese Fixups oder Verlagerungen können die Startzeit einer Anwendung verlängern, daher möchten Entwickler Verlagerungen offenkundig verhindern. Es ist jedoch mühsam, die Ausgabe eines Programms wie ListDLLs zu durchsuchen und Ladeadressen mit Basisadressen zu vergleichen. Ich habe daher in Version 2.22 von ListDLLs eine neue Option -r aufgenommen, die die verschobenen DLLs in der Ausgabe angibt.

ListDLLs v2.22 können Sie unter http://www.sysinternals.com/listdlls.htm. herunterladen.

TDIMON V1.0

TDImon ist das neueste Tool in der Suite der leistungsstarken SysInternals-Überwachungstools und zeigt Ihnen TCP- und UDP-Aktivitäten auf Ihrem System an, während sie stattfinden. Das Tool bezieht seinen Namen aus der Tatsache, dass es TCP- und UDP-Aktivitäten an der Schnittstelle zum TCP/IP-Stapel überwacht und diese Schnittstelle als Transport Driver Interface (TDI) bezeichnet wird. Alle TCP- und UDP-Aktivitäten von Anwendungen und Treibern müssen diese Schnittstelle durchlaufen, was bedeutet, dass TDImon keine TCP- oder UDP-Aktivitäten entgehen.

TDIMon verwendet dieselbe GUI wie seine Cousins Filemon, Regmon, Portmon und DebugView und zeigt Ihnen wie diese anderen Überwachungstools die Namen von Prozessen, die Aktivitäten ausführen, bietet Zeitstempel und verfügt über Filter- und Hervorhebungsfunktionen. Dies macht TDIMon zu einem idealen Tool zur Netzwerkproblembehandlung für Administratoren und zum TCP/IP-Debuggingtool für Anwendungsentwickler. TDImon funktioniert unter Windows 95, 98, NT 4 und Windows 2000.

Laden Sie TDImon v1.0 unter http://www.sysinternals.com/tdimon.htm. herunter.

LDMDUMP V1.0

Windows 2000 beinhaltet ein neues Partitionierungsformat namens Soft Partitioning, das einige der Nachteile der Partitionierung im MS-DOS-Stil überwindet, die von allen Windows-Betriebssystemen bisher verwendet wurde. Eine Komponente namens Logical Disk Manager (LDM) verwaltet Volumes auf Datenträgern, die mit Softpartitionen formatiert sind und als dynamische Datenträger bezeichnet werden (Datenträger mit MS-DOS-Partitionierung werden als Basisdatenträger bezeichnet). Dynamische Datenträger sind nicht nur aufgrund der Partitionsspiegelung robuster, die sie implementieren, sie haben den Vorteil, dass Sie Mehrpartitionsvolumes erstellen können, ohne das System neu starten zu müssen, damit sie von Dateisystemtreibern erkannt und eingebunden werden.

Microsoft hat das Format der LDM-Partitionierungsdatenbank nicht dokumentiert. Da sie die Technologie von Veritas lizenziert haben, die dieselbe Datenbank in ihrer UNIX-Volumeverwaltungssoftware verwendet haben, wird Microsoft möglicherweise durch Lizenzvereinbarungen an der Dokumentation gehindert. Möglicherweise wird es einmal eine Win32-IOCTL-Schnittstelle zum LDM geben, aber zur Überbrückung habe ich das Format herausgefunden und ein Tool namens LDMDump geschrieben, das Ihnen einen Einblick in die Datenbank eines dynamischen Datenträgers geben kann. LDMDump stellt ungefähr die gleichen Informationen wie das DmDiag-Tool des Windows 2000 Resource Kit zur Verfügung, aber LDMDump stellt die Informationen (meiner Meinung nach) viel sauberer dar. Ich stelle derzeit keinen Quellcode für dieses Tool zur Verfügung, aber wenn Sie daran interessiert sind, es für Ihre eigenen Anwendungen zu lizenzieren, kontaktieren Sie mich bitte.

Lesen Sie mehr über die LDM-Datenbank in meiner Windows 2000 Magazine-Kolumne "Inside Storage, Part 2" unter http://www.sysinternals.com/publ.htm.

Laden Sie LDMDump v1.0 unter http://www.sysinternals.com/ldmdump.htm. herunter.

AUTORUNS V1.1

Möglicherweise sind Sie bereits mit AutoRuns vertraut, das wir in den letzten zwei Monaten veröffentlicht haben. AutoRuns zeigt die Einstellungen für die automatische Ausführung für jeden Speicherort in der Registrierung und in .INI-Dateien, in denen solche Informationen angegeben sind (jedenfalls war das unsere Absicht). Durch Benutzerfeedback sind wir auf einige Stellen aufmerksam geworden, die AutoRuns entgingen, und die neueste Version zeigt diese nun an.

AutoRuns v1.1 kann hier heruntergeladen werden: http://www.sysinternals.com/misc.htm.

INTERNALS-KOLUMNEN FÜR JUNI/JULI

Haben Sie sich jemals gefragt, wie sich Win32-Dienste im Detail von Win32-Standardanwendungen unterscheiden? Oder vielleicht waren Sie neugierig, warum die NT-Sequenz zum Systemstart oder Herunterfahren so lange dauert. Ich beantworte diese Fragen und mehr in meiner zweiteiligen Reihe aus Juni/Juli zu Win32-Diensten im Windows 2000 Magazine.

In Teil 1 führe ich Sie in die Struktur eines Win32-Diensts ein und erläutere, wie er Befehle von Clientanwendungen annimmt. Dann beschreibe ich den Dienststeuerungs-Manager (Service Control Manager, SCM), der für die Verwaltung von Win32-Diensten zuständig ist, einschließlich ihres Startens und Herunterfahrens. In Teil 2 schließe ich meine Beschreibung des Dienststartvorgangs ab, der während des Systemstarts stattfindet, und erzähle Ihnen dann, wie SCM Dienste herunterfährt. Ich sehe mir außerdem die Verbesserungen an, die Microsoft am SCM in Windows 2000 vorgenommen hat, und nehme Sie mit in das SrvAny Resource Kit-Tool.

Abonnenten von Windows 2000 Magazine können die Kolumnen online unter http://www.sysinternals.com/publ.htm. lesen.

INTERNALS – INFORMATIONEN

WINDOWS NT-BUILDVERLAUF

Wie Sie aus früheren Newslettern erfahren haben, erhöht sich die Buildnummer für Windows NT (jetzt Windows 2000) jeden Tag, wenn das Buildteam einen neuen Build mit den Code-Check-Ins des Tages generiert. Mithilfe meiner alten Beta- und Release-Kandidaten-CDs sowie der Hilfe anderer, die Windows NT länger nutzen als ich, habe ich eine Liste der Buildnummern zusammengestellt, die den öffentlichen Releases (Betas, Release Candidates und Full Releases) entsprechen. Beachten Sie, dass die Datumsangaben sich auf das Datum des Builds und nicht auf das Releasedatum für den Build beziehen. Der letzte Build von Win2K, 2195, wurde beispielsweise im Dezember erstellt, aber im Februar für die Öffentlichkeit freigegeben.

Build Freigabe Datum
297 PDC 1992
340 NT 3.1 Beta 1 Oktober 1992
397 NT 3.1 Beta 2 März 1993
511 NT 3.1 Juli 1993
611 NT 3.5 Beta 1 April 1994
683 NT 3.5 Beta 2 Juni 1994
756 NT 3.5 RC 1 August 1994
807 NT 3.5 September 1994
944 NT 3.51 Beta 1 Februar 1995
1057 NT 3.51 Mai 1995
1234 NT 4.0 Beta 1 Januar 1996
1314 NT 4.0 Beta 2 Mai 1996
1381 NT 4.0 Juli 1996
1671 NT 5.0 Beta 1 September 1997
1877 NT 5.0 Beta 2 September 1998
1946 Win2K RC0 von Beta 3 Dezember 1998
2000.3 Win2K RC1 von Beta 3 März 1999
2031 Win2K Beta 3 April 1999
2072 Win2K RC1 Juli 1999
2128 Win2K RC2 September 1999
2183 Win2K RC3 November 1999
2195 Win2K Dezember 1999

WINDOWS NT/2000 TIMER-AUFLÖSUNG

Zwar stellt Windows NT/2000 Dienste zur Verfügung, darunter QueryPerformanceCounter, mit denen Sie die Zeiten bis zur Auflösung des Pentium-Zykluszählers messen können, doch weisen seine Dienste zur Intervallzeitsteuerung eine etwas niedrigere Auflösung auf. Tatsächlich ist die Standardauflösung des Timers identisch mit dem Systemuhrintervall, das bei x86-Einprozessorsystemen 10 ms beträgt (in der Regel 7,5 ms oder 15 ms auf SMP-Systemen). Anwendungen können die Multimedia-Timerfunktionen im Benutzerbereich verwenden, um die Auflösung auf 1 ms heraufzusetzen, aber Treiber sind auf sich allein gestellt, wenn sie höhere Auflösungen wünschen – jedenfalls bis zu Windows 2000.

Windows 2000 führt eine neue DDK-Funktion ExSetTimerResolution ein, die Treiber verwenden können, um das Intervall des Systemtimers auf 1 ms zu verringern. Möchten Sie wissen, was hinter den Kulissen von Multimedia-Timern und ExSetTimerResolution passiert? Mehr dazu finden Sie in "Inside Windows NT High Resolution Timers" unter http://www.sysinternals.com/timer.htm.

SICHERE SYSTEMSPEICHERZUORDNUNG

Da wir uns mit den neuen Windows 2000-Kernelfunktionen für Treiberentwickler befassen, ist MmGetSystemAddressForMdlSafe einen Blick wert. In früheren Versionen von Windows NT musste ein Treiberentwickler, der einen Systemadressraumzeiger für den Puffer oder einen Teil des physischen Arbeitsspeichers eines Benutzers abrufen wollte, eine MDL (Memory Descriptor List) übergeben, die den physischen Puffer für MmGetSystemAddressForMdl beschreibt.

Beim Erstellen einer virtuellen Zuordnung im Adressraum des Systems wird eine Ressource namens System Page Table Entries (System PTEs) verwendet, wobei für jede zugeordnete physische Seite ein System-PTE erforderlich ist. Leider sind System-PTEs begrenzte Ressourcen, die ausgehen können, wenn Treiber große Mengen an Arbeitsspeicher zuordnen. Was geschieht, wenn MmGetSystemAddressForMdl die benötigten System-PTEs nicht abrufen kann? Man sollte annehmen, es tut etwas nützliches, z. B. eine NULL als zugeordnete virtuelle Adresse zurückgeben. Aber nein, es gibt auf und lässt das System mit einem Bluescreen abstürzen. Ein derartiges Verhalten wirft ein schlechtes Licht auf den Treiber, der die Anforderung ausgibt.

MmGetSystemAddressForMdlSafe von Windows 2000 tut, was MmGetSystemAddressForMdl hätte tun sollen: Es gibt eine NULL zurück, wenn nicht genügend System-PTEs vorhanden sind, um die Zuordnung für den Puffer zu erstellen. Verwenden Sie diese Funktion, um ein peinliches Absturzabbild zu vermeiden, das auf Ihren Treiber verweist. Wenn Sie über einen Treiber verfügen, der unter NT 4 und Windows 2000 ausgeführt wird, lohnt es sich, zwei verschiedene Versionen zu veröffentlichen, eine für jede Plattform, sodass Sie diese neue API unter Windows 2000 nutzen können.

NEUBELEGUNG DER TASTATUR

Wenn Sie einen ähnlichen Hintergrund wie ich haben, haben Sie mit einer UNIX-Tastatur begonnen, bei der eine STRG-TASTE auf der Tastatur an der Position vorhanden war, die auf PC-Tastaturen durch die Feststelltaste besetzt ist. Um meine Eingaberate zu verbessern und etwas über die Entwicklung von Gerätetreibern unter Windows 9x und Windows NT zu erfahren, war eines meiner ersten Treiberprojekte unter beiden Betriebssystemen die Implementierung eines Neubelegungstreibers für die Tastatur. Sie finden die Windows 9x-Version unter http://www.sysinternals.com/c2cap95.htm und die Windows NT/2K-Version unter http://www.sysinternals.com/ctrl2cap.htm.

Unter Windows NT/2K gibt es eine Alternative zur Verwendung eines Tastaturfiltertreibers. Durch Definieren von Scancode-Neuzuordnungseinträgen in der Registrierung können Sie das Verhalten der Tastatur vollständig umprogrammieren. Tatsächlich enthält das Windows 2000 Resource Kit ein Tool namens RemapKey, mit dem Sie Tasten wechseln können, indem Sie eine grafische Darstellung der Tastatur verwenden. In diesem Artikel auf der Microsoft-Website erfahren Sie mehr über die Neubelegung der Tastatur und ihre Funktionsweise: http://www.microsoft.com/HWDEV/input/W2kscan-map.htm. Beachten Sie, dass das Tool auch unter NT 4 funktioniert.

Nehmen wir also an, Sie verfügen nicht über das Windows 2000 Resource Kit und möchten das Geld dafür lieber nicht ausgeben (ich empfehle Ihnen, es dennoch zu tun, es ist voll mit allen möglichen coolen Tools und Dokumentationen). In diesem Fall können Sie die Tastatur manuell neu belegen. Im Microsoft-Artikel, auf den ich gerade verwiesen habe, wird das Format des Registrierungsschlüssels erläutert, in dem der Tastaturtreiber nach Neuzuordnungscodes sucht (HKLM\ SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map), und in diesem Artikel, der ebenfalls von Microsoft verfügbar ist, werden die Scancodes erläutert, die den Tasten entsprechen: http://www.microsoft.com/hwdev/download/desinit/scancode.zip.

Wenn Sie nur die Feststelltaste und STRG tauschen möchten (beachten Sie, dass meine Tastaturfilter die Feststelltaste vollständig aufheben, da ich sie nie verwende), können Sie den folgenden Text (ohne die Trennzeichen "----") in eine Datei kopieren (nennen Sie sie z. B. swapcaps.reg) und dann auf die Datei doppelklicken. Die Einstellungen werden in die Registrierung importiert und nach einem Neustart wirksam.

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,1d,00,1d,00,3a,00,\
  00,00,00,00

Wenn Sie die Zuordnung rückgängig machen möchten, löschen Sie einfach den Scancode Map-Wert aus der Registrierung, und starten Sie neu.

AUSGEBLENDETE WINDOWS 98-DATEISYSTEMPROTOKOLLIERUNG

Haben Sie jemals Ihr Windows 98-Systemverzeichnis durchsucht und ein Unterverzeichnis namens \Windows\Applog bemerkt? In diesem Verzeichnis finden Sie wahrscheinlich Dateien, deren Namen denen von Anwendungen entsprechen, die Sie kürzlich ausgeführt haben, und die Erweiterungen wie LGC und LGD tragen. Öffnen Sie eine der Dateien im Editor, dann sehen Sie eindeutig eine Dateisystemaktivitäts-Ablaufverfolgung mit Dateinamen, Offsets und Aufrufen zum Öffnen und Schließen. Ist das ein Virus, das diese Protokolle generiert, oder handelt es sich um ein in Windows 98 enthaltenes geheimes Hilfsprogramm, das Ihre Anwendungsnutzungsmuster an Microsoft zurückmeldet? Keins von beidem (wenn es eins von beidem wäre, würden Sie darüber in der Fachpresse lesen, nicht im SysInternals-Newsletter). Es ist Teil des Features "Lädt Ihre am häufigsten verwendeten Anwendungen bis zu 36 Prozent schneller" von Windows 98.

Aufgrund des Taskmon-Eintrags in HKLM\Software\Microsoft\Windows\CurrentVersion\Runstartet Windows 98 während des Startvorgangs ein Dienstprogramm mit dem Namen Taskmon. Taskmon lädt eine VxD mit dem Namen FioLog (\Windows\System\FioLog.Vxd), um einen Dateisystem-Aktivitätshook zu installieren, damit es die Dateinutzung während des Anwendungsstarts erkennen kann. Taskmon überwacht die Dateisystemaktivität aller Anwendungen, die beim Starten ausgeführt werden, mit Ausnahme der in HKLM\Software\Microsoft\Windows\CurrentVersion\Taskmon\ExcludeApps aufgeführten Anwendungen. FioLog zeichnet die Dateisystemaktivitäten beim Anwendungsstart im Verzeichnis Applog auf. Die erstellten Protokolldateien beginnen mit der Erweiterung LGA. Es ist nicht klar, wie bestimmt wird, wann ein Protokoll gelöscht werden und wann ein neues Protokoll für eine Anwendung mit einer neuen Erweiterung erstellt werden soll – dazu wird der letzte Buchstabe inkrementiert. Hier sehen Sie einen Teil einer Beispielprotokolldatei:

{
o da3034d0 d000 "C:\WINDOWS\NOTEPAD.EXE"
R da3034d0 0 40
R da3034d0 80 f8
R da3034d0 80 1c0
R da3034d0 7000 1000
R da3034d0 6000 e00
o da2b2610 156000 "C:\WINDOWS\SYSTEM\SHELL32.DLL"
R da2b2610 83000 1000
o da2b2f40 45110 "C:\WINDOWS\SYSTEM\SHLWAPI.DLL"
R da2b2f40 3c000 1000
R da2b2f40 3c000 1000
...

Die Zeilen sind in vier Felder unterteilt: Das erste ist der Vorgangscode, wobei o geöffnet, R gelesen und C geschlossen bedeutet. Es wird kein W (zum Schreiben) angezeigt, da FioLog während des Anwendungsstarts nur Lesevorgänge aufzeichnet, damit der Anwendungsstart optimiert werden kann. Das zweite Feld ist der interne Dateizeiger. Das dritte und vierte Feld müssen gemäß dem Vorgangscode der Zeile interpretiert werden. Wenn der Vorgangscode R ist, ist das dritte Feld der Dateioffset und das vierte Feld die Länge des Lesevorgangs. Wenn der Vorgangscode jedoch o ist, steht das dritte Feld für offene Flags und das vierte für den Namen der geöffneten Datei. In der Beispielablaufverfolgung gibt das Öffnen von notepad.exe den Dateizeiger da3034d0 zurück, der in nachfolgenden Lesevorgängen verwendet wird, wie zu ersehen ist.

Wenn Sie einen Defragmentierungsvorgang starten, führt das Defrag.Exe-Programm ein Programm namens CvtApLog (\Windows\System\Cvtaplog.exe) aus, um die Protokolldateien zu verarbeiten. CvtApLog verwendet eine DLL mit dem Namen ClusAlgo.Dll (\Windows\System\Clusalgo.dll), um die optimale Clusterplatzierung anhand der gelesenen Protokolldateien zu ermitteln, und zeichnet diese Informationen in Dateien mit dem Namen \Windows\Applog\Applog.d* auf, die den Defragmentierungsprozess leiten. CvtApLog generiert außerdem eine Datei mit dem Namen \Windows\Applog\Optlog.txt, die die von den Protokolldateien vorgeschriebenen Optimierungen des Anwendungsstarts zusammenfasst. Hier sehen Sie Teile des Inhalts einer Optlog.txt-Datei:

Program Launch Optimization Log - Created Tue Jun 13 11:42:52 2000

Programs Eligible for Optimization:
Ord Flag ProgName Uses   LastExecDate Program Path                           
1        RUNDLL32 65     2000.06.13   C:\WINDOWS\RUNDLL32.EXE                
2        ATIPTAAB 31     2000.06.13   C:\WINDOWS\SYSTEM\ATIPTAAB.EXE         
3        NOTEPAD  22     2000.06.13   C:\WINDOWS\NOTEPAD.EXE                 
4        PING     9      2000.06.10   C:\WINDOWS\PING.EXE                    
…             
17       IEXPLORE 2      2000.06.01   C:\PROGRAM FILES\INTERNET EXPLORER\IEXPLORE.EXE

Programs Ineligible for Optimization:
Ord Flag ProgName Uses   LastExecDate Program Path                           
18  S    GREP     5      2000.06.13   C:\BIN\GREP.EXE                        
19  S    STRINGS  12     2000.06.13   C:\BIN\STRINGS.EXE                     
20  S    ATI2CWXX 31     2000.06.13   C:\WINDOWS\SYSTEM\ATI2CWXX.EXE         

Control Parameters:
Use app profile        = Yes
Minimum log size    = 1000
Maximum no use days = 90
Maximum apps        = 50

Flags for Ineligible Programs:
S = Log size smaller than <Minimum log size>
U = Program not used for more than <Maximum no use days>
P = No profile for program
E = Associated program no longer exists
D = Log deleted (may be combined with one of the above)

Die Fähigkeit von Windows 98, die Teile von Dateien, die beim Start einer Anwendung verwendet werden, in einen zusammenhängenden Bereich auf dem Datenträger zu verschieben, stellt Technologie dar, die Microsoft von Intel lizenziert hat (dies können Sie sehen, indem Sie Defrag.exe manuell ausführen, dann wird der Text "Intel Application Launch Accelerator" ausgegeben).

WINDEV '00 WEST

WinDev '00 East fand letzte Woche mit einer Rekordbeteiligung von 660 Personen statt (mehr konnte das Hotel nicht fassen). Die anwesenden Referenten repräsentieren die großen Namen in allen Bereichen der Windows-Entwicklung, darunter alle vom COM-Gott Don Box bis hin zu den Treiberexperten Jamie Hanrahan und Brian Catlin. Meine Sitzungen umfassten "Windows 2000 Internals", "Advanced Drivers", "Windows NT/2000 File System Drivers" und "Cluster Server".

Wenn es Ihnen leid tut, die Veranstaltung verpasst zu haben, haben Sie Glück, denn Sie erhalten eine zweite Chance. WinDev '00 West findet vom 11. bis 15. September in Santa Clara, CA, statt, und die gleichen Referenten werden alle dabei sein. Ich werde dieselben Sitzungen halten, und wie bei WinDev East werde ich kostenlose SysInternals-T-Shirts an Teilnehmer verschenken, die meine Fragen beantworten oder besonders tiefgründige Fragen stellen. Weitere Informationen finden Sie unter http://www.butrain.com/windev/west/default.htm..

BALD VERFÜGBAR

"SICHERE" WINDOWS 98-REGISTRIERUNGSSCHLÜSSEL

Zwar unterstützt die Windows 98-Registrierung keine Sicherheit, trotzdem hat Microsoft einen Mechanismus zum Definieren verborgener Registrierungsschlüssel implementiert. Welche Anwendung nutzt diese Stealth-Technologie? Natürlich Internet Explorer. Beim nächsten Mal erzähle ich Ihnen, welche Schlüssel IE verbirgt und wie Windows 98 sie implementiert.


Vielen Dank, dass Sie den Systems Internals Newsletter gelesen haben.

Veröffentlicht am Mittwoch, den 14. Juni 2000 um 19:08 Uhr von ottoh

[Newsletter-Archiv ^] [< Band 2, Nummer 2] [Band 2, Nummer 4 >]