Estrutura StorageLayout (objidl.h)

A estrutura StorageLayout descreve um único bloco de dados, incluindo seu nome, local e comprimento. Para otimizar um arquivo composto, um aplicativo ou uma ferramenta de layout passa uma matriz de estruturas StorageLayout em uma chamada para ILayoutStorage::LayoutScript.

Sintaxe

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

Membros

LayoutType

O tipo de elemento a ser gravado. Os valores são obtidos da enumeração STGTY . STGTY_STREAM significa ler o bloco de dados nomeado por pwcsElementName. STGTY_STORAGE significa abrir o armazenamento especificado em pwcsElementName. STGTY_REPEAT é usado em aplicativos multimídia para interface de áudio, vídeo, texto e outros elementos. Um valor de abertura STGTY_REPEAT significa que os elementos a seguir devem ser repetidos um número especificado de vezes. O valor de STGTY_REPEAT de fechamento marca o final desses elementos que devem ser repetidos. Pares de valores STGTY_REPEAT aninhados são permitidos.

pwcsElementName

O nome da cadeia de caracteres Unicode terminada em nulo do armazenamento ou fluxo. Se o elemento for um objeto substorage ou inserido, o caminho de armazenamento totalmente qualificado deverá ser especificado; por exemplo, "RootStorageName\SubStorageName\Substream".

cOffset

Quando o valor do membro LayoutType é STGTY_STREAM, esse sinalizador especifica o deslocamento inicial para o vapor nomeado no membro pwscElementName .

Quando LayoutType é STGTY_STORAGE, esse sinalizador deve ser definido como zero.

Quando LayoutType é STGTY_REPEAT, esse sinalizador deve ser definido como zero.

cBytes

Comprimento, em bytes, do bloco de dados nomeado em pwcsElementName.

Quando LayoutType é STGTY_STREAM, cBytes especifica o número de bytes a serem lidos em cOffset do fluxo nomeado em pwcsElementName.

Quando LayoutType é STGTY_STORAGE, esse sinalizador é ignorado.

Quando LayoutType é STGTY_REPEAT, um cBytes positivo especifica o início de um bloco de repetição. STGTY_REPEAT com zero cBytes marca o final de um bloco de repetição.

Um valor de bloco inicial de STG_TOEND especifica que os elementos em um bloco a seguir devem ser repetidos depois que cada fluxo tiver sido completamente lido.

Comentários

Uma matriz de estruturas StorageLayout pode aparecer da seguinte maneira.

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}}
};
Nota Os parâmetros cOffset e cBytes são LARGE_INTEGER estruturas, usadas para representar um valor inteiro com sinal de 64 bits como uma união de dois membros de 32 bits. Os dois membros de 32 bits devem ser representados como uma estrutura LARGE_INTEGER com DWORD LowPart e LONG HighPart como os membros da estrutura. (LowPart especifica os 32 bits de ordem inferior e HighPart especifica os 32 bits de ordem alta.) Se o compilador tiver suporte interno para inteiros de 64 bits, use o membro QuadPart da estrutura LARGE_INTEGER para armazenar o inteiro de 64 bits.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Cabeçalho objidl.h

Confira também

ILayoutStorage::LayoutScript