Implementação de arquivo IPropertySetStorage-Compound
A implementação do objeto de armazenamento de arquivos compostos COM inclui uma implementação de IPropertyStorage, a interface que gerencia um único conjunto de propriedades persistentes e IPropertySetStorage, a interface que gerencia grupos de conjuntos de propriedades persistentes.
Para obter um ponteiro para a implementação de arquivo composto de IPropertySetStorage, especifique o nome definido pelo cabeçalho para o identificador IID_IStorage como o parâmetro riid ou use as funções StgCreateStorageEx ou StgOpenStorageEx . Em ambos os casos, especifique STGFMT_STORAGE como o parâmetro stgfmt . (STGFMT_ANY pode ser especificado no caso de StgOpenStorageEx.) Além disso, especifique o nome definido pelo cabeçalho para o IID (identificador de interface) IID_IPropertySetStorage como o parâmetro riid . Ambas as funções fornecem um ponteiro para a interface IPropertySetStorage do objeto.
Outra maneira de obter um ponteiro para a implementação do arquivo composto é especificar o nome definido pelo cabeçalho para o identificador IID_IStorage como o parâmetro riid ou usar as funções StgCreateDocfile ou StgOpenStorage . Isso fornecerá um ponteiro para a interface IStorage do objeto. Quando quiser lidar com conjuntos de propriedades persistentes, chame IStorage::QueryInterface para a interface IPropertySetStorage .
Quando usar IPropertySetStorage
Chame os métodos de IPropertySetStorage para criar, abrir ou excluir conjuntos de propriedades no armazenamento atual do conjunto de propriedades de arquivos compostos. Há também um método , IPropertySetStorage::Enum, que fornece um ponteiro para um enumerador que pode ser usado para enumerar os conjuntos de propriedades no armazenamento.
Métodos
Cria um novo conjunto de propriedades no armazenamento de arquivos compostos atual e, no retorno, fornece um ponteiro de interface para a implementação de arquivo composto IPropertyStorage . Nessa implementação, os conjuntos de propriedades só poderão ser transacionados se PROPSETFLAG_NONSIMPLE for especificado. Esse método exige que o modo de compartilhamento especificado no parâmetro grfMode seja STGM_SHARE_EXCLUSIVE e que o modo de acesso seja STGM_READ ou STGM_READWRITE (não há suporte para o modo STGM_WRITE).
Abre um conjunto de propriedades existente no armazenamento de propriedades atual. No retorno, ele fornece um ponteiro de interface para a implementação de arquivo composto de IPropertyStorage. Esse método exige que o modo de compartilhamento especificado no parâmetro grfMode seja STGM_SHARE_EXCLUSIVE e que o modo de acesso seja STGM_READ ou STGM_READWRITE (não há suporte para STGM_WRITE).
Exclui um conjunto de propriedades neste armazenamento de propriedades.
Cria um objeto usado para enumerar estruturas STATPROPSETSTG . Cada estrutura STATPROPSETSTG fornece dados sobre um único conjunto de propriedades.
Comentários
A partir do Windows 2000, a implementação de arquivo composto de IPropertySetStorage dá suporte ao modo simples. O modo simples é indicado especificando o sinalizador STGM_SIMPLE para as funções StgCreateStorageEx e StgOpenStorageEx . Se o arquivo composto for aberto no modo simples, a implementação IPropertySetStorage associada será limitada da seguinte maneira:
- Somente conjuntos de propriedades simples podem ser criados. Ou seja, especificar o valor PROPSETFLAG_NONSIMPLE no parâmetro grfFlags para o método IPropertySetStorage::Create resulta em um erro.
- Depois de criar um arquivo composto com StgCreateStorageEx usando STGM_SIMPLE e consulta para a interface IPropertySetStorage , você só pode chamar IPropertySetStorage::Create uma vez. Em seguida, você deve liberar a interface IPropertyStorage antes de chamar o método Create novamente. Para obter mais informações sobre o modo simples, consulte Constantes STGM.
- Você não pode usar o método IPropertySetStorage::Open para abrir um conjunto de propriedades depois de usar StgCreateStorageEx para criar o objeto de armazenamento. Em vez disso, você deve usar StgOpenStorageEx antes de consultar IPropertySetStorage e chamar o método Open .
- Depois de abrir um arquivo composto com StgOpenStorageEx usando o sinalizador STGM_SIMPLE e a consulta para a interface IPropertySetStorage , você pode abrir uma propriedade definida por vez usando IPropertySetStorage::Open. Além disso, pode não ser possível que o tamanho total do conjunto de propriedades seja aumentado enquanto o conjunto de propriedades estiver aberto.
Conjuntos de propriedades simples não podem ser transacionados. Não é possível especificar STGM_TRANSACTED no parâmetro grfmode dos métodos Create e Open , a menos que você também especifique PROPSETFLAG_NONSIMPLE no parâmetro grfFlags . Lembre-se de que conjuntos de propriedades simples e não simples não estão relacionados aos conjuntos de propriedades de modo simples descritos acima. Para obter mais informações sobre conjuntos de propriedades simples e não simples, consulte Objetos de Armazenamento e Stream para um Conjunto de Propriedades.
Observação
Os conjuntos de propriedades DocumentSummaryInformation e UserDefined são exclusivos, pois podem ter duas seções de conjunto de propriedades. Para obter mais informações, consulte Os conjuntos de propriedades DocumentSummaryInformation e UserDefined.
Tópicos relacionados