IPropertySetStorage-NTFS Dateisystemimplementierung
NTFS Version 5.0 stellt eine Implementierung von IPropertySetStorage für Dateien auf einem NTFS-Volume bereit, wenn die Dateien selbst keine verbundigen Dateien sind. Die NTFS-Implementierung entspricht der zusammengesetzten Dateiimplementierung. Weitere Informationen zu Ausnahmen finden Sie in den Hinweisen.
So rufen Sie einen Zeiger auf die NTFS-Implementierung von IPropertySetStorage
- Rufen Sie StgCreateStorageEx- auf, und geben Sie STGFMT_FILE im parameter grfFlags an, um eine neue Datei zu erstellen.
- Rufen Sie StgOpenStorageEx auf, und geben Sie entweder den STGFMT_FILE- oder STGFMT_ANY Enumerationswert im parameter grfFlags an, um eine vorhandene Datei zu öffnen.
Sie können jedoch die NTFS-Implementierung von IPropertySetStorage- für eine verbunddatei nicht abrufen. Beim Öffnen einer Verbunddatei mit StgOpenStorageführt die Angabe des STGFMT_FILE Enumerationswerts zu einem Fehler.
Außerdem können einfache Eigenschaftensätze nicht durchgeführt werden. Das heißt, Sie können STGM_TRANSACTED im grfmode Parameter der Methoden Create und Open nicht angeben, es sei denn, Sie geben auch PROPSETFLAG_NONSIMPLE im parameter grfFlags an. Das Speicherobjekt des Eigenschaftensatzes selbst unterstützt keine Transaktionsverarbeitung.
Wann verwendet werden soll
Rufen Sie die IPropertySetStorage- Methoden auf, um Eigenschaftensätze im aktuellen NTFS-Eigenschaftensatzspeicher zu erstellen, zu öffnen oder zu löschen. Es gibt auch eine Methode, IPropertySetStorage::Enum, die einen Zeiger auf einen Enumerator bereitstellt, der zum Aufzählen der Eigenschaftensätze im Speicher verwendet werden kann.
Kompatibilität
Die NTFS-Implementierungen von IPropertySetStorage und IPropertyStorage sind ab Windows 2000 verfügbar. Frühere Versionen können nicht auf diese Eigenschaftensätze zugreifen.
Die NTFS-Implementierung speichert Eigenschaftssätze in alternativen Streams einer NTFS-Datei. Die alternativen Datenströme müssen kopiert werden, wenn die Hauptdatei kopiert wird.
Vorsicht
Nicht alle Dateisysteme unterstützen solche Datenströme. Wenn eine NTFS-Datei mit Eigenschaftensätzen in ein FAT-Volume kopiert wird, werden nur die Daten in der Datei kopiert. Der Eigenschaftensatz geht verloren. Die CopyFile--Funktion gibt in diesem Fall keinen Fehler zurück.
Vorsicht
Wenn der Computer, auf dem die Dateikopie ausgeführt wird, kein Computer unter Windows 2000 oder höher ist, gehen die Eigenschaftensätze möglicherweise verloren. Wenn beispielsweise ein Computer unter Windows 95 eine NTFS-Datei kopiert, geht der Eigenschaftensatz verloren, auch wenn sich die Zieldatei auch auf einem NTFS-Volume befindet.
Methodik
Die NTFS-Dateisystemimplementierung von IPropertySetStorage unterstützt die folgenden Methoden.
-
Erstellt einen neuen Eigenschaftensatz im aktuellen NTFS-Dateispeicher und stellt im Gegenzug einen Schnittstellenzeiger auf die IPropertyStorage NTFS-Dateiimplementierung bereit. Der im grfmode Parameter angegebene Freigabemodus muss STGM_SHARE_EXCLUSIVEwerden.
-
Öffnet einen vorhandenen Eigenschaftensatz im aktuellen Eigenschaftenspeicher. Beim Zurückgeben stellt sie einen Schnittstellenzeiger auf die NTFS-Dateiimplementierung von IPropertyStoragebereit. Der im grfmode Parameter angegebene Freigabemodus muss STGM_SHARE_EXCLUSIVEwerden.
-
Löscht einen Eigenschaftensatz im aktuellen Eigenschaftenspeicher.
-
Erstellt ein Objekt, das zum Aufzählen STATPROPSETSTG- Strukturen verwendet wird. Jede STATPROPSETSTG- Struktur stellt Daten zu einem einzelnen Eigenschaftensatz bereit.
Bemerkungen
Die NTFS-Implementierungen von IPropertySetStorage und IPropertyStorage Speichern von Eigenschaftensätzen in einer Datei, ohne dass sich dies auf den Inhalt dieser Datei auswirkt. Wenn Sie beispielsweise einen Eigenschaftensatz in einer HTML-Datei namens Default.htmerstellen, wird diese Datei in einem Webbrowser weiterhin ordnungsgemäß angezeigt. Das heißt, Änderungen an einer Datei mithilfe dieser beiden Schnittstellen sind beim Zugriff auf eine Datei mit der CreateFile--Funktion nicht erkennbar.
Die NTFS-Implementierung von IPropertySetStorage stellt eine sichere Implementierung bereit, wenn Eigenschaftensätze in eine Datei auf einem NTFS Version 5.0-Volume geschrieben werden. Solche Eigenschaftensätze können nicht durch die Implementierung beschädigt werden, auch wenn ein Systemfehler auftritt. Wenn die Stromversorgung für ein System beispielsweise während eines Aufrufs von IPropertyStorage::Commit fehlschlägt, während der Eigenschaftensatz auf den Datenträger geleert wird, verbleibt der Eigenschaftensatz nie in einem Zwischenzustand. Entweder bleibt die vorherige Version des Eigenschaftensatzes erhalten, oder alle Updates werden gespeichert.
Die NTFS-Implementierung von IPropertySetStorage unterscheidet sich von der Zusammengesetzten Dateiimplementierung auf folgende Weise:
Eine STATPROPSETSTG- Struktur, die aus der IEnumSTATPROPSETSTG Schnittstelle abgerufen wird, enthält ein clsid Member, dessen Wert immer null ist (CLSID_NULL). Bei der Implementierung der zusammengesetzten Datei wird der richtige clsid- Member für nicht einfache (siehe Storage- und Stream Objects for a Property Set) -Eigenschaftensätze zurückgegeben.
Beim Abrufen einer NTFS-Implementierung von IPropertySetStorage Schnittstellenzeiger mithilfe des StgCreateStorageEx- oder StgOpenStorageEx--Funktion muss der grfmode Parameter dieselben Regeln wie für die Verbunddateiimplementierung befolgen.
Darüber hinaus können die folgenden Flags nicht verwendet werden:
STGM_SIMPLE, STGM_TRANSACTED, STGM_CONVERT, STGM_PRIORITYund STGM_DELETEONRELEASE.
Wenn eine NTFS-IPropertySetStorage Schnittstelle von der StgCreateStorageEx oder StgOpenStorageEx--Funktionen abgerufen wird, gelten die Freigabemodi in erster Linie für andere Instanzen dieser Schnittstelle und nicht für Instanzen des Öffnens der Datei selbst. Wenn beispielsweise eine NTFS-IPropertySetStorage Schnittstelle geöffnet wird, indem die StgOpenStorageEx-funktion aufgerufen wird, wobei der grfmode Parameter auf STGM_READWRITE festgelegt ist|STGM_SHARE_EXCLUSIVEist es möglich, die Datei mit der CreateFile-Funktion zu öffnen.
Solche gleichzeitigen Instanzen des Öffnens dieser Schnittstelle unterliegen den folgenden Einschränkungen: Der parameter dwShareMode in der CreateFile-Funktion muss das flag FILE_SHARE_READ angeben, und der dwAccess Parameter darf das DELETE Flag nicht angeben. Außerdem dürfen die funktionen DeleteFile und MoveFile nicht für eine Datei aufgerufen werden, für die diese Eigenschaftensatzschnittstellen geöffnet sind, da diese Funktionen DELETE Zugriff auf die Datei erfordern.
Wenn eine NTFS-IPropertySetStorage- Methode schreibgeschützt geöffnet wird und die Datei derzeit keine Eigenschaftensätze aufweist, wird das zurückgegebene Objekt die Datei nicht tatsächlich geöffnet. Folglich werden andere Öffnen dieser Datei erfolgreich ausgeführt, auch wenn der Freigabemodus des ursprünglichen Öffnens andernfalls abgelehnt würde.
Beispiel; wenn ein NTFS-IPropertySetStorage im Modus STGM_READ geöffnet wird|STGM_SHARE_EXCLUSIVE, und die Datei hat keine Eigenschaftensätze, ist es möglich, die Datei gleichzeitig zu öffnen STGM_READWRITE|STGM_SHARE_EXCLUSIVE.
Verwandte Themen