Share via


StorageLayout-Struktur (objidl.h)

Die StorageLayout-Struktur beschreibt einen einzelnen Datenblock, einschließlich Name, Speicherort und Länge. Um eine Verbunddatei zu optimieren, übergibt eine Anwendung oder ein Layouttool ein Array von StorageLayout-Strukturen in einem Aufruf von ILayoutStorage::LayoutScript.

Syntax

typedef struct tagStorageLayout {
  DWORD         LayoutType;
  OLECHAR       *pwcsElementName;
  LARGE_INTEGER cOffset;
  LARGE_INTEGER cBytes;
} StorageLayout;

Member

LayoutType

Der Typ des zu schreibenden Elements. Werte werden aus der STGTY-Enumeration übernommen. STGTY_STREAM bedeutet, dass der Datenblock mit dem Namen pwcsElementName gelesen wird. STGTY_STORAGE bedeutet, dass der in pwcsElementName angegebene Speicher geöffnet wird. STGTY_REPEAT wird in Multimediaanwendungen verwendet, um Audio, Video, Text und andere Elemente zu integrieren. Ein öffnender STGTY_REPEAT Wert bedeutet, dass die folgenden Elemente mehrmals wiederholt werden. Der Wert für den schließenden STGTY_REPEAT markiert das Ende der Elemente, die wiederholt werden sollen. Geschachtelte STGTY_REPEAT Wertpaare sind zulässig.

pwcsElementName

Der Name der Unicode-Zeichenfolge, die mit NULL beendet wurde, des Speichers oder Streams. Wenn es sich bei dem Element um einen Unterspeicher oder ein eingebettetes Objekt handelt, muss der vollqualifizierte Speicherpfad angegeben werden. Beispiel: "RootStorageName\SubStorageName\Substream".

cOffset

Wenn der Wert des LayoutType-ElementsSTGTY_STREAM ist, gibt dieses Flag den Anfangsoffset in den Dampf an, der im pwscElementName-Element benannt ist.

Wenn LayoutTypeSTGTY_STORAGE ist, sollte dieses Flag auf 0 festgelegt werden.

Wenn LayoutTypeSTGTY_REPEAT ist, sollte dieses Flag auf 0 festgelegt werden.

cBytes

Länge des Datenblocks mit dem Namen in pwcsElementName in Byte.

Wenn LayoutTypeSTGTY_STREAM ist, gibt cBytes die Anzahl der Bytes an, die bei cOffset aus dem Stream mit dem Namen in pwcsElementName gelesen werden sollen.

Wenn LayoutTypeSTGTY_STORAGE ist, wird dieses Flag ignoriert.

Wenn LayoutTypeSTGTY_REPEAT ist, gibt ein positives cBytes den Anfang eines Wiederholungsblocks an. STGTY_REPEAT mit null CBytes markiert das Ende eines Wiederholungsblocks .

Der Anfangsblockwert STG_TOEND gibt an, dass Elemente in einem folgenden Block wiederholt werden sollen, nachdem jeder Stream vollständig gelesen wurde.

Hinweise

Ein Array von StorageLayout-Strukturen kann wie folgt angezeigt werden.

StorageLayout arrScript[]=
    // Read first 2k of "WordDocument" stream
    {STGTY_STREAM,L"WordDocument",{0,0},{0,2048}},
 
    //Test if "ObjectPool\88112233" storage exists
    {STGTY_STORAGE,L"ObjectPool\\88112233",{0,0},{0,0}},
 
    //Read 2k at offset 1048 of "WordDocument" stream
    {STGTY_STREAM,L"WordDocument",{0,10480},{0,2048}},
 
    //Interlace "Audio", "Video", and "Caption" streams
    {STGTY_REPEAT,NULL,0,STG_TOEND},
        {STGTY_STREAM,L"Audio", {0,0},{0,2048}},    // 2k of Audio
        {STGTY_STREAM,L"Video", {0,0},{0,65536}},   // 64k of Video
        {STGTY_STREAM,L"Caption", {0,0},{0,128}},   // 128b of text
    {STGTY_REPEAT,NULL, {0,0},{0,0}}
};
Hinweis Die Parameter cOffset und cBytes sind LARGE_INTEGER Strukturen, die verwendet werden, um einen 64-Bit-Ganzzahlwert mit Vorzeichen als Vereinigung von zwei 32-Bit-Elementen darzustellen. Die beiden 32-Bit-Member müssen als LARGE_INTEGER-Struktur mit DWORD LowPart und LONG HighPart als Strukturmember dargestellt werden. (LowPart gibt die 32 Bits mit niedriger Ordnung an, und HighPart gibt die 32 Bits mit hoher Reihenfolge an.) Wenn Ihr Compiler über integrierte Unterstützung für 64-Bit-Ganzzahlen verfügt, verwenden Sie den QuadPart-Member der LARGE_INTEGER-Struktur , um die 64-Bit-Ganzzahl zu speichern.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Kopfzeile objidl.h

Weitere Informationen

ILayoutStorage::LayoutScript