Freigeben über


Strukturierte Speicherschnittstellen

Strukturierte Speicherdienste sind in drei Kategorien von Schnittstellenorganisiert. Jeder Satz stellt eine aufeinander folgende Ebene der Dereferenzierung oder Abstraktion zwischen einer zusammengesetzten Datei, den darin enthaltenen Objekten und den physischen Medien dar, in denen diese einzelnen Komponenten gespeichert werden.

Die erste Kategorie von Schnittstellen besteht aus IStorage, IStream-und IRootStorage. Die ersten beiden Schnittstellen definieren, wie Objekte in einer zusammengesetzten Datei gespeichert werden. Diese Schnittstellen bieten Methoden zum Öffnen von Speicherelementen, commiten und Wiederherstellen von Änderungen, Kopieren und Verschieben von Elementen sowie Lesen und Schreiben von Datenströmen. Diese Schnittstellen erkennen die systemeigenen Datenformate der einzelnen Objekte nicht und weisen daher keine Methoden zum Speichern dieser Objekte im persistenten Speicher auf. Die IRootStorage Schnittstelle verfügt über eine einzelne Methode zum Zuordnen eines verbunddokuments mit einem zugrunde liegenden Dateisystemnamen. Clients müssen diese Schnittstellen für ihre Verbunddateien implementieren.

Die zweite Kategorie von Schnittstellen besteht aus den IPersist Schnittstellen, die Objekte implementieren, um ihre persistenten Daten zu verwalten. Diese Schnittstellen bieten Methoden zum Lesen der Datenformate einzelner Objekte und wissen daher, wie sie gespeichert werden. Objekte sind für die Implementierung dieser Schnittstellen verantwortlich, da Clients die systemeigenen Datenformate ihrer geschachtelten Objekte nicht kennen. Diese Schnittstellen kennen jedoch keine spezifischen physischen Speichermedien.

Eine dritte Kategorie besteht aus einer einzigen Schnittstelle, ILockBytes, die Methoden zum Schreiben von Dateien in bestimmte physische Medien bereitstellt, z. B. eine Festplatte oder ein Bandlaufwerk. Die meisten Anwendungen implementieren jedoch nicht die ILockBytes Schnittstelle, da COM bereits Implementierungen für die beiden häufigsten Situationen bereitstellt, die dateibasierte Implementierung und speicherbasierte Implementierung sind. Das zusammengesetzte Dateispeicherobjekt ruft die ILockBytes- Methoden auf, die Sie nicht direkt in der Implementierung aufrufen.

Grenzwerte für zusammengesetzte Dateiimplementierung

Die COM-Implementierung der Strukturierten Speicherarchitektur wird zusammengesetzten Dateiengenannt. Speicherobjekte, wie in Verbunddateien implementiert, umfassen eine Implementierung der IPropertyStorage- und IPropertySetStorage Schnittstellen.

Zeiger auf die zusammengesetzte Dateiimplementierung dieser Schnittstellen werden durch Aufrufen der StgCreateStorageEx--Funktion zum Erstellen eines neuen verbunddateiobjekts oder StgOpenStorageEx zum Öffnen einer zuvor erstellten Verbunddatei abgerufen.

Eine alternative Methode zum Abrufen eines Zeigers auf die zusammengesetzte Dateiimplementierung dieser Schnittstellen ist das Aufrufen der älteren und eingeschränkteren StgCreateDocfile- oder StgOpenStorage--Funktion. Alle vier Funktionen werden als zusammengesetzte Dateiimplementierungen behandelt.

Die Verbunddateiimplementierung kann so konfiguriert werden, dass 512- oder 4096-Byte-Sektoren verwendet werden, wie in der STGOPTIONS--Struktur definiert.

Die Zusammengesetzte Dateiimplementierung zusammengesetzter Dateien unterliegt den folgenden Implementierungseinschränkungen.

Grenze Zusammengesetzte Datei
Dateigrößenbeschränkungen: 512: 2 Gigabyte (GB) 4096: Bis zu Dateisystembeschränkungen
Maximale Heapgröße für geöffnete Elemente erforderlich: 512: 4 Megabyte (MB) 4096: Bis zu den Grenzwerten für virtuelle Arbeitsspeicher
Gleichzeitiger Stamm wird geöffnet (öffnet die gleiche Datei): Wenn STGM_READ und STGM_SHARE_DENY_WRITE angegeben werden, werden Grenzwerte durch die Dateisystemgrenzwerte bestimmt. Andernfalls gibt es einen Grenzwert von 20 gleichzeitigen Stamm-Öffnen derselben Datei.
Anzahl der Elemente in einer Datei: 512: Unbegrenzt, aber die Leistung kann beeinträchtigt werden, wenn Elemente in den Tausendern 4096: Unbegrenzt

Aufgrund der 4-MB-Heap-Größenbeschränkung ist die Anzahl der offenen Elemente im Transacted-Modus in der Regel auf mehrere tausend Elemente beschränkt.