Partager via


Structure StorageLayout (objidl.h)

La structure StorageLayout décrit un seul bloc de données, y compris son nom, son emplacement et sa longueur. Pour optimiser un fichier composé, une application ou un outil de disposition transmet un tableau de structures StorageLayout dans un appel à ILayoutStorage ::LayoutScript.

Syntaxe

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

Membres

LayoutType

Type d’élément à écrire. Les valeurs sont extraites de l’énumération STGTY . STGTY_STREAM signifie lire le bloc de données nommé par pwcsElementName. STGTY_STORAGE signifie ouvrir le stockage spécifié dans pwcsElementName. STGTY_REPEAT est utilisé dans les applications multimédias pour interfacer l’audio, la vidéo, le texte et d’autres éléments. Une valeur de STGTY_REPEAT ouvrante signifie que les éléments qui suivent doivent être répétés un nombre spécifié de fois. La valeur STGTY_REPEAT fermante marque la fin des éléments qui doivent être répétés. Les paires STGTY_REPEAT valeur imbriquées sont autorisées.

pwcsElementName

Nom de chaîne Unicode terminé par null du stockage ou du flux. Si l’élément est un sous-stockage ou un objet incorporé, le chemin de stockage complet doit être spécifié ; par exemple, « RootStorageName\SubStorageName\Substream ».

cOffset

Lorsque la valeur du membre LayoutType est STGTY_STREAM, cet indicateur spécifie le décalage de début dans la vapeur nommée dans le membre pwscElementName .

Lorsque LayoutType est STGTY_STORAGE, cet indicateur doit être défini sur zéro.

Lorsque LayoutType est STGTY_REPEAT, cet indicateur doit être défini sur zéro.

cBytes

Longueur, en octets, du bloc de données nommé dans pwcsElementName.

Lorsque LayoutType est STGTY_STREAM, cBytes spécifie le nombre d’octets à lire dans cOffset à partir du flux nommé dans pwcsElementName.

Lorsque LayoutType est STGTY_STORAGE, cet indicateur est ignoré.

Lorsque LayoutType est STGTY_REPEAT, un cBytes positif spécifie le début d’un bloc de répétition. STGTY_REPEAT avec zéro octets marque la fin d’un bloc de répétition.

Une valeur de bloc de début de STG_TOEND spécifie que les éléments d’un bloc suivant doivent être répétés une fois que chaque flux a été entièrement lu.

Remarques

Un tableau de structures StorageLayout peut apparaître comme suit.

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}}
};
Note Les paramètres cOffset et cBytes sont des structures LARGE_INTEGER , utilisées pour représenter une valeur entière signée 64 bits sous la forme d’une union de deux membres 32 bits. Les deux membres 32 bits doivent être représentés sous la forme d’une structure LARGE_INTEGER avec DWORD LowPart et LONG HighPart comme membres de la structure. (LowPart spécifie les 32 bits d’ordre inférieur et HighPart spécifie les 32 bits d’ordre élevé.) Si votre compilateur prend en charge les entiers 64 bits, utilisez le membre QuadPart de la structure LARGE_INTEGER pour stocker l’entier 64 bits.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
En-tête objidl.h

Voir aussi

ILayoutStorage ::LayoutScript