Implementación de archivos IPropertySetStorage-Compound
La implementación del objeto de almacenamiento de archivos compuestos COM incluye una implementación de IPropertyStorage, la interfaz que administra un único conjunto de propiedades persistentes e IPropertySetStorage, la interfaz que administra grupos de conjuntos de propiedades persistentes.
Para obtener un puntero a la implementación de archivo compuesto de IPropertySetStorage, especifique el nombre definido por el encabezado para el identificador IID_IStorage como parámetro riid o use las funciones StgCreateStorageEx o StgOpenStorageEx . En ambos casos, especifique STGFMT_STORAGE como parámetro stgfmt . (STGFMT_ANY se puede especificar alternativamente en el caso de StgOpenStorageEx). Además, especifique el nombre definido por el encabezado para el identificador de interfaz (IID) IID_IPropertySetStorage como parámetro riid . Ambas funciones proporcionan un puntero a la interfaz IPropertySetStorage del objeto.
Otra manera de obtener un puntero a la implementación del archivo compuesto es especificar el nombre definido por el encabezado para el identificador IID_IStorage como parámetro riid o usar las funciones StgCreateDocfile o StgOpenStorage . Esto proporcionará un puntero a la interfaz IStorage del objeto. Cuando quiera tratar con conjuntos de propiedades persistentes, llame a IStorage::QueryInterface para la interfaz IPropertySetStorage .
Cuándo usar IPropertySetStorage
Llame a los métodos de IPropertySetStorage para crear, abrir o eliminar conjuntos de propiedades en el almacenamiento actual de la propiedad compound-file. También hay un método, IPropertySetStorage::Enum, que proporciona un puntero a un enumerador que se puede usar para enumerar los conjuntos de propiedades en el almacenamiento.
Métodos
Crea una nueva propiedad establecida en el almacenamiento de archivos compuesto actual y, de vuelta, proporciona un puntero de interfaz a la implementación del archivo compuesto IPropertyStorage . En esta implementación, los conjuntos de propiedades solo se pueden realizar transacciones si se especifica PROPSETFLAG_NONSIMPLE. Este método requiere que el modo de uso compartido especificado en el parámetro grfMode sea STGM_SHARE_EXCLUSIVE y que el modo de acceso sea STGM_READ o STGM_READWRITE (no se admite el modo de STGM_WRITE).
Abre un conjunto de propiedades existente en el almacenamiento de propiedades actual. A cambio, proporciona un puntero de interfaz a la implementación de archivo compuesto de IPropertyStorage. Este método requiere que el modo de uso compartido especificado en el parámetro grfMode sea STGM_SHARE_EXCLUSIVE y que el modo de acceso sea STGM_READ o STGM_READWRITE (no se admite STGM_WRITE).
Elimina una propiedad establecida en este almacenamiento de propiedades.
Crea un objeto utilizado para enumerar estructuras STATPROPSETSTG . Cada estructura STATPROPSETSTG proporciona datos sobre un único conjunto de propiedades.
Comentarios
A partir de Windows 2000, la implementación de archivo compuesto de IPropertySetStorage admite el modo simple. El modo simple se indica especificando la marca STGM_SIMPLE para las funciones StgCreateStorageEx y StgOpenStorageEx . Si el archivo compuesto se abre en modo simple, la implementación de IPropertySetStorage asociada está limitada de la siguiente manera:
- Solo se pueden crear conjuntos de propiedades simples. Es decir, especificar el valor de PROPSETFLAG_NONSIMPLE en el parámetro grfFlags para el método IPropertySetStorage::Create produce un error.
- Después de crear un archivo compuesto con StgCreateStorageEx mediante STGM_SIMPLE y consultar la interfaz IPropertySetStorage , solo puede llamar a IPropertySetStorage::Create una vez. A continuación, debe liberar la interfaz IPropertyStorage antes de volver a llamar al método Create . Para obtener más información sobre el modo simple, vea Constantes STGM.
- No puede usar el método IPropertySetStorage::Open para abrir un conjunto de propiedades después de usar StgCreateStorageEx para crear el objeto de almacenamiento. En su lugar, debe usar StgOpenStorageEx antes de consultar IPropertySetStorage y llamar al método Open .
- Después de abrir un archivo compuesto con StgOpenStorageEx con la marca STGM_SIMPLE y consultar la interfaz IPropertySetStorage , puede abrir una propiedad establecida a la vez mediante IPropertySetStorage::Open. Además, es posible que no sea posible aumentar el tamaño total de la propiedad establecida mientras el conjunto de propiedades está abierto.
Los conjuntos de propiedades simples no se pueden realizar transacciones. No se puede especificar STGM_TRANSACTED en el parámetro grfmode de los métodos Create y Open a menos que también especifique PROPSETFLAG_NONSIMPLE en el parámetro grfFlags . Tenga en cuenta que los conjuntos de propiedades simples y no simples no están relacionados con los conjuntos de propiedades en modo simple descritos anteriormente. Para obtener más información sobre los conjuntos de propiedades simples y nomples, vea Objetos de almacenamiento y secuencia para un conjunto de propiedades.
Nota
Los conjuntos de propiedades DocumentSummaryInformation y UserDefined son únicos en que pueden tener dos secciones de conjunto de propiedades. Para obtener más información, vea Los conjuntos de propiedades DocumentSummaryInformation y UserDefined.
Temas relacionados