Die Workplace Shell benutzt Dateihandles im Zusammenhang mit
Programmobjekten und Schattenobjekten damit diese eine Datei
auffinden können, egal wo sich diese im System befindet.
Programm- und Schattenobjekte bleiben deshalb unangetastet wenn die
Datei auf die sie verweisen verschoben wird.
Dies funkioniert da Programmobjekte und Schattenobjekte niemals
den pyhsikalischen Pfad auf
eine Datei abspeichern sondern nur ihr Handle. Wenn die WPS den
vollen Pfad auf eine Datei braucht wird dieser stückweise
zusammengesetzt aus den Teilpfaden derjenigen Handles die einen
Teil des Dateipfades ausmachen.
Die WPS holt sich zunächst das Dateihandle welches im
Programmobjekt oder Schattenobject verzeichnet ist. Der Eintrag
für dieses Handle bezeichnet den Dateinamen/Ordnernamen
(angezeigt in xfix's "Kurzer Name" Spalte), zusammen mit dem
Handle für den übergeordneten Ordner. Die WPS holt sich
dann den Dateipfad des übergeordneten Ordners und fügt
ihn vorne (zusammen mit einem Pfadtrenner) an den Dateipfad an.
Danach geht es dann zum übergeordneten Ordner dieses Ordners
... und so weiter, bis der Wurzelordner des Laufwerks erreicht
wird.
Dies hat die folgenden Vorteile:
- Nur der Kurzname (Dateiname bzw. Pfadkomponenten) muß in
OS2SYS.INI
abgespeichert werden was natürlich
Platz spart
- Noch wichtiger, dies macht das Verschieben einer Datei oder
eines Ordners sehr effizient da nur das Handle des
übergeordneten Ordners geändert werden muß. Da
alle Subobjekte eines Ordners (Dateien und/oder Ornder) der
verschoben wird das gleiche übergeordnete Handle haben kann
der Pfad für diese Objekte schnell neu erzeugt werden.
Für weitere Informationen über Objekthandles siehe "Über Objekthandles."
Unglücklicherweise hat dies auch einige Nachteile:
- Die WPS löscht nie Handles auch wenn die Dateien/Ordner
auf die sie sich beziehen gelöscht werden.
- Die WPS erzeugt Handles für Dateien die nicht von
Programm- oder Schattenobjekten benutzt werden (z.B. DLLs oder
ZIP Dateien).
- Fehler und/oder Abstürze der WPS kann die Handletabelle
beschädigen, zurück bleiben dann Handleduplikate,
Handles die auf die falsche Datei/Ordner zeigen, etc.
xfix kann die ersten zwei Probleme beheben und ist auch
nützlich um einige andere Probleme zu beheben. Xfix behandelt
aber vor allem Probleme mit Dateihandles. Um Probleme mit abstrakten
Objekten zu beheben können/sollten sie Henk Kelder's
CHECKINI Programm benutzen.