Freigeben über


Informationen zu Platzhaltern

Ein Dateisystemplatzhalter ist eine Datei, die eine Darstellung für den tatsächlichen Inhalt einer Datei oder eines Verzeichnisses darstellt, das sich an einem anderen Ort befindet. Diese Optimierung ermöglicht es, dass sich der tatsächliche Inhalt einer Datei oder eines Verzeichnisses an anderer Stelle befindet und bei Bedarf abgerufen werden kann. Der tatsächliche Inhalt umfasst Metadaten, Dateidaten und Verzeichniseinträge.

Platzhalter können Dateien oder Verzeichnisse sein. Sie können einen Teil der tatsächlichen Datei- oder Verzeichnismetadaten oder einen Teil der tatsächlichen Dateidaten oder Verzeichniseinträge enthalten. Platzhalterdateien werden als Sparsedateien mit festgelegtem FILE_ATTRIBUTE_SPARSE_FILE Bit gekennzeichnet.

In der Regel ist ein Platzhalter ein Analysepunkt, den ein Dateisystem-Minifilter besitzt und verwaltet. Der besitzende Minifilter ist der Enabler der Virtualisierung und ermöglicht es, dass ein Platzhalter wie eine normale Datei oder ein normales Verzeichnis im Dateisystem aussieht und sich verhält. Diese Virtualisierungstreiber fangen E/A-Anforderungen auf ihren Platzhaltern ab und ermöglichen ein dateisystemähnliches Verhalten. ProjFs und Cloud Files sind zwei Beispiele für Virtualisierungsplattformen in Windows, die Platzhalter verwenden.

Die Minifilter, die die Platzhalter besitzen, können solche E/A-Anforderungen entsprechend verarbeiten, um die E/A-Anforderungen zu erfüllen. Wenn eine Anwendung beispielsweise versucht, eine dehydrierte Platzhalterdatei zu lesen, stellt der Minifilter die Dateidaten bereit, um die E/A-Anforderung zu erfüllen.

Besitzende Minifilter können nur die Virtualisierung für E/A-Anforderungen bereitstellen, die über ihnen stammen, entweder aus dem Benutzermodus oder von Komponenten, die sich über ihnen im E/A-Stapel befinden.

Minifilter, die nicht im Besitz des Platzhalters sind, können E/A-Vorgänge mithilfe von APIs wie FltReadFile, FltWriteFile usw. für Filter unter ihnen ausgeben. Wenn ein nicht besitzender Minifilter eine gezielte E/A-Anforderung an eine Platzhalterdatei unterhalb des besitzenden Minifilters ausgibt, könnte der besitzende Minifilter die E/A-Anforderung nicht ordnungsgemäß erfüllen.

Wenn beispielsweise ein Filter eine Ziel-FltReadFile-Datei an eine dehydrierte Platzhalterdatei ausgibt, die dem besitzenden Minifilter nicht angezeigt wird, erhält der Zielfilter möglicherweise einen Block von Nullen (0s) anstelle der tatsächlichen Daten, da der Platzhalter möglicherweise eine Sparsedatei ist. Wenn das System einen Lesevorgang zwischenspeichert, der einen Block von 0s abgerufen hat, verschmutzen diese Lesevorgänge den Cache, was die Dateidaten beschädigen könnte, wenn das System den verschmutzten Cache auf den Datenträger leert. Daher ist es zwingend erforderlich, dass Minifilter Platzhalter angemessen behandeln.