Compartilhar via


Interfaces de armazenamento estruturadas

Os serviços de Armazenamento Estruturado são organizados em três categorias de interfaces . Cada conjunto representa um nível sucessivo de indireção ou abstração entre um arquivo composto, os objetos que ele contém e a mídia física na qual esses componentes individuais são armazenados.

A primeira categoria de interfaces consiste em IStorage, IStreame IRootStorage. As duas primeiras interfaces definem como os objetos são armazenados em um arquivo composto. Essas interfaces fornecem métodos para abrir elementos de armazenamento, confirmar e reverter alterações, copiar e mover elementos e ler e gravar fluxos. Essas interfaces não reconhecem os formatos de dados nativos dos objetos individuais e, portanto, não têm métodos para salvar esses objetos no armazenamento persistente. A interface IRootStorage tem um único método para associar um documento composto a um nome de sistema de arquivos subjacente. Os clientes devem implementar essas interfaces para seus arquivos compostos.

A segunda categoria de interfaces consiste nas interfaces IPersist, que os objetos implementam para gerenciar seus dados persistentes. Essas interfaces fornecem métodos para ler os formatos de dados de objetos individuais e, portanto, saber como armazená-los. Os objetos são responsáveis por implementar essas interfaces porque os clientes não conhecem os formatos de dados nativos de seus objetos aninhados. No entanto, essas interfaces não têm conhecimento de mídia de armazenamento física específica.

Uma terceira categoria consiste em uma única interface, ILockBytes, que fornece métodos para gravar arquivos em mídia física específica, como disco rígido ou unidade de fita. No entanto, a maioria dos aplicativos não implementará a interface de ILockBytes porque o COM já fornece implementações para as duas situações mais comuns, que são implementação baseada em arquivo e implementação baseada em memória. O objeto de armazenamento de arquivos composto chama o ILockBytes métodos que você não os chama diretamente na implementação.

Limites de implementação de arquivo composto

A implementação COM da arquitetura de Armazenamento Estruturado é chamada arquivos compostos. Os objetos de armazenamento, conforme implementado em arquivos compostos, incluem uma implementação das interfaces IPropertyStorage e IPropertySetStorage.

Os ponteiros para a implementação de arquivo composto dessas interfaces são adquiridos chamando a função StgCreateStorageEx para criar um novo objeto de arquivo composto ou StgOpenStorageEx para abrir um arquivo composto criado anteriormente.

Um método alternativo para adquirir um ponteiro para a implementação de arquivo composto dessas interfaces é chamar a funçãoStgCreateDocfilemais antiga e limitada oufunção stgOpenStorage. Todas as quatro funções são tratadas como implementações de arquivo composto.

A implementação de arquivo composto pode ser configurada para usar setores de bytes 512 ou 4096, conforme definido na estruturaSTGOPTIONS.

A implementação de arquivo composto de arquivos compostos está sujeita às seguintes restrições de implementação.

Limite Arquivo composto
Limites de tamanho do arquivo: 512: 2 gigabytes (GB) 4096: até os limites do sistema de arquivos
Tamanho máximo do heap necessário para elementos abertos: 512: 4 megabytes (MB) 4096: até limites de memória virtual
A raiz simultânea é aberta (abre do mesmo arquivo): Se STGM_READ e STGM_SHARE_DENY_WRITE forem especificados, os limites serão determinados pelos limites do sistema de arquivos. Caso contrário, há um limite de 20 aberturas de raiz simultâneas do mesmo arquivo.
Número de elementos em um arquivo: 512: Ilimitado, mas o desempenho pode degradar se o número de elementos em milhares 4096: Ilimitado

Devido ao limite de tamanho de heap de 4 MB, o número de elementos abertos no modo transacionado normalmente é limitado a vários milhares de elementos.