Freigeben über


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

Der Systems Internals Newsletter Band 2, Nummer 2

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


27. März 2000 – In dieser Ausgabe:

  1. LEITARTIKEL

    • Mark schreibt zusammen mit David Solomon „Inside Windows 2000“ (3. Ausgabe)
  2. NEUIGKEITEN BEI SYSINTERNALS

    • PsKill v1.03, PsList v1.12
    • Junction v1.0
    • ElogList v1.0
    • NTFrob v1.6a
    • GetSid v1.1
    • HandleEx v2.23
    • Regmon v4.24, Filemon v4.28
    • AutoRuns v1.0
    • NT 4- ACL-Editor
    • SysInternals-T-Shirts
    • Mehr Sysinternals auf microsoft.com
    • Internals-Kolumnen für März/April
    • Nicht ganz so neue Sachen
  3. INTERNALS-INFORMATIONEN

    • Analysepunkte
    • Die Kernel-Handle-Tabelle
    • Fehler beim Starten mindestens eines Treibers
    • Patente im Zusammenhang mit Microsoft NT
  4. BALD VERFÜGBAR

    • TdiMon

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.

NTFSDOS Professional und NTFS for Win98 von Winternals Software ermöglichen uneingeschränkten Lese- und Schreibzugriff auf Ihre NTFS-Laufwerke unter DOS, Windows 95 und Windows 98. NTFSDOS Pro bietet eine Single-Floppy-Startdatenträgerfunktion unter Windows NT/2K. Mit NTFSDOS Pro können Sie fehlerhafte Treiber löschen, Dateien aktualisieren und eine allgemeine Dateisystemwartung auf NTFS-Laufwerken über eine DOS-Startdiskette durchführen. NTFS für Win98 bietet transparenten Zugriff auf NTFS-Laufwerke unter Windows 95 und Windows 98. Nutzen Sie Anwendungen und Dateien ganz einfach unter NT und Win9x auf NTFS-Laufwerken in Ihrer Dual-Boot-Umgebung. Beide Hilfsprogramme verfügen sogar über eine integrierte NTFS-Chkdsk-Funktion. Eine kostenlose, auf Lesevorgänge beschränkte Version von NTFSDOS Pro ist unter http://www.sysinternals.com/ntfspro.htm verfügbar. Eine kostenlose, auf Lesevorgänge beschränkte Version von NTFS for Win98 ist unter http://www.sysinternals.com/ntfs98.htm. verfügbar.

Guten Tag,

Willkommen beim Systems Internals Newsletter. Der Newsletter hat aktuell 20.000 Abonnenten. Mit über 6.000 neuen Abonnenten ist die Liste in den letzten beiden Monaten enorm gewachsen! Leiten Sie den Newsletter bitte weiterhin an Ihre Freunde weiter.

Ich freue mich, verkünden zu können, dass ich an der dritten Ausgabe von „Inside Windows 2000“ mitwirken werde, und zwar zusammen mit Dave (http://www.solsem.com). Wenn Sie sich für Windows NT-Internals interessieren, dann haben Sie mit ziemlicher Sicherheit die zweite Ausgabe von „Inside Windows NT“ (Microsoft Press) von Dave gelesen. Die Veröffentlichung von Windows 2000 bringt eine Reihe größerer und kleinerer Änderungen am NT-Kernel und den umgebenden Komponenten mit sich, was eine Überarbeitung des Buchs von Dave erforderlich macht.

In vielerlei Hinsicht haben Dave und ich in den letzten drei Jahren unabhängig an „Inside Windows 2000“ gearbeitet, um bei den Änderungen, die Microsoft in Windows 2000 von NT 5.0 Beta 1 bis Windows 2000 Build 2195 eingeführt hat, auf dem Laufenden zu bleiben. Ich hatte eigentlich schon eine Weile an meinem eigenen Buch zu Windows NT-Internals gearbeitet. Aber die Gelegenheit, gemeinsam mit Dave am Nachfolger eines so guten Buchs zu arbeiten und die offizielle Sichtweise von Microsoft hinsichtlich Windows 2000-Internals zu verfassen, konnte ich mir nicht entgehen lassen.

Die Entscheidung, das Buch gemeinsam zu schreiben, ist noch nicht lange her. Daher haben wir die letzten Monate damit verbracht, unsere Recherchen, Notizen und Artikel zusammenzuführen. Wir leben zufällig nur zwanzig Minuten voneinander entfernt in einer abgelegenen Ecke von Connecticut. Dadurch konnten wir abwechselnd im Haus des jeweils anderen arbeiten, und wir haben in letzter Zeit sehr oft bis spät in die Nacht unklare Details im Zusammenhang mit dem Innenleben von Windows 2000 recherchiert und ausdiskutiert. Unter http://www.sysinternals.com/inspic.jpg. finden Sie ein Bild von Dave und mir bei der Arbeit in seinem Haus.

Ein ungewöhnlicher Aspekt unserer Partnerschaft ist, dass Dave vollständigen Zugriff auf den Quellcode von Windows 2000 hat, ich dagegen nicht. (Ich hatte noch nie Zugriff auf Windows-Quellcode – abgesehen von dem, der öffentlich im Device Driver Kit und im Installable File System Kit verfügbar ist.) Dave geht die Quellcodedateien durch, um Sachen herauszufinden. Ich dagegen analysiere Auflistungen, die von meinem benutzerdefinierten Disassembler erstellt wurden, und erkunde das Innenleben von Windows 2000 auf Livesystemen mit dem SoftICE-Kernelmodusdebugger von NuMega. Dadurch haben wir jeweils eine eigene Perspektive und konnten mehr als einmal unsere jeweiligen Ressourcen nutzen, um gemeinsam schwierige Fragen zu beantworten.

Wir aktualisieren nicht nur das ursprüngliche Buch mit den Änderungen von Windows 2000, sondern fügen auch mehr als 30 Prozent neue Inhalte hinzu – einschließlich mehrerer neuer Kapitel. Zu den neuen Themen im Buch zählen Systemstart, Herunterfahren, Abstürze, Speicherverwaltung, interne Informationen zu Diensten und zur Registrierung sowie WMI. Diese Überarbeitung enthält sogar eine CD-ROM mit einer Momentaufnahme der SysInternals-Website und einem halben Dutzend Tools, die ich speziell für das Buch geschrieben habe. Eines der Tools (LiveKd) ermöglicht es Ihnen, den i386kd-Kerneldebugger auf einem Livesystem auszuführen, was es einfach macht, kernelinterne Elemente ohne serielle Kabel und mehrere Computer zu erkunden. Dieses Buch ergänzt das bereits solide Fundament seines Vorgängers mit wichtigen technischen Informationen und Erkenntnissen.

Wann ist das Buch verfügbar? Dave und ich fahren in der Woche vom 4. April nach Redmond, um letzte technische Kommentare von Windows 2000-Kernelentwickler*innen zu erhalten, und laut Microsoft Press wird das Buch im Juli in den Regalen stehen. Ich halte Sie natürlich weiterhin im Newsletter auf dem Laufenden.

Vielen Dank!

-Mark

NEUIGKEITEN BEI SYSTEMS INTERNALS

PSKILL V1.03, PSLIST V1.12

PsList ist ein Hilfsprogramm, mit dem Sie detaillierte Informationen zu den aktiven Prozessen eines lokalen Systems oder eines Remotesystems anzeigen können. Mit PsKill können Sie Prozesse auf einem lokalen System oder auf einem Remotesystem beenden. Diese Hilfsprogramme haben eine ähnliche Befehlszeilensyntax, bei der Sie einen optionalen Computernamen im Format \\computer angeben können. Wenn Sie einen Benutzernamen zusammen mit einem Computernamen angeben, können Sie sich bei dem angegebenen Computer mit einem anderen Benutzerkonto anmelden als dem, von dem aus Sie die Tools ausführen. Diese neuesten Versionen bieten eine alternative Kennworteingabemöglichkeit für Umgebungen, in denen Sie sie vor anderen Personen ausführen und keine Kennwörter offenlegen möchten. Wenn Sie nun ein Computerkonto als Option einschließen, aber das Kennwort weglassen, werden Sie aufgefordert, das Kennwort einzugeben, und Ihre Eingabe wird nicht auf dem Bildschirm ausgegeben.

PsKill v1.03 kann hier heruntergeladen werden: http://www.sysinternals.com/pskill.htm.
PsList v1.12 kann hier heruntergeladen werden: http://www.sysinternals.com/pslist.htm.

JUNCTION V1.0

Eine Art von symbolischer Verknüpfung ist endlich in Form von Windows 2000-NTFS-Verbindungen in Windows verfügbar. Verbindungen sind symbolische Verzeichnisverknüpfungen, und das Windows 2000 Resource Kit enthält ein Tool (linkd), mit dem Sie Verbindungen erstellen und löschen können. Leider enthält eine Basisinstallation von Windows 2000 keine Tools zum Erstellen von Verbindungen, und in der Platform SDK-Dokumentation sind Analysepunkte nicht ausreichend dokumentiert. Dies hat mich dazu veranlasst, Junction zu implementieren – ein Tool, das es Ihnen nicht nur ermöglicht, Verbindungen zu erstellen, sondern auch Dateien abzufragen und Informationen zu deren Analysepunkt anzuzeigen (sofern vorhanden). Zur Unterstützung von Entwickler*innen, die ihre eigenen Analysepunkttools implementieren möchten, habe ich den vollständigen Quellcode für Junction veröffentlicht. Weitere Informationen zu Verbindungen und zu deren Implementierung unter Windows 2000 finden Sie weiter unten im Newsletter im Abschnitt zu Analysepunkten.

Junction v1.0 mit vollständigem Quellcode kann hier heruntergeladen werden: http://www.sysinternals.com/misc.htm.

ELOGLIST V1.0

Das Windows 2000 Resource Kit enthält ein Tool namens ELogDump, mit dem Sie Datensätze aus einem Ereignisprotokoll auf dem lokalen Computer oder auf einem Remotecomputer speichern können. ELogList ist ein ElogDump-Klon, mit dem Sie auch einen optionalen Kontonamen und ein optionales Kennwort angeben können, sodass Sie von einem anderen Konto als dem, über das Sie das Tool ausführen, auf die Ereignisprotokolle eines Computers zugreifen können. ElogList eignet sich für die Dumperstellung von Ereignisprotokollen aus Batchdateien oder für die Erfassung von Ereignisprotokolldatensätzen in Textdateien, die Sie zur Aufbewahrung oder Analyse in Kalkulationstabellen importieren können.

ElogList v1.0 kann hier heruntergeladen werden: http://www.sysinternals.com/eloglist.htm.

NTFROB V1.6A

NTFrob ist ein Applet, das Ihnen im Vergleich zur Registerkarte „Leistung“ des Systemsteuerungs-Applets mehr Kontrolle über die Vordergrund- und Hintergrundquanten (Turns) bietet, die der Windows NT-Scheduler Threads zuweist. Die Verwendung kürzerer Quanten kann die Reaktionsfähigkeit interaktiver Anwendungen verbessern, während längere Quanten besser für zeitintensive Serverworkloads geeignet sind. Mit der neuesten Version (1.6a) wird NTFrob weiterhin auf dem Stand neuer Service Packs gehalten. Die Version 1.6a funktioniert mit allen veröffentlichten Versionen von NT 4.0 bis einschließlich Service Pack 6a – mit Ausnahme von Service Pack 6. (Microsoft hat Service Pack 6 kurz nach seiner Veröffentlichung aufgrund eines erheblichen Fehlers zurückgezogen.) Eine Version von NTFrob, die mit Win2K funktioniert, ist in Kürze verfügbar.

NTFrob v1.6a kann hier heruntergeladen werden: http://www.sysinternals.com/ntfrob.htm.

GETSID V1.1

Wenn Sie eine Umgebung verwalten, in der Rollouts durch Klonen vereinfacht werden, ist GetSid wahrscheinlich etwas für Sie. GetSid ähnelt dem gleichnamigen Tool aus dem Windows NT Resource Kit. Mit GetSid von SysInternals können SIDs allerdings nicht nur für Benutzerkonten, sondern auch für Computer abgerufen werden. Da GetSid netzwerkübergreifend funktioniert, ohne dass Sie Clientsoftware installieren müssen, können Sie sich mit GetSid problemlos vergewissern, dass die Computer in Ihrem Netzwerk nicht unter dem Problem doppelter SIDs leiden, das mit dem Klonen einhergeht.

GetSid v1.1 kann hier heruntergeladen werden: http://www.sysinternals.com/misc.htm.
Informationen zu dem Problem mit doppelten SIDs finden Sie hier: http://www.sysinternals.com/newsid.htm.

REGMON V4.24, FILEMON V4.28

Neben den Namen von Prozessen, die Datei- oder Registrierungsaktivitäten ausführen, zeigen diese Updates für Regmon und Filemon auch Prozessbezeichner an. Durch diese Verbesserung lassen sich Datei- und Registrierungszugriffe zwischen mehreren Prozessen mit dem gleichen Namen besser unterscheiden.

Dank einer weiteren Verbesserung in diesen Versionen können Regmon und Filemon über Remotesitzungen der Win2K-Terminaldienste ausgeführt werden (anstatt über die Konsole). Diese Unterstützung wird erreicht, indem die grafische Benutzeroberfläche der Anwendungen die Versionsnummer des Betriebssystems überprüft und bei Verwendung von Win2K das Präfix \\.\Global\ für den Namen angibt, den sie in ihrem Aufruf von „CreateFile“ verwenden, wenn sie das Geräteobjekt ihrer Treiberkomponente öffnen. In einer Terminaldiensteumgebung werden die Namen, die Gerätetreiber ihren Objekten zuweisen, im globalen (Konsolen-) Namespace gespeichert – einem Namespace, der in Remotesitzungen standardmäßig nicht sichtbar ist. Remotesitzungen verfügen jeweils über einen lokalen Namespace. Das Präfix „Global“ signalisiert dem Objekt-Manager von Win2K, dass Namen im globalen Namespace gesucht werden sollen und nicht im Namespace der Sitzung, aus der die Suche stammt.

Regmon v4.24 kann hier heruntergeladen werden: http://www.sysinternals.com/regmon.htm.
Filemon v4.28 kann hier heruntergeladen werden: http://www.sysinternals.com/filemon.htm.

AUTORUNS V1.0

In einer typischen Konfiguration können Sie jedes Mal, wenn Sie Ihr System starten und verschiedene Komponenten wie etwa Explorer anmelden, verborgene Registrierungsschlüssel und Ordner durchsuchen und automatisch die Programme ausführen, auf die dort verwiesen wird. In seinem Seminar „Windows 2000 Internals“ (http://www.solsem.com) präsentiert David Solomon eine Liste aller Orte, an denen Dateien für die automatische Ausführung angegeben werden, und Bryce Cogswell hat auf der Grundlage dieser Liste AutoRuns geschrieben – ein Programm, mit dem Sie die entsprechenden Inhalte anzeigen können. Sie werden mit ziemlicher Sicherheit überrascht sein, welche versteckten Programme ohne Ihr Wissen ausgeführt werden.

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

HANDLEEX V2.23

Die neueste Version von HandleEx verbessert die Benutzerfreundlichkeit der Benutzeroberfläche in mehreren Punkten. Zu den Verbesserungen zählt unter anderem die Möglichkeit, mithilfe von STRG+TAB zwischen oberer und unterer Ansicht zu wechseln. Viel wichtiger ist jedoch: HandleEx ist jetzt in die Dialogfeldoberfläche des Win2K-Sicherheits-Editors integriert und zeigt nicht nur die Dateien mit Speicherzuordnung an, die ein Prozess geöffnet hat, sondern auch die gewährte Zugriffsmaske für geöffnete Handles.

Wenn Sie in HandleEx zur Handle-basierten Ansicht wechseln, werden die Dateien angezeigt, die ein Prozess über Handles geöffnet hat. In der DLL-Ansicht zeigt HandleEx die Dateien an, die ein Prozess als Module geladen hat, und mit der zusätzlichen Unterstützung von Dateien mit Speicherzuordnung listet HandleEx die Dateien auf, die ein Prozess über die Win32-APIs für Dateien mit Speicherzuordnung zugeordnet hat. Da Dateien, die von Prozessen zugeordnet wurden, unter WinNT und Win2K nicht gelöscht werden können, können Sie dank der von HandleEx bereitgestellten Unterstützung von Dateien mit Speicherzuordnung ermitteln, welcher Prozess das Löschen einer Datei aufgrund einer noch vorhandenen Zuordnung verhindert.

HandleEx v2.23 kann hier heruntergeladen werden: http://www.sysinternals.com/handleex.htm.

NT 4-ACL-EDITOR

Wo wir gerade von Sicherheits-Editoren sprechen: Microsoft dokumentiert die neuen APIs für das Sicherheits-Editor-Dialogfeld von Win2K in den neuesten Versionen des Platform SDK. Die APIs der NT 4-Editoren waren jedoch immer undokumentiert, und das bleibt auch so. Die NT 4-Editoren sind die Editoren, mit denen Sie arbeiten, wenn Sie Registrierungsschlüsselberechtigungen in Regedt32 und NTFS-Dateiberechtigungen im Explorer bearbeiten.

Ich habe die Schnittstellen des Sicherheits-Editors von NT 4 ermittelt, als ich unserem WinObj-Tool Bearbeitungsfunktionen für die Objektsicherheit hinzugefügt habe, und ich habe die gleichen Schnittstellen verwendet, um HandleEx Funktionen zum Bearbeiten der Sicherheit hinzuzufügen. Ich habe mich schließlich dazu entschieden, meine Dokumentation zu veröffentlichen, damit Sie den NT 4-Versionen Ihrer eigenen Anwendungen native Sicherheits-Editor-Funktionen hinzufügen können.

Die Dokumentation zum NT 4-ACL-Editor finden Sie hier: http://www.sysinternals.com/acledit.htm.
WinObj kann hier heruntergeladen werden: http://www.sysinternals.com/winobj.htm.

SYSINTERNALS-T-SHIRTS

Wenn Ihnen die technischen Informationen und Hilfsprogramme gefallen, die Sie bei SysInternals erhalten, zeigen Sie das, indem Sie ein SysInternals-T-Shirt tragen. Bei den T-Shirts handelt es sich um Hanes Beefy-Ts aus 100 Prozent Baumwolle. Sie sind vorn und hinten mit auffälligen Farben bedruckt und kosten nur 14,95 USD. Darüber hinaus gehen 5 USD von jedem Verkauf an die American Cancer Society.

Die SysInternals-T-Shirts können Sie hier begutachten und bestellen: http://www.sysinternals.com/tshirt.htm.

MEHR SYSINTERNALS AUF MICROSOFT.COM

Ich bin stolz darauf, dass in immer mehr Microsoft Knowledge Base-Artikeln auf SysInternals-Tools verwiesen wird. Hier ist die Liste der neuesten Ergänzungen, die ich gefunden habe:

  • Q243583 PRB: „Mib.bin“ führt zu einem Fehler beim Visual Studio-Setup: http://support.microsoft.com/support/kb/articles/Q243/5/83.ASP
    In diesem Artikel wird die Verwendung von Filemon empfohlen, um Visual Studio-Setupfehler zu finden.

  • Q242131 HOWTO: Anzeigen einer Liste von Prozessen, für die Dateien geöffnet sind: http://support.microsoft.com/support/kb/articles/Q242/1/31.ASP
    Microsoft weist Benutzer*innen darauf hin, dass das Hilfsprogramm HandleEx zeigt, welche Dateiprozesse geöffnet sind.

  • Q232060 HOWTO: Leitfaden zur Problembehandlung für das MDAC-Setup: http://support.microsoft.com/support/kb/articles/q232/0/60.asp
    In diesem Artikel wird Benutzer*innen empfohlen, DLLView und HandleEx zu verwenden, um Prozesse mit MDAC-DLLs (Microsoft Data Access Component) zu finden, damit sie vor der Neuinstallation von MDAC beendet werden können.

  • Q245068 ERRMSG: Zugriff verweigert. Sie sind nicht berechtigt, oder die Datei wird verwendet: http://support.microsoft.com/support/kb/articles/q245/0/68.asp?lng=eng&sa=allkb
    In diesem Artikel wird erneut auf NtHandle verwiesen, und Sie erfahren, wie Sie bestimmen, für welchen Prozess eine verwendete Datei vorhanden ist, wenn beim Löschen der Datei ein Fehler auftritt.

  • Q247957 SAMPLE: Verwenden von „DUPS.EXE“ zum Beheben von DLL-Kompatibilitätsproblemen: http://support.microsoft.com/support/kb/articles/q247/9/57.asp
    Dieser Artikel verweist auf ListDLLs, DllView und HandleEx als Tools, mit denen Sie Probleme mit DLL-Versionen nachverfolgen können.

In allen diesen neuen KB-Artikeln wird auf SysInternals verwiesen, und auch Rick Anderson, der Autor des DUPS-Hilfsprogramms aus dem letzten KB-Artikel, verweist in seinem MSDN News-Artikel „The End of DLL Hell“ auf ListDLLs. Der Artikel ist online bei Microsoft verfügbar: http://www.msdn.microsoft.com/isapi/msdnlib.idc?theURL=/library/techart/DLLdanger1.htm. Aufgrund des Interesses, das dadurch für ListDLLs entstanden ist, habe ich ListDLLs für Windows 9x portiert, sodass die Version 2.21 unter Windows 9x, Windows NT und Windows 2000 funktioniert.

ListDLLs v2.21 kann hier heruntergeladen werden: http://www.sysinternals.com/listdlls.htm.

INTERNALS-KOLUMNEN FÜR MÄRZ/APRIL

Die März- und April-Ausgabe des Windows 2000 Magazine enthält meine zweiteilige Internals-Kolumne zur Speicherverwaltung von Windows NT und Windows 2000. Im ersten Teil der Reihe beschreibe ich die NT 4-Datenträgerpartitionierung, die erweiterte Volumekonfiguration, die Laufwerkbuchstabenzuweisung und die Gerätetreiber-Speicherarchitektur.

Im zweiten Teil behandle ich die Speicheränderungen in Win2K (einschließlich neuer Gerätetreiber für die Speicherverwaltung) sowie die dynamische Datenträgerpartitionierung, die Unterstützung erweiterter Volumes, die für die Neukonfiguration nicht neu gestartet werden müssen, und die Mechanismen für die Laufwerkbuchstabenzuweisung von Win2K.

INTERNALS-INFORMATIONEN

ANALYSEPUNKTE

Interessanterweise können sich Benutzer*innen immer für Dateisystemtricks begeistern, und Windows 2000 hat mehrere neue Tricks auf Lager. Vor Windows 2000 mangelte es allen Microsoft-Dateisystemen an einem Feature, das UNIX-Benutzer*innen bestens bekannt ist: die symbolische Verknüpfung. Mit symbolischen Verknüpfungen können Sie eine Datei oder ein Verzeichnis erstellen, das auf eine andere Datei oder auf ein anderes Verzeichnis an einer anderen Stelle im Namespace des Dateisystems verweist. Wenn eine Anwendung auf eine Verknüpfung zugreift, greift sie in Wirklichkeit auf das Ziel der Verknüpfung zu. Wenn also beispielsweise die Verknüpfung C:\drivers auf das Verzeichnis C:\winnt\system32\drivers verweist, wird ein Verweis auf den Dateinamen C:\drivers\ntfs.sys wie folgt aufgelöst: C:\winnt\system32\drivers\ntfs.sys.

Die NTFS-Version 5 (die NTFS-Revision, die in Windows 2000 enthalten ist) unterstützt einen Mechanismus, der als Analysepunkte bezeichnet wird. Ein Analysepunkt ist ein Datenblock, der einer Datei oder einem Verzeichnis zugeordnet ist und ein Tag sowie Informationen enthält, die vom Treiber definiert werden, der für die Verwaltung von Analysepunkten mit diesem Tag verantwortlich ist. Microsoft definiert mehrere integrierte Tags, einschließlich der Verbindungs- und Bereitstellungspunkttags. Wenn NTFS bei der Suche nach einem Dateinamen auf einen Analysepunkt stößt, wird die Suche abgebrochen und ein Code vom Typ STATUS_REPARSE an den Aufrufer zurückgegeben. Dateisystem-Filtertreiber und der E/A-Manager achten auf Codes für die erneute Analyse, die zu ihrem Tag gehören, und reagieren auf eine von verschiedenen Arten. HSM-Analysepunkte (Hierarchical Storage Management, hierarchische Speicherverwaltung) symbolisieren Dateien, die vom HSM-Subsystem in einen Remotespeicher (z. B. in einen Bandspeicher) verschoben wurden. Der Remotespeicher-Filtertreiber (RsFilter.sys) pullt beispielsweise die Daten der Datei transparent aus dem Remotespeicher, entfernt den Analysepunkt und ermöglicht die Wiederholung der Dateisuche.

Ein Filtertreiber kann auch den Namen der Datei ändern, die geöffnet wird. Bereitstellungspunkttags stellen Volumebereitstellungspunkte dar und ermöglichen es Ihnen, Volumes innerhalb ihrer Namespaces miteinander zu verbinden. So können Sie zum Beispiel ein Volume mit Ihren Projektdokumenten im Verzeichnis \projects des Laufwerks C: einbinden. Dies ermöglicht die Strukturierung Ihrer Dateisystemdaten sowie die Vermeidung von Laufwerkbuchstaben im DOS-Stil.

Verbindungen ähneln Bereitstellungspunkten, aber anstatt ein Verzeichnis mit einem Volume zu verknüpfen, verknüpfen sie Verzeichnisse mit anderen Verzeichnissen. Sie stellen die Unterstützung symbolischer Verknüpfungen in NTFS dar. Nun fragen Sie sich vielleicht, warum Microsoft keine dateibasierten symbolischen Verknüpfungen integriert hat. Die Antwort ist, dass symbolische Verknüpfungen bereits vorhandene Win32-Anwendungen durcheinanderbringen würden.

Es gibt viele typische Verhaltensaspekte von Anwendungen, die bei der Verwendung von Dateien, die echte symbolische Verknüpfungen sind, zu unerwarteten Ergebnissen führen würden. Ein einfaches Beispiel wäre etwa das Löschen einer symbolischen Verknüpfung mit einem Programm, das nicht dafür konzipiert ist. Stellen Sie sich eine Datei vor, die an einem zentralen Speicherort gespeichert ist, auf den mehrere symbolische Verknüpfungen verweisen. Benutzer*innen, die eine der Verknüpfungen löschen, möchten wahrscheinlich nur die Verknüpfung löschen, nicht aber die eigentliche Datei. Wenn das Programm jedoch keine symbolischen Verknüpfungen kennt, erkennt es auch nicht, dass die Datei eigentlich eine Verknüpfung ist, und fragt Sie nicht nach dem gewünschten Verhalten. Noch problematischer wird es, wenn eine Anwendung Dateien erstellt, die mit der Datei zusammenhängen, auf die sie über eine Verknüpfung verweist. Sollen die zugehörigen Dateien in dem Verzeichnis gespeichert werden, in dem sich das Linkziel befindet, oder in dem Verzeichnis, in dem sich die symbolische Verknüpfung befindet?

Microsoft war mit einem schwierigen Problem konfrontiert, und ich bin sicher, dass es Anwendungen gibt, die noch komplexere Dateibearbeitungen ausführen, die selbst dann nicht funktionieren würden, wenn Sie eine Umgehung für die erwähnten Probleme finden. Aus diesem Grund halte ich es für unwahrscheinlich, dass es jemals dateibasierte symbolische Verknüpfungen in Windows geben wird.

DIE KERNEL-HANDLE-TABELLE

Der Win2K-Objekt-Manager hat eine neue Art von Handle-Tabelle eingeführt, die die Leistung bestimmter Gerätetreibertypen verbessert. Einige Treiber müssen Handles für Systemobjekte öffnen, während sie im Sicherheitskontext eines Benutzerprozesses ausgeführt werden. Gerätetreiber können Sicherheitsüberprüfungen beim Öffnen von Objekten umgehen. Daher müssen sie Maßnahmen ergreifen, um eine Sicherheitslücke zu verhindern, die beim Erstellen eines Handles für ein vertrauliches Objekt in der Handle-Tabelle eines nicht privilegierten Prozesses entsteht. Um Sicherheitsprobleme zu vermeiden, müssen NT 4-Treiber entweder Arbeitselemente in Workerthreads einreihen, die im Systemprozesskontext ausgeführt werden, oder die API KeAttachProcess verwenden, um zur Handle-Tabelle und zum Adressraum des Systemprozesses zu wechseln. Beide Alternativen können die Leistung beeinträchtigen – insbesondere, wenn der Treiber sie häufig verwenden muss.

Die Win2K-Lösung für dieses Problem besteht in einem neuen Flag, das ein Treiber in einer OBJECT_ATTRIBUTES-Struktur übergeben kann, wenn er ein Objekt öffnet und ein Handle erhält. Das Flag ist nicht im DDK dokumentiert, sondern in der Headerdatei „NTDEF.H“ als OBJ_KERNEL_HANDLE definiert. Wenn der Objekt-Manager das angegebene Objekt geöffnet hat, überprüft er beim Erstellen eines Handles für die Rückgabe an den Aufrufer, ob dieses Flag vorhanden ist. Falls ja, wird das Handle nicht in der Handle-Tabelle des derzeit ausgeführten Prozesses, sondern in einer Handle-Tabelle mit dem Namen „ObpKernelHandleTable“ erstellt. Bei den Handles, die der Objekt-Manager an Aufrufer zurückgibt, die Kernel-Handles anfordern, ist das High Bit festgelegt, sodass die Werte aller Kernel-Handles größer als 0x80000000 sind.

Wenn ein Handle an den Objekt-Manager übergeben wird (beispielsweise in einem Aufruf von ObReferenceObjectByHandle, bei dem ein Handle in einen Zeiger auf das dem Handle zugrunde liegende Objekt übersetzt werden muss), überprüft er, ob der Handle-Verweis ein Kernelmodusverweis ist und ob das High Bit des Handles festgelegt ist. Bei Verweisen, die diesen Kriterien entsprechen, sucht der Objekt-Manager das Handle in der Kernel-Handle-Tabelle anstatt in der Handle-Tabelle des derzeit ausgeführten Prozesses. So vermeidet ein Treiber, der auf Kernel-Handles für sichere Objekte verweist, sowohl Leistungsbeeinträchtigungen als auch Sicherheitslücken.

FEHLER BEIM STARTEN MINDESTENS EINES TREIBERS

Hier eine nebensächliche, aber interessante Information zu Windows NT/2K für Sie. Wenn während des Startvorgangs ein Dialogfeld mit dem Hinweis angezeigt wird, dass mindestens ein Treiber nicht gestartet werden konnte, stammt sowohl die Bestimmung als auch das Dialogfeld vom Dienststeuerungs-Manager (Service Control Manager, SCM).

Woher weiß der SCM, dass ein Treiber nicht gestartet werden konnte? Der SCM überprüft bei der Initialisierung den Registrierungsschlüssel HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services und sucht nach Gerätetreibern mit Startwerten, die angeben, dass sie als Start- oder Systemstarttreiber starten. Wird ein Eintrag gefunden, wird der Objekt-Manager-Namespace geöffnet und überprüft, ob der Name des Gerätetreibers im Verzeichnis „\Drivers“ vorhanden ist. Wird ein Gerätetreiber erfolgreich gestartet, platziert der E/A-Manager das zugehörige Treiberobjekt im Verzeichnis \Drivers. Sollte der SCM den Namen also nicht finden, ist davon auszugehen, dass der Treiber nicht erfolgreich gestartet wurde. Den Inhalt des Verzeichnisses \Drivers können Sie mithilfe von WinObj anzeigen.

WinObj kann hier heruntergeladen werden: http://www.sysinternals.com/winobj.htm.

Softwarepatente haben in letzter Zeit viel Aufmerksamkeit bekommen. Es scheint, dass das United States Patent and Trademark Office auch Patente für sehr naheliegende „Innovationen“ erteilt, und Unternehmen nutzen die großzügige Patentpolitik, um sich eine exklusive Nutzung von Schlüsseltechnologien zu sichern. Microsoft ist hier kein unbeschriebenes Blatt. Aber was viele nicht wissen: Microsoft besitzt Patente für mehrere Schlüsselideen, die mit Windows NT entwickelt wurden. Hier ist eine Liste der Kernel-bezogenen Patente, die ich auf der Patent Server-Website von IBM gefunden habe:

„System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads“ (System zum Ausführen asynchroner Dateivorgänge, die von ausführbaren Threads angefordert werden, indem Abschlussmeldungen mit einem anderen Warteschlangenthread verarbeitet werden und der Abschluss durch ausführbare Threads überprüft wird)
http://www.patents.ibm.com/details?pn=US05758184__

Dieses Patent deckt die grundlegenden Ideen ab, die dem erweiterten NT-Synchronisierungsmechanismus zugrunde liegen, der als Abschlussports bezeichnet wird. Abschlussports ermöglichen es Prozessen, effizient auf Ein-/Ausgaben für viele verschiedene Objekte zu warten und Unterstützung im Windows NT/2000-Scheduler zu nutzen, um Threads, die einem Abschlussport zugeordnet sind, die effektive Verwendung eines Multiprozessors zu ermöglichen.
Weitere Informationen zu Abschlussports finden Sie hier: http://www.sysinternals.com/comport.htm.

„Server impersonation of client processes in an object based computer operating system“ (Serveridentitätswechsel von Clientprozessen in einem objektbasierten Computerbetriebssystem)
http://www.patents.ibm.com/details?&pn10=US05187790

Der Identitätswechsel ist ein leistungsstarkes Feature des Sicherheitsmodells von Windows NT/2000 und ermöglicht es einem Serverthread, vorübergehend den Sicherheitskontext eines Clientthreads zu übernehmen, wenn der Server Aktivitäten im Auftrag des Clients ausführt. Dadurch kann der Server problemlos das Sicherheitsmodell von Windows NT/2000 nutzen, wenn er auf geschützte Objekte für einen Client zugreift. Es ist ein cleverer, aber auch recht offensichtlicher Ansatz für verteilte Sicherheit, und Microsoft hat das Patent darauf.

„Waitable object creation system and method in an object based computer operating system“ (Objekterstellungssystem und -methode mit Wartemöglichkeit in einem objektbasierten Computerbetriebssystem)
http://www.patents.ibm.com/details?&pn10=US05057996

„Conditional object creating system having different object pointers for accessing a set of data structure objects“ (Bedingtes Objekterstellungssystem mit unterschiedlichen Objektzeigern für den Zugriff auf eine Reihe von Datenstrukturobjekten)
http://www.patents.ibm.com/details?&pn10=US05129083

„Object container transfer system and method in an object based computer operating system“ (System und Methode für die Übertragung von Objektcontainern in einem objektbasierten Computerbetriebssystem)
http://www.patents.ibm.com/details?&pn10=US05129084

„Temporary object handling system and method in an object based computer operating system“ (System und Methode für den Umgang mit temporären Objekten in einem objektbasierten Computerbetriebssystem)
http://www.patents.ibm.com/details?&pn10=US05136712

„Object transferring system and method in an object based computer operating system“ (System und Methode für die Übertragung von Objekten in einem objektbasierten Computerbetriebssystem)
http://www.patents.ibm.com/details?&pn10=US05297283

Der Objekt-Manager von Windows NT/2000 implementiert einen Namespace, der dem VFS-Namespace (Virtual File System) in UNIX-Implementierungen ähnelt. Einige der Patente, die sich Microsoft für den Objekt-Manager gesichert hat, scheinen in Wirklichkeit Patente auf objektorientiertes Design zu sein, und bei einigen scheint es Überschneidungen zu geben. Allerdings bin ich kein Patentanwalt, daher ist das nur meine laienhafte Einschätzung.

Wenn Sie sich die Patente ansehen, finden Sie die Namen mehrerer zentraler Entwickler*innen des Windows NT-Kernels – darunter auch David Cutler. Interessanterweise wurden einige der Patente von NT-Entwickler*innen für die Digital Equipment Corp mit Sitz in Maynard, Massachusetts, eingetragen, als diese an VMS arbeiteten, aber die Patentierung dauerte so lange, dass in den Patenten Redmond, Washington, als Ort angegeben ist.

BALD VERFÜGBAR

TDIMON

Wollten Sie schon immer TCP- und UDP-Netzwerkaktivitäten in Echtzeit beobachten und genau wissen, von welchen Prozessen die Aktivität ausgeführt wird? Dann freuen Sie sich auf TdiMon – eine leistungsstarke Ergänzung des Überwachungstoolkits von SysInternals.


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

Veröffentlicht am Montag, den 27. März 2000 um 19:09 Uhr von ottoh

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