Partilhar 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 no IPersist interfaces, 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, sabem como armazená-los. Os objetos são responsáveis pela implementação dessas interfaces porque os clientes não conhecem os formatos de dados nativos de seus objetos aninhados. Essas interfaces, no entanto, não têm conhecimento de mídia de armazenamento físico específico.

Uma terceira categoria consiste em uma única interface, ILockBytes, que fornece métodos para gravar arquivos em mídia física específica, como um 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 arquivo composto chama o ILockBytes métodos que você não os chama diretamente na implementação.

Limites de implementação de arquivos compostos

A implementação COM da arquitetura de armazenamento estruturado é chamada de arquivos compostos . Os objetos de armazenamento, conforme implementados em arquivos compostos, incluem uma implementação do IPropertyStorage e interfaces de IPropertySetStorage.

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 é chamando o mais antigo e limitado StgCreateDocfile ou função de StgOpenStorage. Todas as quatro funções são tratadas como implementações de arquivos compostos.

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

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

Limite Arquivo composto
Limites de tamanho do ficheiro: 512: 2 gigabytes (GB) 4096: Até limites do sistema de arquivos
Tamanho máximo de heap necessário para elementos abertos: 512: 4 megabytes (MB) 4096: Até limites de memória virtual
A raiz simultânea abre (abre do mesmo arquivo): Se STGM_READ e STGM_SHARE_DENY_WRITE forem especificados, os limites serão ditados 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 num ficheiro: 512: Ilimitado, mas o desempenho pode degradar-se se o número de elementos for de milhares 4096: Ilimitado

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