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 STGM-Konstanten sind Flags, die Bedingungen zum Erstellen und Löschen des Objekts und des Zugriffsmodi für das Objekt angeben. Die STGM-Konstanten sind in den Schnittstellen IStorage, IStream undIPropertySetStorage sowie in den Funktionen StgCreateDocfile, StgCreateStorageEx, StgCreateDocfileOnILockBytes, StgOpenStorage und StgOpenStorageEx enthalten.
Diese Elemente werden häufig mit einem OR-Operatorkombiniert. Sie werden in Gruppen interpretiert, wie in der folgenden Tabelle aufgeführt. Es ist ungültig, mehrere Elemente aus einer einzelnen Gruppe zu verwenden.
Verwenden Sie beim Erstellen eines Objekts ein Flag aus der Erstellungsgruppe, z. B. mit StgCreateStorageEx oder IStorage::CreateStream.
Weitere Informationen zur Transaktion finden Sie im Abschnitt "Hinweise".
Gruppe | Flagge | Wert |
---|---|---|
Zugang | STGM_READ | 0x000000000L |
STGM_WRITE | 0x00000001L | |
STGM_READWRITE | 0x000000002L | |
Teilen | STGM_SHARE_DENY_NONE | 0x00000040L |
STGM_SHARE_DENY_READ | 0x000000030L | |
STGM_SHARE_DENY_WRITE | 0x000000020L | |
STGM_SHARE_EXCLUSIVE | 0x000000010L | |
STGM_PRIORITY | 0x00040000L | |
Kreation | STGM_CREATE | 0x00001000L |
STGM_CONVERT | 0x00020000L | |
STGM_FAILIFTHERE | 0x000000000L | |
Transaktion | STGM_DIRECT | 0x000000000L |
STGM_TRANSACTED | 0x00010000L | |
Transaktionsleistung | STGM_NOSCRATCH | 0x00100000L |
STGM_NOSNAPSHOT | 0x00200000L | |
Direct SWMR und Simple | STGM_SIMPLE | 0x08000000L |
STGM_DIRECT_SWMR | 0x00400000L | |
Beim Release löschen | STGM_DELETEONRELEASE | 0x04000000L |
-
STGM_READ
-
-
0x000000000L
-
Gibt an, dass das Objekt schreibgeschützt ist, was bedeutet, dass Änderungen nicht vorgenommen werden können. Wenn beispielsweise ein Datenstromobjekt mit STGM_READ geöffnet wird, kann die ISequentialStream::Read-Methode aufgerufen werden, die ISequentialStream::Write-Methode ist jedoch nicht zulässig. Ebenso kann ein speicherobjekt, das mit STGM_READ geöffnet wurde, die Methoden "IStorage::OpenStream " und "IStorage::OpenStorage::OpenStorage " aufgerufen werden, aber die Methoden "IStorage::CreateStream " und "IStorage::CreateStorage " dürfen nicht aufgerufen werden.
-
-
STGM_WRITE
-
-
0x00000001L
-
Ermöglicht es Ihnen, Änderungen am Objekt zu speichern, aber keinen Zugriff auf die zugehörigen Daten zulässt. Die bereitgestellten Implementierungen der IPropertyStorage - und IPropertySetStorage-Schnittstellen unterstützen diesen schreibgeschützten Modus nicht.
-
-
STGM_READWRITE
-
-
0x000000002L
-
Ermöglicht den Zugriff und die Änderung von Objektdaten. Wenn beispielsweise ein Streamobjekt in diesem Modus erstellt oder geöffnet wird, ist es möglich, sowohl IStream::Read als auch IStream::Write aufzurufen. Beachten Sie, dass diese Konstante kein einfacher binärer ODER-Vorgang der STGM_WRITE und STGM_READ Elemente ist.
-
-
STGM_SHARE_DENY_NONE
-
-
0x00000040L
-
Gibt an, dass nachfolgende Öffnungen des Objekts keinen Lese- oder Schreibzugriff verweigert werden. Wenn keine Kennzeichnung aus der Freigabegruppe angegeben ist, wird dieses Flag angenommen.
-
-
STGM_SHARE_DENY_READ
-
-
0x000000030L
-
Verhindert, dass andere Personen das Objekt anschließend im STGM_READ Modus öffnen. Es wird in der Regel für ein Stammspeicherobjekt verwendet.
-
-
STGM_SHARE_DENY_WRITE
-
-
0x000000020L
-
Verhindert, dass andere Personen das Objekt anschließend für STGM_WRITE oder STGM_READWRITE Zugriff öffnen. Im Transaktionsmodus kann die Freigabe von STGM_SHARE_DENY_WRITE oder STGM_SHARE_EXCLUSIVE die Leistung erheblich verbessern, da sie keine Momentaufnahmen erfordern. Weitere Informationen zur Transaktion finden Sie im Abschnitt "Hinweise".
-
-
STGM_SHARE_EXCLUSIVE
-
-
0x000000010L
-
Verhindert, dass andere Personen das Objekt anschließend in einem beliebigen Modus öffnen. Beachten Sie, dass dieser Wert kein einfacher bitweiser OR-Vorgang der STGM_SHARE_DENY_READ und STGM_SHARE_DENY_WRITE Werte ist. Im Transaktionsmodus kann die Freigabe von STGM_SHARE_DENY_WRITE oder STGM_SHARE_EXCLUSIVE die Leistung erheblich verbessern, da sie keine Momentaufnahmen erfordern. Weitere Informationen zur Transaktion finden Sie im Abschnitt "Hinweise".
-
-
STGM_PRIORITY
-
-
0x00040000L
-
Öffnet das Speicherobjekt mit exklusivem Zugriff auf die zuletzt zugesicherte Version. Daher können andere Benutzer keine Änderungen an dem Objekt übernehmen, während sie im Prioritätsmodus geöffnet sind. Sie erhalten Leistungsvorteile für Kopiervorgänge, aber Sie verhindern, dass andere Änderungen übernehmen. Beschränken Sie die Zeit, die Objekte im Prioritätsmodus geöffnet sind. Sie müssen STGM_DIRECT und STGM_READ mit dem Prioritätsmodus angeben, und Sie können STGM_DELETEONRELEASE nicht angeben. STGM_DELETEONRELEASE ist nur gültig, wenn ein Stammobjekt erstellt wird, z. B. mit StgCreateStorageEx. Es ist ungültig, wenn ein vorhandenes Stammobjekt geöffnet wird, z. B. mit StgOpenStorageEx. Sie ist auch beim Erstellen oder Öffnen eines Unterelements, z. B. mit IStorage::OpenStorage, ungültig.
-
-
STGM_CREATE
-
-
0x00001000L
-
Gibt an, dass ein vorhandenes Speicherobjekt oder -stream entfernt werden soll, bevor das neue Objekt es ersetzt. Ein neues Objekt wird erstellt, wenn dieses Flag nur angegeben wird, wenn das vorhandene Objekt erfolgreich entfernt wurde.
Dieses Kennzeichen wird verwendet, wenn Sie versuchen, Folgendes zu erstellen:
- Ein Speicherobjekt auf einem Datenträger, aber eine Datei mit diesem Namen ist vorhanden.
- Ein Objekt innerhalb eines Speicherobjekts, aber ein Objekt mit dem angegebenen Namen ist vorhanden.
- Ein Bytearrayobjekt, aber ein Objekt mit dem angegebenen Namen ist vorhanden.
Dieses Flag kann nicht mit geöffneten Vorgängen verwendet werden, z. B. StgOpenStorageEx oder IStorage::OpenStream.
-
-
STGM_CONVERT
-
-
0x00020000L
-
Erstellt das neue Objekt, während vorhandene Daten in einem Datenstrom mit dem Namen "Contents" beibehalten werden. Im Fall eines Speicherobjekts oder eines Bytearrays werden die alten Daten in einen Datenstrom formatiert, unabhängig davon, ob die vorhandene Datei oder das Bytearray derzeit ein mehrschichtiges Speicherobjekt enthält. Dieses Kennzeichen kann nur beim Erstellen eines Stammspeicherobjekts verwendet werden. Es kann nicht innerhalb eines Speicherobjekts verwendet werden; Beispiel: in IStorage::CreateStream. Es ist auch nicht gültig, dieses Flag und das STGM_DELETEONRELEASE-Flag gleichzeitig zu verwenden.
-
-
STGM_FAILIFTHERE
-
-
0x000000000L
-
Führt dazu, dass der Erstellungsvorgang fehlschlägt, wenn ein vorhandenes Objekt mit dem angegebenen Namen vorhanden ist. In diesem Fall wird STG_E_FILEALREADYEXISTS zurückgegeben. Dies ist der Standarderstellungsmodus; d. h., wenn keine andere Erstellungskennzeichnung angegeben wird, wird STGM_FAILIFTHERE impliziert.
-
-
STGM_DIRECT
-
-
0x000000000L
-
Gibt an, dass jede Änderung an einem Speicher- oder Streamelement im direkten Modus während des Auftretens geschrieben wird. Dies ist die Standardeinstellung, wenn weder STGM_DIRECT noch STGM_TRANSACTED angegeben wird.
-
-
STGM_TRANSACTED
-
-
0x00010000L
-
Gibt an, dass Änderungen im Transaktionsmodus nur gepuffert und geschrieben werden, wenn ein expliziter Commitvorgang aufgerufen wird. Rufen Sie zum Ignorieren der Änderungen die Revert-Methode in der IStream-, IStorage- oder IPropertyStorage-Schnittstelle auf. Die COM-Verbunddateiimplementierung von IStorage unterstützt keine transacted Streams. Dies bedeutet, dass Datenströme nur im direkten Modus geöffnet werden können, und Sie können keine Änderungen daran wiederherstellen, transaktionente Speicher werden jedoch unterstützt. Die Verbunddatei-, eigenständigen und NTFS-Dateisystemimplementierungen von IPropertySetStorage unterstützen ebenso keine Transaktionen, einfache Eigenschaftensätze, da diese Eigenschaftensätze in Datenströmen gespeichert werden. Die Transaktion von Nichtimple-Eigenschaftssätzen, die durch Angeben des PROPSETFLAG_NONSIMPLE Flags im parameter grfFlags von IPropertySetStorage::Create erstellt werden kann, werden jedoch unterstützt.
-
-
STGM_NOSCRATCH
-
-
0x00100000L
-
Gibt an, dass im Transaktionsmodus eine temporäre Entwurfsdatei in der Regel verwendet wird, um Änderungen zu speichern, bis die Commit-Methode aufgerufen wird. Wenn Sie STGM_NOSCRATCH angeben, kann der nicht verwendete Teil der Ursprünglichen Datei als Arbeitsbereich verwendet werden, anstatt eine neue Datei für diesen Zweck zu erstellen. Dies wirkt sich nicht auf die Daten in der Originaldatei aus und kann in bestimmten Fällen zu einer verbesserten Leistung führen. Es ist ungültig, dieses Kennzeichen anzugeben, ohne auch STGM_TRANSACTED anzugeben, und dieses Flag kann nur in einem geöffneten Stamm verwendet werden. Weitere Informationen zum NoScratch-Modus finden Sie im Abschnitt "Hinweise".
-
-
STGM_NOSNAPSHOT
-
-
0x00200000L
-
Dieses Kennzeichen wird beim Öffnen eines Speicherobjekts mit STGM_TRANSACTED und ohne STGM_SHARE_EXCLUSIVE oder STGM_SHARE_DENY_WRITE verwendet. In diesem Fall verhindert die Angabe STGM_NOSNAPSHOT , dass die vom System bereitgestellte Implementierung eine Momentaufnahmekopie der Datei erstellt. Stattdessen werden Änderungen an der Datei am Ende der Datei geschrieben. Nicht verwendeter Speicherplatz wird nicht beansprucht, es sei denn, die Konsolidierung wird während des Commits ausgeführt, und es gibt nur einen aktuellen Writer für die Datei. Wenn die Datei im Momentaufnahmemodus geöffnet wird, kann kein weiterer Geöffneter Vorgang ausgeführt werden, ohne STGM_NOSNAPSHOT anzugeben. Dieses Kennzeichen kann nur in einem Geöffneten Stammvorgang verwendet werden. Weitere Informationen zum NoSnapshot-Modus finden Sie im Abschnitt "Hinweise".
-
-
STGM_SIMPLE
-
-
0x08000000L
-
Bietet eine schnellere Implementierung einer zusammengesetzten Datei in einem begrenzten, aber häufig verwendeten Fall. Weitere Informationen finden Sie unter "Anmerkungen".
-
-
STGM_DIRECT_SWMR
-
-
0x00400000L
-
Unterstützt den direkten Modus für Single-Writer-, Multireader-Dateivorgänge. Weitere Informationen finden Sie unter "Anmerkungen".
-
-
STGM_DELETEONRELEASE
-
-
0x04000000L
-
Gibt an, dass die zugrunde liegende Datei automatisch zerstört werden soll, wenn das Stammspeicherobjekt freigegeben wird. Dieses Feature ist am nützlichsten zum Erstellen temporärer Dateien. Dieses Flag kann nur beim Erstellen eines Stammobjekts verwendet werden, z. B. mit StgCreateStorageEx. Es ist beim Öffnen eines Stammobjekts, z. B. mit StgOpenStorageEx, oder beim Erstellen oder Öffnen eines Unterelements, z. B. mit IStorage::CreateStream, ungültig. Es ist auch nicht gültig, dieses Flag und das STGM_CONVERT-Flag gleichzeitig zu verwenden.
-
Bemerkungen
Sie können diese Flags kombinieren, aber Sie können nur eine Kennzeichnung aus jeder Gruppe verwandter Flags auswählen. In der Regel muss für alle Funktionen und Methoden, die diese Konstanten verwenden, ein Kennzeichen aus jeder Zugriffs- und Freigabegruppe angegeben werden. Flags aus anderen Gruppen sind optional.
Transacted Mode
Wenn das STGM_DIRECTFlag angegeben wird, kann nur eine der folgenden Kombinationen von Flags aus den Zugriffs- und Freigabegruppen angegeben werden.
STGM_READ | STGM_SHARE_DENY_WRITE
STGM_READWRITE | STGM_SHARE_EXCLUSIVE
STGM_READ | STGM_PRIORITY
Beachten Sie, dass der direkte Modus durch das Fehlen von STGM_TRANSACTED impliziert wird. Das heißt, wenn weder STGM_DIRECT noch STGM_TRANSACTED angegeben wird, wird STGM_DIRECT angenommen.
Wenn das STGM_TRANSACTED-Flag angegeben wird, werden Objekte im Transaktionsmodus erstellt oder geöffnet. In diesem Modus werden Änderungen an einem Objekt erst beibehalten, wenn sie zugesichert wurden. Änderungen an einem Transaktionsspeicherobjekt werden beispielsweise erst beibehalten, wenn die IStorage::Commit-Methode aufgerufen wird. Änderungen an einem solchen Speicherobjekt gehen verloren, wenn das Speicherobjekt vor dem Aufruf der Commit-Methode freigegeben wird oder die IStorage::Revert-Methode aufgerufen wird.
Wenn ein Objekt im Transaktionsmodus erstellt oder geöffnet wird, muss die Implementierung sowohl die ursprünglichen Daten als auch Aktualisierungen für diese Daten beibehalten, sodass Aktualisierungen bei Bedarf wiederhergestellt werden können. Dies wird in der Regel ausgeführt, indem Änderungen an einem Entwurfsbereich geschrieben werden, bis sie zugesichert wurden, oder indem sie eine Kopie erstellen, die als Momentaufnahme bezeichnet wird, der zuletzt zugesicherten Daten.
Wenn ein Stammspeicherobjekt im Transaktionsmodus geöffnet wird, können die Position und das Verhalten der Scratch-Daten und die Momentaufnahmekopien gesteuert werden, um die Leistung mit den STGM_NOSCRATCH und STGM_NOSNAPSHOT Flags zu optimieren. (Ein Stammspeicherobjekt wird z. B. von der StgOpenStorageEx-Funktion abgerufen; ein Speicherobjekt, das aus der IStorage::OpenStorage-Methode abgerufen wird, ist ein Unterstorageobjekt.) In der Regel werden die Entwurfsdaten und Momentaufnahmen in temporären Dateien gespeichert, getrennt vom Speicher.
Die Auswirkung dieser Flags hängt von der Anzahl der Leser und/oder Autoren ab, die auf den Stammspeicher zugreifen.
Im Fall "Single Writer" wird ein Transaktionsmodusspeicherobjekt für den Schreibzugriff geöffnet, und es kann keinen anderen Zugriff auf die Datei geben. Das heißt, die Datei wird mit STGM_TRANSACTED, Zugriff auf STGM_WRITE oder STGM_READWRITE und freigabe von STGM_SHARE_EXCLUSIVE geöffnet. In diesem Fall werden Änderungen am Speicherobjekt in den Entwurfsbereich geschrieben. Wenn diese Änderungen übernommen werden, werden sie in den ursprünglichen Speicher kopiert. Wenn daher keine Änderungen am Speicherobjekt vorgenommen werden, gibt es keine unnötige Datenübertragung.
Im Fall "Multiple-Writer" wird ein Transacted Storage-Objekt für den Schreibzugriff geöffnet, aber so freigegeben, dass andere Autoren zugelassen werden. Das Speicherobjekt wird also mit STGM_TRANSACTED, Zugriff auf STGM_WRITE oder STGM_READWRITE und freigabe von STGM_SHARE_DENY_READ geöffnet. Wenn stattdessen die Freigabe von STGM_SHARE_DENY_NONE angegeben wird, lautet der Fall "multiple-writer, multiple-reader". In diesen Fällen wird während des Öffnens eine Momentaufnahme der ursprünglichen Daten erstellt. Selbst wenn an dem Speicher keine Änderungen vorgenommen werden und/oder es nicht tatsächlich von einem anderen Autor gleichzeitig geöffnet wird, ist die Datenübertragung während des Öffnens immer noch erforderlich. Daher kann die beste Open-Time-Leistung durch Öffnen des Speicherobjekts in STGM_SHARE_DENY_WRITE oder STGM_SHARE_EXCLUSIVE Modi abgerufen werden. Weitere Informationen dazu, wie Änderungen übernommen werden, wenn mehrere Autoren vorhanden sind, finden Sie unter "IStorage::Commit".
Im Fall "single-writer, multiple-reader" wird ein Transacted Storage-Objekt für schreibgeschützten Zugriff geöffnet, aber für Leser freigegeben. Das Speicherobjekt wird also vom Writer mit STGM_TRANSACTED, Zugriff auf STGM_READWRITE oder STGM_WRITE und der Freigabe von STGM_SHARE_DENY_WRITE geöffnet. Der Speicher wird von Lesern mit STGM_TRANSACTED, Zugriff auf STGM_READ und Freigabe von STGM_SHARE_DENY_NONE geöffnet. In diesem Fall verwendet der Writer den Entwurfsbereich, um nicht ausgelassene Änderungen zu speichern. Wie in den oben genannten Fällen verursacht der Leser während der Erstellung einer Momentaufnahmekopie der Daten eine Leistungseinbuße bei offenen Zeiten.
In der Regel ist der Entwurfsbereich eine temporäre Datei, die von den ursprünglichen Daten getrennt ist. Wenn Änderungen an der Originaldatei vorgenommen werden, müssen die Daten aus der temporären Datei übertragen werden. Um diese Datenübertragung zu vermeiden, kann das STGM_NOSCRATCHFlag angegeben werden. Wenn dieses Flag angegeben wird, werden Teile der Speicherobjektdatei anstelle einer separaten temporären Datei für den Entwurfsbereich verwendet. Daher können Commitänderungen schnell ausgeführt werden, da nur wenig Datenübertragung erforderlich ist. Der Nachteil besteht darin, dass die Speicherdatei größer werden kann, als dies andernfalls der Grund wäre, da sie sowohl für die ursprünglichen Daten als auch für den Entwurfsbereich groß genug sein muss. Um die Daten zu konsolidieren und diesen unnötigen Bereich zu entfernen, öffnen Sie den Stammspeicher im Transaktionsmodus erneut, ohne jedoch das STGM_NOSCRATCH Flag festzulegen. Rufen Sie dann "IStorage::Commit" auf, wobei das STGC_CONSOLIDATE Flag festgelegt ist.
Der Momentaufnahmebereich, wie der Entwurfsbereich, ist in der Regel auch eine temporäre Datei, und dies kann auch mit einem STGM-Flag beeinträchtigt werden. Durch Angeben des STGM_NOSNAPSHOT-Flags wird keine separate temporäre Momentaufnahmedatei erstellt. Stattdessen werden die ursprünglichen Daten nie geändert, auch wenn ein oder mehrere Autoren pro Objekt vorhanden sind. Wenn Änderungen übernommen werden, werden sie der Datei hinzugefügt, die ursprünglichen Daten bleiben jedoch erhalten. Dieser Modus erhöht die Effizienz, da dadurch die Laufzeit reduziert wird, indem die Anforderung zum Erstellen einer Momentaufnahme während des geöffneten Vorgangs eliminiert wird. Die Verwendung dieses Modus kann jedoch zu einer sehr großen Speicherdatei führen, da Daten in der Datei nie überschrieben werden können. Dies ist keine Beschränkung auf die Größe von Dateien, die im NoSnapshot-Modus geöffnet wurden.
Direct Single Writer, Multiple-Reader Modus
Wie beschrieben, ist es möglich, einen einzelnen Writer und mehrere Leser eines Speicherobjekts zu verwenden, wenn dieses Objekt im Transaktionsmodus geöffnet wird. Es ist auch möglich, den Single-Writer-, Multireader-Fall im direkten Modus zu erreichen, indem das STGM_DIRECT_SWMR Flag angegeben wird.
Im STGM_DIRECT_SWMR Modus ist es möglich, dass ein Aufrufer ein Objekt für Lese-/Schreibzugriff öffnet, während andere Aufrufer gleichzeitig die Datei für schreibgeschützten Zugriff geöffnet haben. Es ist ungültig, dieses Kennzeichen in Kombination mit der STGM_TRANSACTED-Kennzeichnung zu verwenden. In diesem Modus öffnet der Writer das Objekt mit den folgenden Flags:
| STGM_DIRECT_SWMR | STGM_READWRITESTGM_SHARE_DENYWRITE
und jeder Leser öffnet das Objekt mit den folgenden Flags:
| STGM_DIRECT_SWMR | STGM_READSTGM_SHARE_DENY_NONE
In diesem Modus muss der Writer exklusiven Zugriff auf das Objekt erhalten, um das Speicherobjekt zu ändern. Dies ist möglich, wenn alle Leser sie geschlossen haben. Der Writer verwendet die IDirectWriterLock-Schnittstelle , um diesen exklusiven Zugriff zu erhalten.
Einfacher Modus
Der einfache Modus (STGM_SIMPLE) ist nützlich für Anwendungen, die vollständige Speichervorgänge ausführen. Es ist effizient, hat aber die folgenden Einschränkungen:
- Für Unterspeicher ist keine Unterstützung vorhanden.
- Das Speicherobjekt und die daraus abgerufenen Streamobjekte können nicht gemarstet werden.
- Jeder Datenstrom hat eine Mindestgröße. Wenn weniger als die Mindestbytes in einen Datenstrom geschrieben werden, wenn der Datenstrom freigegeben wird, wird der Datenstrom auf die Mindestgröße erweitert. Die Mindestgröße für eine bestimmte IStream-Implementierung beträgt beispielsweise 4 KB. Ein Datenstrom wird erstellt und 1 KB in ihn geschrieben. Bei der endgültigen Version dieses IStreams wird die Datenstromgröße automatisch auf 4 KB erweitert. Anschließend wird beim Öffnen des Datenstroms und aufrufen der IStream::Stat-Methode eine Größe von 4 KB angezeigt.
- Nicht alle Methoden von IStorage oder IStream werden von der Implementierung unterstützt. Weitere Informationen finden Sie unter "IStorage - Compound File Implementation" und "IStream – Compound File Implementation".
Marshaling ist der Prozess des Verpackens, Entpackens und Sendens von Schnittstellenmethodenparametern über Thread- oder Prozessgrenzen innerhalb eines Remoteprozeduraufrufs (REMOTE Procedure Call, RPC). Weitere Informationen finden Sie unter Marshaling Details und Interface Marshaling.
Wenn ein Speicherobjekt durch einen Create-Vorgang im einfachen Modus abgerufen wird:
- Streamelemente können erstellt, aber nicht geöffnet werden.
- Wenn ein Streamelement durch Aufrufen von IStorage::CreateStream erstellt wird, ist es nicht möglich, einen anderen Datenstrom zu erstellen, bis dieses Streamobjekt freigegeben wird.
- Rufen Sie nach dem Schreiben aller Datenströme IStorage::Commit auf, um die Änderungen zu leeren.
Wenn ein Speicherobjekt durch einen Open-Vorgang im einfachen Modus abgerufen wird:
- Es ist möglich, jeweils nur ein Datenstromelement zu öffnen.
- Es ist nicht möglich, die Größe eines Datenstroms durch Aufrufen der IStream::SetSize-Methode oder durch Suchen oder Schreiben über das Ende des Datenstroms hinaus zu ändern. Da jedoch alle Datenströme eine Mindestgröße aufweisen, ist es möglich, den Datenstrom bis zu dieser Größe zu verwenden, auch wenn weniger Daten ursprünglich in diese Daten geschrieben wurden. Verwenden Sie die IStream::Stat-Methode , um die Größe eines Datenstroms zu ermitteln.
Beachten Sie, dass es nicht möglich ist, dieses Speicherelement im einfachen Modus zu öffnen, wenn ein Speicherelement von einem Speicherobjekt geändert wird, das sich nicht im einfachen Modus befindet.
Anforderungen
Anforderung | Wert |
---|---|
Mindest unterstützter Client |
Windows 2000 Professional [nur Desktop-Apps] |
Unterstützter Server (Mindestversion) |
Windows 2000 Server [nur Desktop-Apps] |
Kopfzeile |
|