IMAPISupport::IStorageFromStream
Hace referencia a: Outlook 2013 | Outlook 2016
Implementa un objeto de almacenamiento para acceder a una secuencia.
HRESULT IStorageFromStream(
LPUNKNOWN lpUnkIn,
LPCIID lpInterface,
ULONG ulFlags,
LPSTORAGE FAR * lppStorageOut
);
Parameters
lpUnkIn
[in] Puntero a un objeto de secuencia.
lpInterface
[in] Puntero al identificador de interfaz (IID) que representa la interfaz que se va a usar para acceder a la secuencia a la que apunta lpUnkIn. Cualquiera de los siguientes valores son válidos: IID_IStream, IID_ILockBytes o null, lo que indica que se debe usar la interfaz IStream para acceder a la secuencia.
ulFlags
[in] Máscara de bits de marcas que controla cómo se va a crear el objeto de almacenamiento en relación con el objeto stream. De forma predeterminada, el almacenamiento se crea con acceso de solo lectura y la secuencia comienza en la posición cero del almacenamiento. Se pueden establecer las siguientes marcas:
STGSTRM_CREATE
Se debe crear un nuevo objeto de almacenamiento para el objeto stream.
STGSTRM_CURRENT
El objeto de almacenamiento debe iniciarse en la posición actual de la secuencia.
STGSTRM_MODIFY
El autor de la llamada debe tener permiso de lectura y escritura para el objeto de almacenamiento devuelto.
STGSTRM_RESET
El objeto de almacenamiento debe comenzar en la posición cero.
lppStorageOut
[out] Puntero a un puntero al objeto de almacenamiento.
Valor devuelto
S_OK
El objeto de almacenamiento se creó correctamente.
Comentarios
El método IMAPISupport::IStorageFromStream se implementa para todos los objetos de soporte técnico del proveedor de servicios. Los proveedores de servicios llaman a IStorageFromStream para crear un objeto de almacenamiento que se usará para abrir propiedades concretas. Los proveedores de servicios que tienen su propia implementación de la interfaz IStorage no necesitan llamar a IStorageFromStream.
El objeto de almacenamiento creado por IStorageFromStream llama al método IUnknown::AddRef del flujo para incrementar su recuento de referencias y, a continuación, disminuye el recuento cuando se libera el almacenamiento.
Notas para los llamadores
Cuando se llama al método IMAPIProp::OpenProperty de uno de los objetos para abrir una propiedad con la interfaz IStorage , realice las tareas siguientes:
Abra un objeto stream con permiso de lectura y escritura para la propiedad .
Marque internamente el flujo de propiedades como un objeto de almacenamiento.
Llame a IStorageFromStream para generar un objeto de almacenamiento.
Devuelve un puntero a este objeto de almacenamiento.
Si implementa interfaces adicionales que usan el objeto de almacenamiento, cree un objeto que ajuste el objeto de almacenamiento e implemente un método IUnknown::QueryInterface de nivel superior.
No permita que se abra una propiedad con la interfaz IStream si se creó con IStorage. Por el contrario, no permita que se abra una propiedad con la interfaz IStorage si se creó con IStream.
Con una excepción, es aceptable usar la interfaz IStreamDocfile para transmitir un objeto de almacenamiento de un contenedor a otro, pero el identificador de interfaz IID_IStreamDocfile debe pasarse en el parámetro lpInterface del método OpenProperty.