Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die vom System bereitgestellte eigenständige Implementierung von IPropertySetStorage umfasst eine Implementierung von IPropertyStorage, der Schnittstelle, die Eigenschaften in einem Eigenschaftensatzspeicher liest und schreibt. Die IPropertySetStorage Schnittstelle erstellt und öffnet Eigenschaftensätze in einem Speicher. Die IEnumSTATPROPSTG und IEnumSTATPROPSETSTG Schnittstellen werden auch in der eigenständigen Implementierung bereitgestellt.
Rufen Sie zum Abrufen eines Zeigers auf die eigenständige Implementierung von IPropertyStoragedie StgCreatePropStg--Funktion auf, um einen neuen Eigenschaftensatz oder StgOpenPropStg zu erstellen., um den Schnittstellenzeiger für einen vorhandenen Eigenschaftensatz abzurufen (oder die Create oder Open Methoden der IPropertySetStorage eigenständige Implementierung aufzurufen).
Die eigenständige Implementierung von IPropertyStorage erstellt Eigenschaftssätze für jedes Speicher- oder Streamobjekt, nicht nur für zusammengesetzte Dateispeicher und Datenströme. Die eigenständige Implementierung hängt nicht von zusammengesetzten Dateien ab und kann mit jeder Implementierung strukturierter Speicher verwendet werden. Weitere Informationen zur Zusammengesetzten Dateiimplementierung dieser Schnittstelle finden Sie unter IPropertyStorage-Compound Dateiimplementierung.
Wann verwendet werden soll
Verwenden Sie IPropertyStorage-, um Eigenschaften innerhalb eines einzelnen Eigenschaftensatzes zu verwalten. Die Methoden unterstützen das Lesen, Schreiben und Löschen von Eigenschaften sowie die optionalen Zeichenfolgennamen, die Eigenschaften-IDs zugeordnet werden können. Andere Methoden unterstützen den Standardmäßigen Commit und Wiederherstellen von Speichervorgängen. Es gibt auch eine Methode, die Zeiten festlegt, die dem Eigenschaftenspeicher zugeordnet sind, und eine andere, die die Zuweisung einer CLSID zum Zuordnen anderer Code, z. B. Benutzeroberflächencode, zum Eigenschaftensatz zulässt. Die Enum-Methode stellt einen Zeiger auf die eigenständige Implementierung IEnumSTATPROPSTGbereit, die die Eigenschaften in der Gruppe aufzählt.
Formate für Den Eigenschaftensatz von Version 0 und Version 1
Die eigenständige Implementierung von IPropertyStorage unterstützt sowohl die Serialisierungsformate der Version 0 als auch die Serialisierungsformate der Version 1. Weitere Informationen finden Sie unter Property Set Serialization. Eigenschaftensätze werden im Version 0-Format erstellt und verbleiben in diesem Format, es sei denn, neue Features werden angefordert. Zu diesem Zeitpunkt wird das Format auf Version 1 aktualisiert.
Wenn beispielsweise ein Eigenschaftensatz mit dem PROPSETFLAG_DEFAULT-Flag erstellt wird, ist das Format Version 0. Solange Eigenschaftentypen, die dem Format der Version 0 entsprechen, in diesen Eigenschaftensatz geschrieben und gelesen werden, verbleibt der Eigenschaftensatz im Version 0-Format. Wenn ein Eigenschaftstyp der Version 1 in den Eigenschaftensatz geschrieben wird, wird der Eigenschaftensatz automatisch auf Version 1 aktualisiert. Anschließend kann dieser Eigenschaftensatz nicht mehr von Implementierungen gelesen werden, die nur Version 0 verstehen.
IPropertyStorage- und Variant-Typen
Die eigenständige Implementierung von IPropertyStorage unterstützt die Variantentypen VT_UNKNOWN oder VT_DISPATCH im vt Member der PROPVARIANT- Struktur nicht.
Die folgenden Variantentypen werden in einem SafeArray unterstützt. d. h. diese Werte können mit VT_ARRAY im vt Member der PROPVARIANT Struktur kombiniert werden.
In SafeArray unterstützte Variantentypen durch zusammengesetzte Dateiimplementierung von IPropertyStorage
VT_I1
VT_UI1
VT_I2
VT_UI2
VT_I4
VT_UI4
VT_INT
VT_UINT
VT_R4
VT_R8
VT_CY
VT_DATE
VT_BSTR
VT_BOOL
VT_DECIMAL
VT_ERROR
VT_VARIANT
Wenn VT_VARIANT mit VT_ARRAY kombiniert wird, enthält das SafeArray selbst PROPVARIANT- Strukturen. Die Typen dieser Elemente müssen jedoch aus der vorherigen Liste entnommen werden, können nicht VT_VARIANT werden und dürfen keine VT_VECTOR, VT_ARRAY oder VT_BYREF Indikatoren enthalten.
IPropertyStorage-Methoden
Die eigenständige Implementierung von IPropertyStorage unterstützt die folgenden Methoden:
-
Liest die im rgpspec Array angegebenen Eigenschaften und stellt die Werte aller gültigen Eigenschaften im rgvar Array von PROPVARIANT- Elementen bereit.
In der vom System bereitgestellten eigenständigen Implementierung führen doppelte Eigenschaftsbezeichner, die auf Stream- oder Speichertypen verweisen, mehrere Aufrufe an IStorage::OpenStream oder IStorage::OpenStorage und der Erfolg oder Fehler von ReadMultiple- hängt von der Fähigkeit der zugrunde liegenden Speicherimplementierung zum Freigeben von geöffneten Speicherspeichern ab.
Um einen threadsicheren Vorgang sicherzustellen, wenn dieselbe Stream- oder Speicherwerteigenschaft mehrmals über denselben IPropertyStorage Zeiger angefordert wird, wird das Öffnen erfolgreich oder fehlschlagen, je nachdem, ob die Eigenschaft bereits geöffnet ist oder nicht, und ob das zugrunde liegende Dateisystem mehrere Öffnungen eines Datenstroms oder Speichers verarbeitet. Daher führt der ReadMultiple--Vorgang für eine Stream- oder Speicherwerteigenschaft immer zu einem Aufruf von IStorage::OpenStreamoder IStorage::OpenStorage, übergeben den Zugriff (z. B. STGM_READWRITE) und freigabewerte (z. B. STGM_SHARE_EXCLUSIVE), die angegeben wurden, wenn der Eigenschaftensatz ursprünglich geöffnet oder erstellt wurde.
Wenn die Methode fehlschlägt, sind die Werte, die in rgvar-[] geschrieben wurden, nicht definiert. Wenn einige Datenstrom- oder Speicherwerteigenschaften erfolgreich geöffnet werden, aber ein Fehler auftritt, bevor die Ausführung abgeschlossen ist, sollten diese Eigenschaften freigegeben werden, bevor die Methode zurückgegeben wird.
-
Schreibt die eigenschaften, die im rgpspec[] array angegeben sind, und weist ihnen die PROPVARIANT Tags und Werte zu, die in rgvar[] angegeben sind. Eigenschaften, die bereits vorhanden sind, werden den angegebenen PROPVARIANT- Werten zugewiesen, und Eigenschaften, die derzeit nicht vorhanden sind, werden erstellt.
-
Löscht die in der rgpspec[].
-
Liest vorhandene Zeichenfolgennamen, die den Eigenschaften-IDs zugeordnet sind, die im rgpropid[] Array angegeben sind.
-
Weist Zeichenfolgennamen zu, die im rglpwstrName Array angegeben sind, eigenschaften-IDs, die im rgpropid Array angegeben sind.
-
Löscht die Zeichenfolgennamen der Eigenschaften-IDs, die im rgpropid- Array angegeben sind, indem NULL- in den Eigenschaftennamen geschrieben wird.
-
Legt die CLSID- des Eigenschaftensatzdatenstroms fest. In der eigenständigen Implementierung wird durch Festlegen der CLSID für einen Nichtimple-Eigenschaftssatz (einer, der Speicher- oder Streamwerteigenschaften enthalten kann, wie in IPropertySetStorage::Create) auch die CLSID für den zugrunde liegenden Unterspeicher festgelegt, sodass sie über einen Aufruf von IStorage::Statabgerufen werden kann.
-
Leeren Sie für einfache und nicht einfache Eigenschaftensätze das Speicherimage auf das Datenträgersubsystem. Darüber hinaus ruft diese Methode für Nichtimple transacted-mode-Eigenschaftensätze IStorage::Commit für den Eigenschaftensatz auf.
-
Ruft nur bei Nichtimple-Eigenschaftssätzen die Revert Methode des zugrunde liegenden Speichers auf und öffnet den "contents"-Datenstrom erneut. Bei einfachen Eigenschaftensätzen wird nur E_OK zurückgegeben.
-
Erstellt ein Enumerationsobjekt, das IEnumSTATPROPSTG-implementiert, deren Methoden aufgerufen werden können, um die STATPROPSTG- Strukturen zu enumerieren, die Informationen zu den einzelnen Eigenschaften im Satz bereitstellen.
Diese Implementierung erstellt ein Array, in das der gesamte Eigenschaftensatz gelesen wird und freigegeben werden kann, wenn IEnumSTATPROPSTG::Clone aufgerufen wird.
-
Füllt die Elemente einer STATPROPSETSTG- Struktur aus, die Informationen über den gesamten Eigenschaftensatz enthält. Gibt zurück einen Zeiger auf die Struktur an.
Bei Nichtimple-Speichersätzen ruft diese Implementierung IStorage::Stat (oder IStream::Stat) auf, um die Informationen aus dem zugrunde liegenden Speicher oder Datenstrom abzurufen.
-
Bei Nichtimple-Eigenschaftssätzen werden nur die vom zugrunde liegenden Speicher unterstützten Zeiten festgelegt. Diese Implementierung von SetTimes ruft die IStorage::SetElementTimes Methode des zugrunde liegenden Speichers auf, um die Zeiten zu ändern. Sie unterstützt die von der zugrunde liegenden Methode unterstützten Zeiten, die Änderungszeit, Zugriffszeit oder Erstellungszeit sein können.
Verwandte Themen