Udostępnij za pośrednictwem


Interfejsy magazynu strukturalnego

Usługi Structured Storage są zorganizowane w trzy kategorie interfejsów . Każdy zestaw reprezentuje kolejny poziom pośredni lub abstrakcji między plikiem złożonym, obiektami, które zawiera, oraz nośnikiem fizycznym, w którym są przechowywane te poszczególne składniki.

Pierwsza kategoria interfejsów składa się z IStorage, IStreami IRootStorage. Pierwsze dwa interfejsy definiują sposób przechowywania obiektów w pliku złożonym. Te interfejsy zapewniają metody otwierania elementów magazynu, zatwierdzania i przywracania zmian, kopiowania i przenoszenia elementów oraz odczytywania i zapisywania strumieni. Te interfejsy nie rozpoznają natywnych formatów danych poszczególnych obiektów i dlatego nie mają metod zapisywania tych obiektów w magazynie trwałym. Interfejs IRootStorage ma jedną metodę kojarzenia dokumentu złożonego z podstawową nazwą systemu plików. Klienci muszą zaimplementować te interfejsy dla swoich plików złożonych.

Druga kategoria interfejsów składa się z interfejsów IPersist, które obiekty implementują zarządzanie ich trwałymi danymi. Te interfejsy udostępniają metody odczytywania formatów danych poszczególnych obiektów i dlatego wiedzą, jak je przechowywać. Obiekty są odpowiedzialne za implementację tych interfejsów, ponieważ klienci nie znają natywnych formatów danych ich zagnieżdżonych obiektów. Te interfejsy nie mają jednak wiedzy na temat konkretnych fizycznych nośników magazynu.

Trzecia kategoria składa się z jednego interfejsu, ILockBytes, który udostępnia metody zapisywania plików na określonych nośnikach fizycznych, takich jak dysk twardy lub stacja taśm. Jednak większość aplikacji nie implementuje interfejsu ILockBytes, ponieważ com udostępnia już implementacje dla dwóch najbardziej typowych sytuacji, które są implementacją opartą na plikach i implementacją opartą na pamięci. Obiekt magazynu plików złożonych wywołuje metody ILockBytes, które nie są wywoływane bezpośrednio w implementacji.

Limity implementacji plików złożonych

Implementacja modelu COM architektury usługi Structured Storage jest nazywana plikami złożonymi . Obiekty magazynu, jak zaimplementowano w plikach złożonych, obejmują implementację interfejsów IPropertyStorage i IPropertySetStorage.

Wskaźniki do implementacji plików złożonych tych interfejsów są uzyskiwane przez wywołanie funkcji StgCreateStorageEx w celu utworzenia nowego obiektu pliku złożonego lub StgOpenStorageEx, aby otworzyć wcześniej utworzony plik złożony.

Alternatywną metodą uzyskiwania wskaźnika do implementacji plików złożonych tych interfejsów jest wywołanie starszej i bardziej ograniczonej funkcji StgCreateDocfile lub StgOpenStorage. Wszystkie cztery funkcje są traktowane jako implementacje plików złożonych.

Implementację pliku złożonego można skonfigurować do używania sektorów bajtów 512 lub 4096, zgodnie z definicją w strukturze STGOPTIONS.

Implementacja złożonych plików złożonych podlega następującym ograniczeniom implementacji.

Ograniczać Plik złożony
Limity rozmiaru pliku: 512: 2 gigabajty (GB) 4096: do limitów systemu plików
Maksymalny rozmiar sterty wymagany dla otwartych elementów: 512: 4 megabajty (MB) 4096: maksymalnie limity pamięci wirtualnej
Zostanie otwarty współbieżny katalog główny (zostanie otwarty ten sam plik): Jeśli określono STGM_READ i STGM_SHARE_DENY_WRITE, limity są określane przez limity systemu plików. W przeciwnym razie istnieje limit 20 współbieżnych operacji otwarcia głównego tego samego pliku.
Liczba elementów w pliku: 512: Nieograniczona, ale wydajność może ulec pogorszeniu, jeśli elementy w tysiącach 4096: Nieograniczona

Ze względu na limit rozmiaru sterty 4 MB liczba otwartych elementów w trybie transakcji jest zwykle ograniczona do kilku tysięcy elementów.