Objetos de armazenamento e fluxo para um conjunto de propriedades
O programador especifica se um conjunto de propriedades é armazenado em um armazenamento ou em um fluxo quando o conjunto de propriedades é criado. O valor de enumeração PROPSETFLAG_NONSIMPLE, passado no parâmetro grfFlags para o método IPropertySetStorage::Create , indica isso. A configuração em que o conjunto de propriedades é armazenado fornece controles de aplicativo adequados para interoperar totalmente por meio da interface IPropertySetStorage com o conjunto de propriedades COM.
Se o sinalizador PROPSETFLAG_NONSIMPLE estiver definido, o conjunto de propriedades será armazenado em um objeto de armazenamento e os valores de propriedade não simplificados poderão ser gravados nele. Os valores não simplificados incluem valores com um VARTYPE de VT_STORAGE, VT_STREAM, VT_STORED_OBJECT ou VT_STREAMED_OBJECT. Para obter mais informações sobre valores VARTYPE e como usá-los, consulte a estrutura PROPVARIANT .
Se o sinalizador PROPSETFLAG_NONSIMPLE não estiver definido, somente valores simples poderão ser gravados no conjunto de propriedades.
No objeto de armazenamento de um conjunto de propriedades não simples, um fluxo é criado chamado Contents. Esse é o fluxo primário do conjunto de propriedades e contém todos os valores de propriedade simples. Os valores de propriedade não simplificados (fluxos e armazenamentos) são armazenados sob o objeto de armazenamento main da propriedade definida como substreams e armazenamentos. Ou seja, esses valores não simplificados são armazenados como irmãos para o fluxo conteúdo. O nome dos fluxos e armazenamentos irmãos é determinado pela implementação e armazenado no fluxo conteúdo semelhante à maneira como uma propriedade de cadeia de caracteres simples é armazenada.