Oggetti di archiviazione e flusso per un set di proprietà
Il programmatore specifica se un set di proprietà viene archiviato in un archivio o in un flusso quando viene creato il set di proprietà. Il valore di enumerazione PROPSETFLAG_NONSIMPLE passato nel parametro grfFlags al metodo IPropertySetStorage::Create indica questo valore. L'impostazione della posizione in cui viene archiviato il set di proprietà fornisce controlli applicazione appropriati per l'interoperabilità completa tramite l'interfaccia IPropertySetStorage con il set di proprietà COM.
Se il flag di PROPSETFLAG_NONSIMPLE è impostato, il set di proprietà viene archiviato in un oggetto di archiviazione e i valori delle proprietà nonsimple possono essere scritti in esso. I valori non disimple includono valori con varTYPE di VT_STORAGE, VT_STREAM, VT_STORED_OBJECT o VT_STREAMED_OBJECT. Per altre informazioni sui valori VARTYPE e su come usarli, vedere la struttura PROPVARIANT .
Se il flag di PROPSETFLAG_NONSIMPLE non è impostato, è possibile scrivere solo valori semplici nel set di proprietà.
Nell'oggetto di archiviazione di un set di proprietà nonsimple viene creato un flusso denominato Contents. Si tratta del flusso primario del set di proprietà e contiene tutti i valori di proprietà semplici. I valori delle proprietà nonsimple (flussi e archiviazioni) vengono archiviati nell'oggetto di archiviazione principale della proprietà impostata come sottostream e archivi. Vale a dire, questi valori nonsimple vengono archiviati come fratelli nel flusso Contenuto. Il nome dei flussi e delle risorse di archiviazione di pari livello è determinato dall'implementazione e archiviato nel flusso Content simile al modo in cui viene archiviata una semplice proprietà stringa.