IPropertySetStorage-NTFS-Dateisystemimplementierung
NTFS-Version 5.0 bietet eine Implementierung von IPropertySetStorage für Dateien auf einem NTFS-Volume, wenn die Dateien selbst keine Verbunddateien sind. Die NTFS-Implementierung entspricht der Verbunddateiimplementierung. Weitere Informationen zu Ausnahmen finden Sie unter Hinweise.
So rufen Sie einen Zeiger auf die NTFS-Implementierung von IPropertySetStorage ab
- Rufen Sie StgCreateStorageEx auf, und geben Sie im Parameter grfFlagsSTGFMT_FILE an, um eine neue Datei zu erstellen.
- Rufen Sie StgOpenStorageEx auf, und geben Sie entweder den STGFMT_FILE - oder STGFMT_ANY-Enumerationswert im grfFlags-Parameter an, um eine vorhandene Datei zu öffnen.
Sie können jedoch nicht die NTFS-Implementierung von IPropertySetStorage für eine Verbunddatei abrufen. Beim Öffnen einer Verbunddatei mit StgOpenStorage führt die Angabe des STGFMT_FILE Enumerationswerts zu einem Fehler.
Außerdem können keine einfachen Eigenschaftssätze durchgeführt werden. Das heißt, Sie können STGM_TRANSACTED nicht im grfmode-Parameter der Create - und Open-Methoden angeben, es sei denn, Sie geben auch PROPSETFLAG_NONSIMPLE im grfFlags-Parameter an. Das Eigenschaftensatzspeicherobjekt selbst unterstützt keine Transaktionsverarbeitung.
Einsatzgebiet
Rufen Sie die IPropertySetStorage-Methoden auf, um Eigenschaftssätze im aktuellen NTFS-Eigenschaftensatzspeicher zu erstellen, zu öffnen oder zu löschen. Es gibt auch die Methode IPropertySetStorage::Enum, die einen Zeiger auf einen Enumerator bereitstellt, der zum Aufzählen der Eigenschaftssä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 Eigenschaftssätze zugreifen.
Die NTFS-Implementierung speichert Eigenschaftssätze in alternativen Streams einer NTFS-Datei. Die alternativen Streams müssen kopiert werden, wenn die Standard-Datei kopiert wird.
Achtung
Nicht alle Dateisysteme unterstützen solche Datenströme. Wenn eine NTFS-Datei mit Eigenschaftensätzen auf ein FAT-Volume kopiert wird, werden nur die Daten in der Datei kopiert. der Eigenschaftssatz geht verloren. Die CopyFile-Funktion gibt in diesem Fall keinen Fehler zurück.
Achtung
Wenn der Computer, auf dem die Dateikopie ausgeführt wird, kein Computer unter Windows 2000 oder höher ist, gehen die Eigenschaftssätze möglicherweise verloren. Wenn beispielsweise ein Computer, auf dem das Windows 95-Betriebssystem ausgeführt wird, eine NTFS-Datei kopiert, geht der Eigenschaftensatz verloren, auch wenn sich die Zieldatei ebenfalls auf einem NTFS-Volume befindet.
Methoden
Die NTFS-Dateisystemimplementierung von IPropertySetStorage unterstützt die folgenden Methoden.
-
Erstellt einen neuen Eigenschaftensatz im aktuellen NTFS-Dateispeicher und stellt bei der Rückgabe einen Schnittstellenzeiger auf die IPropertyStorage NTFS-Dateiimplementierung bereit. Der im grfmode-Parameter angegebene Freigabemodus muss STGM_SHARE_EXCLUSIVE sein.
-
Öffnet einen vorhandenen Eigenschaftensatz im aktuellen Eigenschaftenspeicher. Bei der Rückgabe wird ein Schnittstellenzeiger auf die NTFS-Dateiimplementierung von IPropertyStorage bereitgestellt. Der im grfmode-Parameter angegebene Freigabemodus muss STGM_SHARE_EXCLUSIVE sein.
-
Löscht einen Eigenschaftssatz im aktuellen Eigenschaftenspeicher.
-
Erstellt ein -Objekt, das zum Aufzählen von STATPROPSETSTG-Strukturen verwendet wird. Jede STATPROPSETSTG-Struktur stellt Daten zu einem einzelnen Eigenschaftensatz bereit.
Bemerkungen
Die NTFS-Implementierungen von IPropertySetStorage und IPropertyStorage speichern Eigenschaftensätze in einer Datei, ohne dass sich dies auf den Inhalt dieser Datei auswirkt. Wenn Sie beispielsweise einen Eigenschaftensatz in einer HTML-Datei mit dem Namen Default.htm erstellen, wird diese Datei weiterhin ordnungsgemäß in einem Webbrowser angezeigt. Das heißt, Änderungen an einer Datei, die diese beiden Schnittstellen verwenden, sind beim Zugriff auf eine Datei mit der CreateFile-Funktion nicht erkennbar.
Die NTFS-Implementierung von IPropertySetStorage bietet eine sichere Implementierung, wenn sie zum Schreiben von Eigenschaftssätzen in eine Datei auf einem NTFS-Volume der Version 5.0 verwendet wird. Solche Eigenschaftssätze können von der Implementierung auch im Falle eines Systemausfalls nicht beschädigt werden. Wenn beispielsweise die Stromversorgung eines Systems während eines Aufrufs von IPropertyStorage::Commit fehlschlägt, während der Eigenschaftssatz auf den Datenträger geleert wird, bleibt 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 auf folgende Weise von der Verbunddateiimplementierung:
Eine von der IEnumSTATPROPSETSTG-Schnittstelle abgerufeneSTATPROPSETSTG-Struktur enthält einen clsid-Member, dessen Wert immer null (CLSID_NULL) ist. Mit der Verbunddateiimplementierung wird der richtige clsid-Member für nicht einfache Eigenschaftensätze zurückgegeben (siehe Storage and Stream Objects for a Property Set).
Beim Abrufen einer NTFS-Implementierung des IPropertySetStorage-Schnittstellenzeigers mithilfe der StgCreateStorageEx - oder StgOpenStorageEx-Funktion muss der grfmode-Parameter den gleichen Regeln folgen wie für die Verbunddateiimplementierung.
Darüber hinaus dürfen die folgenden Flags nicht verwendet werden:
STGM_SIMPLE, STGM_TRANSACTED, STGM_CONVERT, STGM_PRIORITY und STGM_DELETEONRELEASE.
Wenn eine NTFS-IPropertySetStorage-Schnittstelle von den Funktionen StgCreateStorageEx oder StgOpenStorageEx abgerufen wird, gelten die Freigabemodi in erster Linie für andere Instanzen dieser Schnittstelle und nicht für Instanzen, in denen die Datei selbst geöffnet wird. Wenn beispielsweise eine NTFS-IPropertySetStorage-Schnittstelle durch Aufrufen der StgOpenStorageEx-Funktion geöffnet wird, wobei der grfmode-Parameter auf STGM_READWRITE| STGM_SHARE_EXCLUSIVE ist es möglich, die Datei mit der CreateFile-Funktion zu öffnen.
Solche gleichzeitigen Instanzen des Öffnens dieser Schnittstelle unterliegen den folgenden Einschränkungen: Der dwShareMode-Parameter in der CreateFile-Funktion muss das flag FILE_SHARE_READ angeben, und der dwAccess-Parameter darf nicht das DELETE-Flag 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, enthält das zurückgegebene Objekt die geöffnete Datei nicht. Folglich sind andere Öffnungen dieser Datei erfolgreich, auch wenn der Freigabemodus des ursprünglichen geöffneten Vorgangs sie andernfalls ablehnen würde.
Beispiel; , wenn ein NTFS IPropertySetStorage im Modus STGM_READ| STGM_SHARE_EXCLUSIVE, und die Datei hat keine Eigenschaftssätze, ist es möglich, die Datei gleichzeitig zu öffnen STGM_READWRITE| STGM_SHARE_EXCLUSIVE.
Zugehörige Themen