Función SHCreateMemStream (shlwapi.h)

Crea una secuencia de memoria mediante un proceso similar a CreateStreamOnHGlobal.

Sintaxis

IStream * SHCreateMemStream(
  [in, optional] const BYTE *pInit,
  [in]           UINT       cbInit
);

Parámetros

[in, optional] pInit

Tipo: const BYTE*

Puntero a un búfer de tamaño cbInit. El contenido de este búfer se usa para establecer el contenido inicial de la secuencia de memoria. Si este parámetro es NULL, la secuencia de memoria devuelta no tiene contenido inicial.

[in] cbInit

Tipo: UINT

Número de bytes del búfer al que apunta pInit. Si pInit se establece en NULL, cbInit debe ser cero.

Valor devuelto

Tipo: IStream*

Si se ejecuta correctamente, devuelve un puntero al flujo de memoria creado. Devuelve NULL si no se pudo asignar el objeto de secuencia.

Comentarios

Antes de Windows Vista, esta función no se incluía en el archivo público Shlwapi.h, ni se exportó por nombre desde Shlwapi.dll. Para usarlo en sistemas anteriores, debe llamarlo directamente desde el archivo Shlwapi.dll como ordinal 12.

Esta función crea un flujo de memoria. Se trata de una implementación de la interfaz IStream que almacena su contenido en memoria. SHCreateMemStream difiere de CreateStreamOnHGlobal de las siguientes maneras.

  • Seguridad de subprocesos. La secuencia creada por SHCreateMemStream es segura para subprocesos a partir de Windows 8. En sistemas anteriores, la secuencia no es segura para subprocesos. La secuencia creada por CreateStreamOnHGlobal es segura para subprocesos.
  • Contenido inicial. SHCreateMemStream acepta el contenido inicial en forma de búfer. CreateStreamOnHGlobal acepta el contenido inicial en forma de HGLOBAL.
  • Acceso al contenido. SHCreateMemStream no permite el acceso directo al contenido de la secuencia. CreateStreamOnHGlobal permite el acceso a través de GetHGlobalFromStream.
  • Información de error. Si SHCreateMemStream devuelve NULL, no pudo asignar la memoria necesaria. Los autores de llamadas deben suponer que la causa es E_OUTOFMEMORY.
  • Compatibilidad con IStream::Clone. Antes de Windows 8, la secuencia creada por SHCreateMemStream no admite IStream::Clone. La secuencia creada por CreateStreamOnHGlobal sí. A partir de Windows 8, la secuencia creada por SHCreateMemStream admite IStream::Clone.
  • La secuencia devuelta por SHCreateMemStream devuelve S_FALSE de IStream::Read si intenta leer más allá del final del búfer. La secuencia devuelta por CreateStreamOnHGlobal devuelve S_OK y establece *pcbRead en 0 si intenta leer más allá del final del búfer.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional, Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server, Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shlwapi.h
Library Shlwapi.lib
Archivo DLL Shlwapi.dll (versión 5.0 o posterior)