Freigeben über


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

Der Systems Internals Newsletter Band 4, Nummer 1

http://www.sysinternals.com
Copyright (C) 2002 Mark Russinovich


7. Januar 2002 – In dieser Ausgabe:

  1. LEITARTIKEL

  2. NEUIGKEITEN BEI SYSINTERNALS

    • Sync v2.1
    • DiskExt v1.0
    • NTFSDOS v3.02
    • PsSuspend v1.2
    • PsLogList v2.2
    • PsInfo v1.2
    • PsExec v1.3
    • BgInfo v2.0
    • Process Explorer v5.2
    • Filemon v4.34 für Win64/Itanium
    • Filemon v1.1 für Linux
    • Sysinternals bei Microsoft
  3. INTERNALS-INFORMATIONEN

    • Inside Windows 2000: Die interaktive DVD
    • Inside Windows 2000/XP: Das Seminar
    • Windows XP-Manifestdateien
    • Was ist in einer X-Box enthalten?
    • Zufällige Windows XP-Statistiken
    • Neuer verbesserter Windbg
  4. BALD VERFÜGBAR

    • Verwenden von BootVis zur Profilerstellung des Windows XP-Startprozesses

SPONSOR: WINTERNALS SOFTWARE

Der Sysinternals-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/2000/XP. Zu den Produkten des Unternehmens gehören das preisgekrönte Administrator Pak, ERD Commander 2000 und NTFSDOS Professional Edition.

Winternals ist stolz darauf, Defrag Commander Version 1.32 anzukündigen, die schnellste und umfassendste Unternehmensdefragmentierung, die verfügbar ist. Jetzt können Sie Defragmentierungszeitpläne in Ihrem gesamten Windows-Unternehmen über ein einfaches MMC-Snap-In verwalten, ohne dass Sie Clientsoftware auf Ihren NT- oder Windows 2000-Systemen installieren müssen. Eine Lizenz für 10 Systeme kann online für nur 169 USD erworben werden, und es sind attraktive Mengenrabatte verfügbar. Besuchen Sie http://www.winternals.com/39, um weitere Informationen zu erhalten oder zum die Software herunterzuladen und 30 Tage lang kostenlos zu verwenden.

Guten Tag,

Willkommen beim Sysinternals-Newsletter. Der Newsletter hat aktuell 34.000 Abonnenten. Bitte leiten Sie den Newsletter an Personen in Ihrem Freundeskreis weiter, für die diese Informationen von Interesse sein könnten.

Windows XP, das Flaggschiff unter den Betriebssystemen von Microsoft, wurde Ende August mit Gold ausgezeichnet. Windows XP ist die neueste Version der Windows NT-Reihe, die 1993 mit Windows NT 3.1 begann, und baut auf den technologischen Entwicklungen und Innovationen der letzten acht Jahre auf. Das Betriebssystem ist in Bezug auf Funktionalität und Features definitiv auf dem neuesten Stand. Viele davon haben David Solomon und ich untersucht und im Dezember-Artikel in MSDN Magazine beschrieben: „Windows XP: Kernel Improvements Create a More Robust, Powerful and Scalable OS“ (Windows XP: Kernelverbesserungen sorgen für ein robusteres, leistungsfähigeres und skalierbareres Betriebssystem) (http://www.msdn.microsoft.com/msdnmag/issues/01/12/XPKernel/XPKernel.asp).

Und bei Millionen von installierten Windows NT- und Windows 2000-Systemen und Hunderttausenden oder Millionen von Betatestern dürfen Sie erwarten, dass Microsoft Windows XP so verbessert, optimiert und korrigiert hat, dass es praktisch fehlerfrei ausgeführt wird. Schließlich wird XP in der Werbung als „praktisch absturzsicher“ angepriesen. Ich habe sicherlich nie damit gerechnet, auf Probleme zu stoßen – aber ich lag falsch.

Ich habe Windows 2000 Professional als Betriebssystem auf meinem primären System während des gesamten XP-Beta- und Release Candidate-Zyklus beibehalten. Aus dem Entwicklungszyklus von Windows 2000 hatte ich gelernt, dass selbst Release Candidates nach dem Upgrade auf die finalen Bits Debugbedarf hinterlassen. Als ich Build 2600 (das endgültige Release) aus dem Betaprogramm erhielt, beschloss ich, dass es an der Zeit war, umzusteigen. Der XP-Kompatibilitäts-Assistent fand nur kleinere Probleme auf meinem Windows 2000-System (z. B. dass die Version von Partition Magic, die ich installiert hatte, XP NTFS nicht verstand), also fuhr ich mit dem Upgradepfad fort.

Nachdem das XP-Setup im Textmodus ausgeführt und die Setupdateien auf meiner Festplatte installiert worden waren, wurde meine teilweise aktualisierte Windows XP-Installation neu gestartet, um das Upgrade im grafischen Modus abzuschließen. In diesem Modus geben Sie Gebietsschema- und Zeitzoneneinstellungen an, das Setup führt Geräteerkennung aus, und Sie konfigurieren Ihr Netzwerk. Bis zur Phase „Geräte werden installiert“ lief alles reibungslos. Als die Statusanzeige bei etwa 2/3 angelangt war und das Setup eine verbleibende Zeit von 34 Minuten anzeigte, war das Setup nicht mehr produktiv. Die Banner „XP ist das Beste, was Ihnen je passiert ist“ wechselten sich weiterhin ab, und die kleinen blinkenden Schaltflächen unten rechts drehten sich weiter, aber selbst zwei Stunden später hatte ich noch 34 Minuten vor mir.

Da begann ich mir Sorgen zu machen. Mehrere verzweifelte Stunden, in denen ich alles Mögliche versuchte, um das Problem zu beheben, einschließlich eines Neustarts, um das Setup erneut zu starten, einer BIOS-Aktualisierung und einer Suche in der MS Knowledge Base (nichts gefunden), brachten kein Ergebnis. Schließlich gab ich auf, entfernte die Installation, die halb aus Windows 2000 und halb aus Windows XP bestand, und führte eine Neuinstallation von XP durch, wobei ich den größten Teil des Tages damit verbrachte, die paar Dutzend Anwendungen, die ich benutze, neu zu installieren.

Meine neue XP-Installation lief gut. Ich will nicht sagen, dass ich nicht von unerklärlichen Abstürzen, fehlerhaften GUI-Funktionen und anderem seltsamen Systemverhalten enttäuscht war, aber wenigstens konnte ich damit arbeiten. Ich wusste, dass es sich bei der CD des Betaprogramms um eine Testversion handelte und dass ich auf die Vollversion upgraden musste, wenn ich sie über MSDN erhielt, aber ich hatte erwartet, dass das kein Problem sein würde.

Genau 120 Tage nach meinem abgebrochenen Upgrade (nicht zufällig das Timeout einer Testversion) hatte ich ein unglaubliches Déjà-vu-Erlebnis. Das Upgrade von der Testversion auf die Vollversion funktioniert tatsächlich wie ein vollständiges Upgrade, und (Sie haben es schon erraten) nach 34 Minuten und 2/3 des Weges von „Geräte werden installiert“ hat das Setup aufgehört, weitere Fortschritte zu machen. Erneut befand sich mein System mitten im Setup-Niemandsland, völlig unbrauchbar. Nachdem ich all die Dinge ausprobiert hatte, die ich 120 Tage zuvor versucht hatte, habe ich mich mit einer weiteren vollständigen Neuinstallation abgefunden.

Dann stieß ich auf ein weiteres Problem: Die MSDN-XP-CD ist nicht bootfähig, da sie Unterverzeichnisse für Home- und Professional-Versionen enthält. Da ich nur über eine einzige Betriebssysteminstallation verfüge (diejenige, die von Setup beschädigt wurde), konnte ich die Win32-Version von Setup von der MSDN-CD nicht ausführen, und da mein System nur NTFS unterstützt, konnte ich das DOS-Setup nicht ausführen. Die CD bietet auch keine Möglichkeit, Setup-Bootfloppys zu erstellen. Ich erinnerte mich daran, dass über MSDN Subscriber Downloads ein ISO-Image von Windows XP Professional angeboten wird, also lud ich dieses herunter (mit einem anderen System), um eine bootfähige CD zu brennen, aber dieser Ansatz wurde durch die Fehlermeldung „Fehler beim Starten des Dateiübertragungs-Managers. Versuchen Sie es später erneut.“ von der MSDN-Website vereitelt.

Wie habe ich mich aus diesem Schlamassel befreit? Ich habe die Registrierungsstrukturen Hives des abgebrochenen Upgrades durch solche aus einer Sicherung ersetzt, die ich vor einigen Wochen erstellt hatte. Nach einem Neustart konnte ich mich zwar nicht am System anmelden, weil die Windows-Produktaktivierung meine Lizenz nicht verifizieren konnte, aber ich konnte im abgesicherten Modus starten und das MSDN-CD-Setup von dort aus ausführen. Ich habe die Neuinstallation meiner Anwendungen gerade abgeschlossen und kann wieder produktiv sein.

Was mich an dem, was mir (zwei Mal) passiert ist, wirklich verblüfft, ist, dass das Windows XP-Setup nicht über grundlegende Sicherheitsmechanismen verfügt, die in den Windows 9x-Setups seit Windows 95 vorhanden sind. Während der Ausführung des Windows 95, 98 oder Me-Setups werden Fortschrittspunkte auf dem Datenträger gespeichert. Wenn das Setup unerwartet unterbrochen wird, wird es an der Stelle fortgesetzt, an der es unterbrochen wurde, und wenn es sich in der Phase „Geräte werden installiert“ befand, wird der letzte Treiber, der vor der Unterbrechung ausgeführt wurde, übersprungen. Wenn das Setup sich aufhängt, können Sie das System neu starten, und das Setup wird über den Punkt des Aufhängens hinaus fortgesetzt.

Windows 2000 und XP haben eine Reihe nützlicher Funktionen aus der Windows 9x-Linie übernommen, z. B. den abgesicherten Modus und die Systemwiederherstellung. Ich wünschte, sie hätten einige Dinge vom Windows 9x-Setup übernommen.

Apropos Upgrade auf XP: Der humoristische Kolumnist Dave Barry denkt über den Umstieg nach: http://www.miami.com/herald/special/features/barry/2002/docs/jan06.htm.

Vielen Dank!

– Mark

NEUIGKEITEN BEI SYSINTERNALS

SYNC V2.1

„Sync“, ein Applet, das zwischengespeicherte Daten zurück auf dem Datenträger speichert, ist ein Kernsystemhilfsprogramm auf Unix-Systemen, und so habe ich Sync für Windows NT/2000/XP vor einigen Jahren geschrieben. Mit Sync können Sie sicherstellen, dass Änderungen auf Wechselmedien mit Lese-/Schreibzugriff übernommen werden, bevor Sie das Medium auswerfen. Das Applet ist auch nützlich, um die Beschädigung von Datenträgern zu minimieren, wenn Sie es ausführen, bevor Sie einen Treiber testen, den Sie entwickeln und der das System zum Absturz bringen könnte. Jemand schlug vor kurzem vor, dass es schön wäre, wenn Sync eine Option zum Auswerfen von Medien nach dem Speichern hätte, und so wurde dieses Feature in Version 2.1 eingeführt.

Herunterladen von Sync v2.1 unter
http://www.sysinternals.com/ntw2k/source/misc.shtml

DISKEXT V1.0

Ein weiteres datenträgerbezogenes Tool, das in diesem Newsletter behandelt wird, ist DiskExt, ein Befehlszeilen-Applet, das Ihnen anhand des Laufwerkbuchstabens eines Datenträgers die Positionen der Partitionen anzeigt, aus denen der Datenträger besteht. Datenträger mit mehreren Partitionen umfassen übergreifende, gespiegelte und Stripesetvolumes. DiskExt meldet auch die Position der aufgelisteten Partitionen in Form der Sektoren, die sie belegen.

Laden Sie DiskExt v1.0 mit vollständigem Quellcode herunter unter
http://www.sysinternals.com/ntw2k/source/misc.shtml#diskext

NTFSDOS V3.02

NTFSDOS, das Hilfsprogramm, das Sysinternals (zum Zeitpunkt der Veröffentlichung von NTFSDOS, „Ntinternals“) auf den Computern von Hunderttausenden von Benutzern gestartet hat, ermöglicht DOS das Lesen von NTFS-Laufwerken. Eine geringfügige Änderung der NTFS-Struktur von Windows XP auf Datenträgern erforderte eine Optimierung von NTFSDOS für XP-Kompatibilität.

Herunterladen von NTFSDOS v3.02 unter
http://www.sysinternals.com/ntw2k/freeware/NTFSDOS.shtml

PSSUSPEND V1.2

Wollten Sie schon einmal einen Netzwerkdownload, eine Datenträgersuche oder eine andere ressourcenintensive Anwendung vorübergehend unterbrechen, damit Sie etwas anderes ausführen können? Suspend (Anhalten) ist eine Prozessverwaltungsfunktion, die in den Verwaltungstools von Windows NT/2000/XP schmerzlich vermisst wurde. Die neueste Ergänzung des PsTools-Toolsets ist PsSuspend, ein Hilfsprogramm, das Prozesse anhalten und fortsetzen kann. Wie alle anderen Tools der PsTools-Suite ist PsSuspend ein Befehlszeilentool, das auf das lokale System oder ein Remotesystem ausgerichtet werden kann.

Da es in Windows NT/2000/XP keine Funktion zum Anhalten von Prozessen gibt (in XP schon, aber nicht über die Win32-API), hält PsSuspend die Threads, die in einem Zielprozess ausgeführt werden, an und setzt sie mit den Win32-APIs SuspendThread und ResumeThread fort.

Herunterladen von PsSuspend v1.2 unter
http://www.sysinternals.com/ntw2k/freeware/pssuspend.shtml
Herunterladen des gesamten PsTools-Pakets unter
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSLOGLIST V2.2

Die Tools, aus denen das PsTools-Paket besteht, werden auf der Grundlage des Feedbacks der Benutzer ständig weiterentwickelt, und PsLoglist hat mehr Anfragen für Funktionen als jedes andere Hilfsprogramm erhalten. Diese neueste Version bietet eine Reihe von Verbesserungen, darunter die Möglichkeit, die Datensätze in gespeicherten Ereignisprotokolldateien zu sichern, das Trennzeichen für einzeilige Formate von einem Komma in ein anderes Zeichen zu ändern (für Fälle, in denen Ereignisprotokolltext Kommas enthält), Datensätze aus bestimmten Datumsbereichen zu sichern und nach Ereignistyp (Fehler, Warnung oder Information) zu filtern. Wie zuvor kann PsLoglist lokale oder Remotesystem-Ereignisprotokolle speichern und verfügt über viele andere Optionen zum Steuern von Vorgängen.

Herunterladen von PsLoglist v2.2 unter
http://www.sysinternals.com/ntw2k/freeware/psloglist.shtml
Herunterladen des gesamten PsTools-Pakets unter
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSINFO V1.2

Ein PsTools-Hilfsprogramm, das eingestellt wurde, ist PsUptime, ein Applet, das die Zeitspanne meldete, die das lokale oder ein Remotesystem in Betrieb war. Es ist nicht so, dass diese Informationen nicht nützlich wären (sie sind es), aber sie sind eher für die Anzeige durch den relativen Newcomer in PsTools, PsInfo, geeignet. Daher meldet PsInfo v1.2 jetzt die Betriebszeit des Systems zusammen mit einer Reihe anderer Informationen, z. B. Betriebssystemversion, Prozessorgeschwindigkeit, Arbeitsspeichergröße, Hotfixinstallationen, ob es sich bei einem Betriebssystem um eine Testversion handelt und wann sie abläuft, und unter Windows XP auch den Status der Windows-Produktaktivierung.

Herunterladen von PsInfo v1.2 unter
http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml
Herunterladen des gesamten PsTools-Pakets unter
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSEXEC V1.3

PsExec ist ein Befehlszeilenprogramm, mit dem Sie Programme auf einem Remotesystem ausführen können, ohne Software auf diesem System installieren zu müssen. Wenn das von Ihnen ausgeführte Programm über eine Befehlszeilenschnittstelle verfügt, stellt PsExec diese für Sie zur Verfügung, sodass Sie die Ausführung interaktiv erfolgen kann, als ob das Programm lokal ausgeführt würde. Durch diese Funktionen wird PsExec zu einem praktischen, schlanken Hilfsprogramm vom Remoteshelltyp und macht es einfach, Befehlszeilenprogramme wie ipconfig remote zu aktivieren.

Mit Version 1.3 von PsExec können Sie Windows-Anwendungen (im Gegensatz zu denen, die in der Befehlszeile ausgeführt werden) auf einem Remotesystem starten, sodass sie auf dem interaktiven Desktop angezeigt werden. Ich bin mir nicht sicher, wo dies nützlich sein könnte, aber ich habe mehrere Anfragen für diese Funktionalität erhalten.

Herunterladen von PsExec v1.3 unter
http://www.sysinternals.com/ntw2k/freeware/psexec.shtml
Herunterladen des gesamten PsTools-Pakets unter
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

BGINFO V2.0

Wenn Sie mehr als nur ein paar Systeme verwalten, dann kennen Sie „Systemverwirrung“, den Zustand, in dem Sie einen Computer verwenden (oder über Ihren KVM zu ihm wechseln) und den Namen des Computers, die Betriebssystemversion, das installierte Service Pack oder die IP-Adresse vergessen haben. Obwohl alle diese Informationen über verschiedene Verwaltungsschnittstellen zugänglich sind, kann es zeitaufwändig sein, sie abzurufen. Hier kommt BgInfo von Bryce Cogswell ins Spiel: Dieses Tool zeigt die für Sie wichtigsten Systeminformationen direkt auf dem Desktophintergrund an, sodass Sie sofort alle Informationen zur Hand haben, die Sie benötigen.

Dieses neueste Update von BgInfo macht das Tool konfigurierbarer als je zuvor. Sie können benutzerdefinierten Text in einem Registrierungsschlüssel definieren, die Hintergrundfarbe oder Bitmap des Desktops angeben, den Text im Hintergrund anzeigen und vieles mehr. Am nützlichsten für große Organisationen ist jedoch die Fähigkeit von BgInfo, Einstellungen zu speichern und zu laden und sogar in eine Datenbank zu exportieren. Mit diesen Funktionen können Sie Einstellungen ein Mal festlegen und sie dann auf allen von Ihnen verwalteten Systemen verwenden.

Herunterladen von BgInfo v2.0 unter
http://www.sysinternals.com/ntw2k/freeware/bginfo.shtml

PROCESS EXPLORER V5.2

Process Explorer ist ein Hilfsprogramm zur Anzeige und Steuerung von Prozessen, das dort ansetzt, wo der Task-Manager aufhört. Process Explorer zeigt Ihnen unter anderem die Struktur der Prozesserstellung sowie Handles an, die Prozesse geöffnet haben, listet DLLs auf, die Prozesse geladen haben, und ermöglicht Ihnen die Suche nach dem Prozess oder den Prozessen, die eine bestimmte Datei geöffnet haben.

Frühere Versionen von Process Explorer funktionierten sowohl auf Windows 9x- als auch auf NT/2K/XP-Systemen, aber nur mit Version 5.2 zeigt Process Explorer CPU-Auslastungsinformationen des Prozesses für Windows 9x-Systeme an. Eine weitere Verbesserung für v5.2 hilft beim Aufspüren von Lecks auf Windows XP- und 2000-Systemen, indem die Anzahl der GDI- und USER-Handles (Handles zu Win32-GUI-Ressourcen), die ein Prozess geöffnet hat, im Dialogfeld „Prozesseigenschaften“ angezeigt wird. Entgegen der landläufigen Meinung ist selbst unter Windows 2000 und XP die Anzahl solcher Ressourcen begrenzt: Es gibt einen systemweiten Grenzwert von 65.536 Benutzerhandles und einen prozessbezogenen Grenzwert von 16.384 GDI-Handles.

Herunterladen von Process Explorer v5.2 unter
http://www.sysinternals.com/ntw2k/freeware/procexp.shtml

FILEMON V4.34 FÜR WIN64/ITANIUM

Microsoft hat mir freundlicherweise einen frühen Itanium-Computer von Intel zur Verfügung gestellt, sodass ich mit der Portierung der beliebtesten Sysinternals-Anwendungen auf Win64/Itanium beginnen konnte. Der Computer ist beeindruckend: Er verfügt über zwei 733-MHz-Prozessoren und 8 GB Arbeitsspeicher. Ich entschied mich für Filemon als erste zu portierende Anwendung. Filemon besteht aus einer Win32-GUI (jetzt Win32/64) und einem Gerätetreiber, sodass zwei verschiedene Portierungsbemühungen erforderlich waren. Etwas unerwartet ist, dass Sie sowohl Win64-Anwendungen als auch 64-Bit-Treiber auf einem 32-Bit-System unter Windows NT, 2000 oder XP mit einem übergreifenden Compiler erstellen.

Die neuesten Versionen des Platform SDK (verfügbar als kostenloser Download von Microsoft: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/)) enthalten Unterverzeichnisse, die den 64-Bit-Itanium-Compiler und -Linker, Win64-Headerdateien und Win64-Bibliotheken enthalten. Ich habe diese einfache Batchdatei erstellt, um meine Umgebung so festzulegen, dass ausführbare Win64-Dateien erstellt werden:

@echo off
set PATH=D:\Mssdk\Bin\win64;%PATH%
set INCLUDE=D:\Mssdk\include\win64;D:\Mssdk\include\win64\crt
set LIB=D:\Mssdk\lib\ia64
echo 64-bit environment set.

Beachten Sie, dass Sie Win64-Anwendungen nicht aus Visual Studio erstellen können, sondern dies über die Befehlszeile erfolgen muss.

Einige kleinere Umwandlungsprobleme waren die einzigen Probleme, auf die ich während der Kompilierung gestoßen bin. Dann habe ich den Treiber erstellt. Die neuesten Versionen des DDK (nicht mehr als kostenloser Download verfügbar) enthalten Verknüpfungen zu Eingabeaufforderungen, für die die Buildumgebung des IA64-Treibers konfiguriert ist. Sie erstellen den Treiber einfach in der 64-Bit-Zielumgebung wie einen 32-Bit-Treiber.

Der Compiler hat mir mitgeteilt, dass ich einige Umwandlungen expliziter angeben muss. Beispielsweise sind die Sequenznummern, die Filemon Vorgängen zuweist, ULONG-Typen, die der Compiler mich nicht in PVOID-Typen umwandeln ließ, um sie als Kontextparameter an die E/A-Manager-Funktion IoSetCompletionRoutine zu übergeben. Stattdessen musste ich den Typ zuerst in ULONG_PTR und dann in PVOID umwandeln. Auf jeden Fall ließ sich der Treiber innerhalb weniger Minuten fehlerfrei kompilieren.

Dann habe ich die 64-Bit-Anwendung und den Treiber auf das Itanium-System kopiert und einfach ausgeführt. Die Filemon-GUI wurde angezeigt und ist dann verschwunden. Das bedeutete, dass ich den Win64-Debugger verwenden musste, um herauszufinden, was schief gegangen war. Der Win64-Debugger ist auch im Platform SDK enthalten, und Sie können ihn auf einem 32-Bit- oder 64-Bit-Computer ausführen. Er sieht aus wie ein abgespeckter Visual Studio-Debugger und funktioniert nur im Remotemodus, bei dem Sie einen Debugclient auf dem Zielcomputer installieren, auf dem Sie die Anwendung ausführen.

Nachdem ich etwa eine halbe Stunde lang den Filemon-Code durchlaufen hatte, kam ich schließlich zu der Erkenntnis, dass meine Windows-Prozeduren ihre lparam-Parameter als LPARAM deklarieren mussten. Sie waren vom Typ LONG wegen Code, der aus dem SDK zurück kopiert wurde, als wir 1996 die erste Version von Filemon geschrieben haben. Interessanterweise hatte sich der Compiler nicht darüber beschwert, aber es bedeutete, dass jeder Zeiger, der als lparam übergeben wurde, abgeschnitten wurde. Dies zeigt sich im WM_MEASUREITEM-Handler von Filemon, der den lparam-Parameter als Zeiger auf die Struktur interpretiert. Filemon schlug in diesem Code fehl. Als ich dieses Problem behoben hatte, wurde Filemon überraschenderweise auf dem Itanium-System problemlos ausgeführt. Gesamtzeit für den Port: 1 Stunde.

Ich arbeite jetzt an der Portierung von Regmon und portiere dann DebugView. Beide Tools sollten eine Herausforderung darstellen, insbesondere DebugView, das einen ziemlich unorthodoxen Treiber aufweist.

Herunterladen von Filemon mit vollständiger Quelle unter http://www.sysinternals.com/ntw2k/source/filemon.shtml

FILEMON V1.1 FÜR LINUX

Wenn Sie Sysinternals in den letzten Monaten besucht haben, waren Sie wahrscheinlich schockiert, als Sie einen neuen Eintrag in der Menüleiste entdeckt haben: Linux-Hilfsprogramme. Das stimmt, ich habe beschlossen, dass es ziemlich cool wäre, Filemon unter Linux auszuführen. Ich hatte bereits die RAD-Umgebung (Delphi Rapid Application Development) von Borland unter Windows verwendet, sodass mir bei der Veröffentlichung von Kylix (im Grunde Delphi für Linux) klar wurde, dass die grafische Benutzeroberfläche (GUI) ziemlich einfach sein würde.

Die verbleibende Frage war, wie die Dateisystemaktivitäten abgefangen werden können. Die meisten Unix-Versionen, einschließlich Linux, implementieren einen Systemaufruf namens ptrace(), mit dem ein Prozess alle Systemaufrufe abfangen kann, die von einem Zielprozess ausgeführt werden. Ich habe in Erwägung gezogen, ptrace() zur Überwachung der Dateisystemaktivität zu verwenden, und werde Filemon vielleicht in Zukunft so ändern, dass das Tool aus Gründen, die noch deutlich werden, verwendet werden kann. Ich habe mich aber dagegen entschieden.

Der Nachteil bei der Verwendung von ptrace() ist, dass Filemon alle aktuell ausgeführten Prozesse aufzählen und einen ptrace()-Vorgang für jeden einzelnen Prozess ausführen müsste. Außerdem müsste das Tool auch an neu erstellte Prozesse angefügt werden, und die ptrace()-Funktionalität bietet keine Möglichkeit, um sicherzustellen, dass die ersten Systemaufrufe, die von dem neuen Prozess ausgeführt werden, nicht verpasst werden. Wenn ein Prozess, dessen Ablauf verfolgt wird, einen Systemaufruf ausführt, blockiert das Betriebssystem ihn, sendet ein Signal an den verfolgenden Prozess und wartet darauf, dass der verfolgende Prozess die Fortsetzung des Prozesses zulässt. Dies kann zu einer schwerwiegenden Leistungsbeeinträchtigung führen, wenn alle Dateisystemaktivitäten angezeigt werden sollen. Schließlich besteht der größte Nachteil darin, dass ptrace() das Verhalten von Prozessen ändert, deren Ablauf verfolgt wird. Während der Ablaufverfolgung ist die Überwachung der übergeordnete Prozess, was bedeutet, dass das wirkliche übergeordnete Element eines Prozesses mit Ablaufverfolgung die Benachrichtigungen nicht sieht, die normalerweise ausgegeben werden, wenn seine untergeordneten Prozesse diese verursachen.

Es wäre schön gewesen, wenn ich einen Dateisystem-Filtertreiber (einen „stapelbaren“ Treiber in Linux-Terminologie) hätte schreiben können, wie ihn der E/A-Manager unter Windows NT/2000/XP unterstützt, aber die aktuelle Linux-Dateisystemarchitektur unterstützt keine stapelbaren Dateisystemtreiber. Es gibt einen Patch namens FiST, den Sie anwenden können, um diese zu unterstützen (http://www.cs.columbia.edu/~ezk/research/fist/)), und es gibt auch ein Ablaufverfolgungstoolkit (http://www.opersys.com/LTT/index.html) für Linux, aber beides erfordert, dass Endbenutzer ihre Kernel neu kompilieren, was ich vermeiden wollte. Daher habe ich beschlossen, die Überwachung mit einem Treiber zu implementieren, der Systemaufrufe abfängt, ähnlich wie Regmon unter Windows funktioniert.

Es gibt zwei Gründe, die das Projekt schwieriger machen als das gleiche Projekt unter Windows. Der erste ist, dass Linus Torvalds, der Vater von Linux und Leiter der Linux-Kernelentwicklung, nicht an die Verwendung von Kerneldebuggern glaubt. Die Gründe sind ziemlich lächerlich (siehe http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-36/0575.htm, um Linus eigene Erklärung zu lesen), und es ist einer von mehreren Gründen, warum der Linux-Kernel es schwer haben wird, mit Windows mitzuhalten. Es gibt ein paar nicht offizielle Kerneldebugger, aber sie erfordern, dass Sie den Kernel patchen, und sind mit einigem Aufwand verbunden. Außerdem möchte Linus keine Abwärtskompatibilität mit Gerätetreibern garantieren, wenn neue Kernel veröffentlicht werden. Die Folge ist, dass sich jede exportierte Kernel-API plötzlich ändern kann, wodurch vorhandene Treiber, die diese API verwenden, nicht mehr funktionieren und für neue Kernel neu kompiliert werden müssen.

Das Fehlen eines integrierten Kerneldebuggers bedeutete, dass ich über Print-Debuganweisungen debuggen musste (ich dachte, ich würde genauso viel Zeit mit dem Debuggen über printk – Kernelmodusausgaben – verbringen wie mit der Installation und dem Erlernen eines Kerneldebuggers), und die sich ändernden Kernel-APIs und Datenstrukturen bedeuten, dass Filemon für Linux kernelabhängig ist. Dies funktioniert unter verkleinertem Red Hat 7.1 und 7.2 und SuSE Linux 7.1 und 7.2 und möglicherweise auch unter anderen kommerziellen Distributionen, aber ich muss noch einen Weg finden, den Treiber vor willkürlichen Kerneländerungen zu schützen (eine Änderung, die eine frühe Version des Treibers fehlschlagen ließ, war die Änderung der Aufrufkonvention einer Kernelfunktion von Standard zu Fast-Call).

Filemon für Linux weist genau die gleiche Benutzeroberfläche wie sein Windows-Gegenstück auf und sieht auch bemerkenswert ähnlich aus (siehe Screenshot auf der Filemon für Linux-Seite). Meine Schlussfolgerungen bezüglich der Leichtigkeit der Entwicklung eines allgemeinen, nicht vom Kernel abhängigen Dateisystemfilters für Linux sollten klar sein: Es ist schwierig, wenn nicht sogar unmöglich. Im Gegensatz dazu wurden stapelbare Treiber (Filtertreiber) in jeder Treiberdomäne (Netzwerk, Dateisystem, Speicher, Eingabe usw.) von Anfang an von der E/A-Architektur von Windows NT unterstützt.

Herunterladen von Filemon für Linux unter http://www.sysinternals.com/linux/utilities/filemon.shtml

SYSINTERNALS UNTER WWW.MICROSOFT.COM

Dies ist die aktuelle Version der Sysinternals-Verweise in den Microsoft Knowledge Base-Artikeln (KB), die seit dem letzten Newsletter veröffentlicht wurden. Beachten Sie die Artikel, die sogar „Filemon“ im Titel enthalten. Damit sind insgesamt 31 KB-Verweise auf Sysinternals verfügbar. Eine vollständige Liste finden Sie unter http://www.sysinternals.com/ntw2k/info/mssysinternals.shtml.

  • Fehlermeldung „Schwerwiegende Ausnahme“ tritt während des Setups auf http://support.microsoft.com/support/kb/articles/Q273/9/18.ASP

  • FP2000: Dateien vom Typ „Liste“ für Datenbanktreiber ist leer http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308935

  • VORGEHENSWEISE: Behandeln von Fehler 1928 „Fehler beim Registrieren der COM+-Anwendung“ http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308940

  • PRB: Konflikt mit EOF bei Verwendung von #import mit ADO http://support.microsoft.com/support/kb/articles/Q166/1/12.ASP

  • PRB: DLLs werden nach dem Aufruf von CoFreeUnusedLibraries nicht entladen http://support.microsoft.com/support/kb/articles/Q301/3/57.ASP

  • PRB: Fehler 80004005 „Die Microsoft Jet-Datenbank-Engine kann die Datei „(Unbekannt)“ nicht öffnen“ http://support.microsoft.com/support/kb/articles/Q306/2/69.ASP

  • PRB: FileMon zeigt an, dass „DAO360.dll“ „MSJet49.dll“, „SJet48.dll“ und andere „MSJetxx.dll“-Dateien nicht laden kann http://support.microsoft.com/support/kb/articles/Q306/3/86.ASP

  • SMS: Softwareinventar-Agent generiert eine Fehlermeldung „Fehler „Ungültige Seite““ http://support.microsoft.com/support/kb/articles/Q302/6/51.ASP

INTERNALS-INFORMATIONEN

INSIDE WINDOWS 2000: DIE INTERAKTIVE DVD

Wenn Sie den Sonderpreis für INSIDE Windows 2000 (das interaktive DVD-Tutorial zu den Interna von Windows 2000) verpasst haben, haben wir gute Nachrichten! Ein EINFÜHRUNGSPREIS von 950 USD, der mehr als 25 % unter dem normalen Preis für Einzelbenutzer liegt, ist noch verfügbar. Um JETZT ZU BESTELLEN oder weitere Informationen zu diesem aufregenden neuen Produkt von David Solomon und Mark Russinovich zu erhalten, besuchen Sie http://www.solsem.com/dvd.html.. Auch in einem Netzwerkverteilungsformat für Intranetstreaming verfügbar!

NOTIEREN SIE SICH DIE TERMINE: GEMEINSAMER KURS VON RUSSINOVICH UND SOLOMON IN SEATTLE UND BOSTON

Unser dreitägiger Windows 2000/XP-Interna-Kurs in Austin im letzten Monat war ein ausverkaufter Erfolg, sodass wir zwei weitere Angebote geplant haben: 17. bis 19. April in der Nähe von Seattle und 12. bis 14. Juni in Boston (Anmeldung in Kürze möglich). Der Kurs basiert auf „Inside Windows 2000, 3rd Edition“ und behandelt Umgebungssubsysteme, Systemaufrufverteilung, Systemthreads, Starten und Herunterfahren, Interna der Registrierung, Prozesse und Threadplanung, Speicherverwaltung, Sicherheit, das E/A-System, Speicher, NTFS und Cache-Manager. Wenn Sie die Funktionsweise von Windows XP und 2000 verstehen, können Sie die Plattform effizienter nutzen und effektiver debuggen und Probleme beheben. Weitere Informationen finden Sie unter http://www.sysinternals.com/seminar.shtml.

WINDOWS XP-MANIFESTDATEIEN

Eine der sichtbarsten Änderungen in Windows XP ist das neue Erscheinungsbild des Luna-Desktops. Luna ist eigentlich ein „Design“, und wenn Sie eine Anwendung ausführen, die nicht designfähig ist (jede Anwendung, die nicht speziell für die Nutzung von Windows XP-Designs geschrieben wurde), hat die Anwendung das ältere Aussehen und Verhalten von Windows 2000. Sie können jedoch auch ältere Anwendungen ganz einfach das neue Aussehen verleihen, selbst wenn Sie nicht über Quellcode verfügen. Erstellen Sie einfach eine XML-Manifestdatei für die Anwendung, die dem Windows XP-Ladeprogramm mitteilt, dass diese Anwendung die Common Control Version 6-DLL (die Datei „comctl32.dll“ in %SystemRoot%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1 df_6.0.0.0_x-ww_1382d70a) anstelle der nicht designbezogenen Version in %SystemRoot%\System32 verwenden soll. Dies ist die Manifestdatei, die die Designfähigkeit von Process Explorer v5.2 aktiviert:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly
xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Process Explorer"
processorArchitecture="x86"
version="5.1.0.0"
type="win32"/>
<description>Process handle and DLL viewer</description> <dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

Ändern Sie den Anwendungsnamen, die Version und die Beschreibung der Anwendung, die Sie designfähig machen möchten, und speichern Sie die Datei so, dass sie denselben Namen wie die ausführbare Datei der Anwendung besitzt, nur mit angefügter Erweiterung „.manifest“, z. B. „procexp.exe.manifest“. Wenn Sie der Entwickler der Anwendung sind, können Sie die Manifestdatei in die Ressourcen der Anwendung einbetten, wie ich es mit Process Explorer gemacht habe. Ein Beispiel dafür finden Sie im Quellcode für Filemon.

WAS IST IN EINER X-BOX ENTHALTEN?

Wenn Sie in letzter Zeit die Welt der Konsolenspiele verfolgt haben, dann wissen Sie sicherlich, dass die neue X-Box-Konsole von Microsoft mit einer geänderten Version von Windows 2000 arbeitet. Während einer kürzlichen Windows XP-Recherche bei Microsoft für die vierte Auflage unseres Buchs erfuhren Dave Solomon und ich vom Windows 2000/XP-Entwicklungsteam, dass sich die X-Box-Gruppe bei der Treiberunterstützung für Windows 2000 entschieden hatte. Nachdem die Entscheidung gefallen war, bekamen die X-Box-Entwickler eine Kopie der Windows 2000-Quellstruktur und verabschiedeten sich, ohne dass das Windows 2000/XP-Team je wieder von ihnen gehört hätte.

Die X-Box verfügt über eine stark geänderte, abgespeckte Version von Windows 2000, die nur 512 KB Speicherplatz beansprucht. Alle nicht relevanten Subsysteme wurden entfernt (ursprünglich wurde das Plug & Play-Subsystem entfernt, um es dann wieder hinzuzufügen, als festgestellt wurde, dass das Laden von Treibern davon abhängt), es wird nur ein Prozess ausgeführt, und es gibt kein Win32-Subsystem (nur die X-Box-API). Die X-Box verfügt nur über 64 MB physischen Arbeitsspeicher und besitzt keine Unterstützung für virtuellen Arbeitsspeicher, sodass die Speicher- und Cache-Manager von Windows 2000 zwei Subsysteme sind, die entfernt wurden. Bei solch drastischen Änderungen müssen Sie es als neues Betriebssystem betrachten, nicht als Windows 2000.

Weitere Informationen zu X-Box-, GameCube- und PS2-Interna finden Sie http://www.e-insite.net/ednmag/index.asp?layout=article&articleid=CA185947&pubdate=12-20-01

ZUFÄLLIGE WINDOWS XP-STATISTIKEN

Die folgenden Statistiken wurden von Microsoft auf der OEM System Builder-Website veröffentlicht (unter http://oem.microsoft.com – Sie können sich kostenlos anmelden), und ich dachte mir, dass Sie einige davon interessant und/oder amüsant finden werden.

Die Buildnummer der endgültigen Version von Windows XP ist übrigens nicht zufällig auf 2600 gefallen – sie wurde ein wenig verfälscht (die Buildnummer wird jedes Mal erhöht, wenn das Betriebssystem im Buildlab kompiliert wird, in der Regel ein Mal pro Arbeitstag). Insiderquellen besagen, dass die Buildnummer an die 2600-Community gerichtet war, eine lochere Gruppe von Hackern (http://www.2600.com/)), als Botschaft, die das Vertrauen des XP-Teams in die Sicherheit von XP demonstrieren sollte.

  • Anzahl der Tage, die für die Entwicklung von Windows XP benötigt wurden: 600 (20.12.99 – 24.08.01)
  • Anzahl der Mitglieder des Schwerpunktteams: 5.736
  • Anzahl der Tester pro Entwickler: 1,4
  • Anzahl der im Rahmen des Projekts geborenen Babys: 452
  • Anzahl der beschäftigten Praktikanten: 504
  • Verzehrte Menge von Makkaroni während 40 „Windows-Informationsbesprechungen“: ca. 2.722 kg
  • Anzahl der servierten Frappuccino®: 86.400
  • Gesammelte USD für Ronald McDonald House in Seattle (lokale Wohltätigkeitsorganisation): 2 Millionen USD
  • Anzahl der Testfälle für die Systemwiederherstellungsfunktion: 1,6 Millionen
  • Anzahl der seit Windows XP RC1 ausgeführten Direct3D-Grafiktestfälle: 43.114.143
  • Anzahl der auf Kompatibilität getesteten Anwendungen: 5.500
  • Anzahl der standardmäßig unterstützten Geräte: 12.000
  • Prozentsatz der beliebtesten PC-Anwendungen, die in den letzten drei Jahren vertrieben wurden und mit Windows XP kompatibel sein werden: 90 %
  • Anzahl der Titel im größten Testfall der digitalen Medienbibliothek: 31.000
  • Länge in Stunden der längsten Einzeldatei, die von Windows Movie Maker erfasst wurde: 114
  • Anzahl der Sprachen, in die wir lokalisieren: 24 vollständig und 9 teilweise
  • Anzahl der Länder, die am 25.10. an der Einführung teilnehmen: über 50
  • Anzahl der Teilnehmer an Einführungsveranstaltungen weltweit: über 580.000 Personen... zuzüglich Onlinezielgruppen von 5.120 Systembauern weltweit

NEUER VERBESSERTER WINDBG

Windbg ist ein grafisches Front-End für Kerneldebuggingunterstützung, die in den Windows NT/2000/XP-Kernel integriert ist. Bis vor einigen Jahren hatte Windbg zu Recht den Ruf, umständlich und schwerfällig zu sein, aber das hat sich geändert, seit Microsoft sich auf die Verbesserung des Programms konzentriert hat. Die neueste Version von Windbg, die als kostenloser Download von http://www.microsoft.com/ddk/Debugging/ verfügbar ist, wurde im Vergleich zu den alten Versionen erheblich verbessert und ist einfacher zu bedienen. Es gibt einige neue Funktionen, die selbst erfahrenen Windbg-Benutzern nicht bekannt sein dürften, sowie zwei Befehle, die für Systemadministratoren bei der Diagnose von Systemabstürzen nützlich sind.

Eine Funktion, die die Verwendung des neuesten Windbg sehr einfach macht, ist die Unterstützung des Symbolservers von Microsoft. Ein Problem beim Anzeigen von Absturzabbildern oder beim Debuggen von Anwendungen mit Windbg bestand darin, dass Sie die richtigen Debugsymboldateien für Ihre Installation installiert haben mussten. Mit Service Packs, Hotfixes und möglicherweise Abstürzen von verschiedenen Betriebssystemen (z. B. Windows NT gegenüber Windows XP) kann dies mühsam sein. Mit der Unterstützung des Symbolservers geben Sie einfach die URL des Microsoft-Symbolservers in das Dialogfeld des Windbg-Symbolpfads ein, und Windbg lädt die Symbole bei Bedarf vom Server herunter und speichert sie im von Ihnen angegebenen Verzeichnis. Der Symbolserver verfügt über Symbole für Windows .NET Server Beta 3, Windows XP und XP-Release Candidates, Windows 2000 und die zugehörigen Service Packs und Hotfixes, Windows NT 4, MDAC 2.1 bis 2.7, IIS und ISA.

Die beiden Befehle, die für das Debuggen von Absturzabbildern nützlich sind, sind !analyze und .dump. Führen Sie !analyze aus (geben Sie den Schalter -v an), um eine automatische Analyse eines Absturzes basierend auf der Heuristik zu erhalten. Dieser Befehl ist bereits sehr leistungsfähig, und wenn Microsoft weitere historische Daten von echten Abstürzen einbezieht, wird er noch genauer werden.

Der Befehl .dump ist sowohl für das Debuggen im Benutzermodus als auch für Analysen des Absturzabbilds im Kernelmodus nützlich. In einigen Serverumgebungen, insbesondere bei Webservern, kann es vorkommen, dass Sie ein Speicherleck oder ein anderes Problem feststellen, aber nicht bereit sind, den Server zu beenden und neu zu starten, bis die Ursache isoliert wurde. Unter Windows XP und .NET Server können Sie Windbg an den Serverprozess anhängen, den Befehl .dump ausführen, um eine Absturzabbilddatei für den Benutzerspeicher zu generieren, und dann den Prozess (mit dem Befehl .detach) trennen, wobei der Server nur kurz angehalten wird. Dann kann ein Entwickler die generierte Speicherabbilddatei verwenden und offline analysieren.

Standardmäßig generieren Windows-Serversysteme ein vollständiges Speicherabbild, das so groß ist wie die Menge des physischen Arbeitsspeichers, der auf einem System vorhanden ist. Es kann daher sehr groß sein. Sie können das Speicherabbild jedoch in Windbg laden und den Befehl .dump verwenden, um ein kleineres Kernelspeicherabbild oder ein Minispeicherabbild aus dem vollständigen Speicherabbild zu generieren. Die kleineren Dateien lassen sich einfacher austauschen und sind häufig alles, was erforderlich ist, um die Ursache eines Absturzes zu isolieren.

Laden Sie die neueste Version von Windbg von http://www.microsoft.com/ddk/Debugging/ herunter, und erhalten Sie Anweisungen zum Konfigurieren von Windbg zum Abrufen von Symbolen vom Microsoft-Symbolserver unter http://www.microsoft.com/ddk/debugging/symbols.asp.

BALD VERFÜGBAR

VERWENDEN VON BOOTVIS ZUR PROFILERSTELLUNG DES WINDOWS XP-STARTPROZESSES

Um sie bei der Optimierung des Windows XP-Startprozesses zu unterstützen, hat das Windows XP-Leistungsteam wichtige Punkte im Betriebssystem instrumentiert und ein Tool namens BootVis zum Anzeigen von Startablaufverfolgungen entwickelt. In einem überraschenden Schritt haben sie das Tool kostenlos zur Verfügung gestellt. Es ist sehr einfach zu verwenden und zeigt eine erstaunliche Menge an Details an, einschließlich Informationen darüber, wann Treiber initialisiert werden, wann und wo Datenträger-E/A erfolgt und wann Dienste und Anwendungen gestartet werden. Das nächste Mal zeige ich Ihnen, wo Sie das Tool abrufen können und wie Sie es verwenden.


Vielen Dank, dass Sie den Sysinternals-Newsletter gelesen haben.

Veröffentlicht: Montag, 07. Januar 2002 um 19:01 Uhr von ottoh

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