Dela via


Strukturerade lagringsgränssnitt

Strukturerade lagringstjänster är indelade i tre kategorier av gränssnitt. Varje uppsättning representerar en efterföljande nivå av indirekt eller abstraktion mellan en sammansatt fil, de objekt som den innehåller och det fysiska media där dessa enskilda komponenter lagras.

Den första kategorin av gränssnitt består av IStorage, IStreamoch IRootStorage. De två första gränssnitten definierar hur objekt lagras i en sammansatt fil. Dessa gränssnitt tillhandahåller metoder för att öppna lagringselement, checka in och återställa ändringar, kopiera och flytta element samt läsa och skriva strömmar. Dessa gränssnitt känner inte igen de enskilda objektens interna dataformat och har därför inga metoder för att spara dessa objekt i beständig lagring. Gränssnittet IRootStorage har en enda metod för att associera ett sammansatt dokument med ett underliggande filsystemnamn. Klienter måste implementera dessa gränssnitt för sina sammansatta filer.

Den andra kategorin av gränssnitt består av IPersist- gränssnitt, som objekt implementerar för att hantera beständiga data. Dessa gränssnitt tillhandahåller metoder för att läsa dataformaten för enskilda objekt och därför veta hur de ska lagras. Objekt ansvarar för att implementera dessa gränssnitt eftersom klienterna inte känner till de interna dataformaten för sina kapslade objekt. Dessa gränssnitt har dock ingen kunskap om specifika fysiska lagringsmedier.

En tredje kategori består av ett enda gränssnitt, ILockBytes, som tillhandahåller metoder för att skriva filer till specifika fysiska medier, till exempel en hårddisk eller bandenhet. De flesta program implementerar dock inte gränssnittet ILockBytes eftersom COM redan tillhandahåller implementeringar för de två vanligaste situationerna, som är filbaserad implementering och minnesbaserad implementering. Det sammansatta fillagringsobjektet anropar ILockBytes metoder som du inte anropar direkt i implementeringen.

Gränser för sammansatt filimplementering

COM-implementeringen av structured Storage-arkitekturen kallas sammansatta filer. Lagringsobjekt, som implementeras i sammansatta filer, innehåller en implementering av IPropertyStorage och IPropertySetStorage-gränssnitt.

Pekare till den sammansatta filimplementeringen av dessa gränssnitt hämtas genom att anropa funktionen StgCreateStorageEx för att skapa ett nytt sammansatt filobjekt eller StgOpenStorageEx för att öppna en tidigare skapad sammansatt fil.

En alternativ metod för att hämta en pekare till den sammansatta filimplementeringen av dessa gränssnitt är genom att anropa den äldre och mer begränsade funktionen StgCreateDocfile eller StgOpenStorage. Alla fyra funktionerna behandlas som sammansatta filimplementeringar.

Den sammansatta filimplementeringen kan konfigureras för att använda 512- eller 4096 bytesektorer enligt definitionen i STGOPTIONS- struktur.

Den sammansatta filimplementeringen av sammansatta filer omfattas av följande implementeringsbegränsningar.

Gräns Sammansatt fil
Filstorleksgränser: 512: 2 GIGABYTE (GB) 4096: Upp till filsystemgränser
Maximal heapstorlek som krävs för öppna element: 512: 4 MB (MB) 4 096: Upp till virtuella minnesgränser
Samtidig rot öppnas (öppnar samma fil): Om STGM_READ och STGM_SHARE_DENY_WRITE anges, styrs gränserna av filsystemgränserna. Annars finns det en gräns på 20 samtidiga rot öppnas av samma fil.
Antal element i en fil: 512: Obegränsat, men prestanda kan försämras om elementen numreras i tusentals 4096: Obegränsat

På grund av gränsen på 4 MB heapstorlek är antalet öppna element i transakterat läge vanligtvis begränsat till flera tusen element.