Método IStorage::CreateStream (objidl.h)

El método CreateStream crea y abre un objeto de secuencia con el nombre especificado incluido en este objeto de almacenamiento. Todos los elementos de un objeto de almacenamiento, tanto secuencias como otros objetos de almacenamiento, se mantienen en el mismo espacio de nombres.

Sintaxis

HRESULT CreateStream(
  [in]  const OLECHAR *pwcsName,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved1,
  [in]  DWORD         reserved2,
  [out] IStream       **ppstm
);

Parámetros

[in] pwcsName

Puntero a una cadena Unicode terminada en null de caracteres anchos que contiene el nombre de la secuencia recién creada. El nombre se puede usar más adelante para abrir o volver a abrir la secuencia. El nombre no debe superar los 31 caracteres de longitud, sin incluir el terminador de cadena. Los caracteres 000 a 01f, que actúan como el primer carácter del nombre de la secuencia/almacenamiento, se reservan para uso de OLE. Es una restricción de archivo compuesto, no una restricción de almacenamiento estructurado.

[in] grfMode

Especifica el modo de acceso que se va a usar al abrir la secuencia recién creada. Para obtener más información y descripciones de los valores posibles, vea StGM Constants.

[in] reserved1

Reservado para uso futuro; debe ser cero.

[in] reserved2

Reservado para uso futuro; debe ser cero.

[out] ppstm

A cambio, puntero a la ubicación del nuevo puntero de interfaz IStream . Esto solo es válido si la operación se realiza correctamente. Cuando se produce un error, este parámetro se establece en NULL.

Valor devuelto

Este método puede devolver uno de estos valores.

Código devuelto Descripción
S_OK La nueva secuencia se creó correctamente.
E_PENDING Solo almacenamiento asincrónico: parte o todos los datos necesarios no están disponibles actualmente.
STG_E_ACCESSDENIED No hay suficientes permisos para crear el flujo.
STG_E_FILEALREADYEXISTS El nombre especificado para la secuencia ya existe en el objeto de almacenamiento y el parámetro grfMode incluye el valor STGM_FAILIFTHERE.
STG_E_INSUFFICIENTMEMORY La secuencia no se creó debido a una falta de memoria.
STG_E_INVALIDFLAG El valor especificado para el parámetro grfMode no es un valor de constantes STGM válido.
STG_E_INVALIDFUNCTION No se admite la combinación especificada de marcas en el parámetro grfMode ; Por ejemplo, cuando se llama a este método sin la marca STGM_SHARE_EXCLUSIVE.
STG_E_INVALIDNAME Valor no válido para pwcsName.
STG_E_INVALIDPOINTER El puntero especificado para el objeto de secuencia no era válido.
STG_E_INVALIDPARAMETER Uno de los parámetros no era válido.
STG_E_REVERTED Una operación de reversión por encima de él ha invalidado el objeto de almacenamiento en el árbol de transacciones.
STG_E_TOOMANYOPENFILES La secuencia no se creó porque hay demasiados archivos abiertos.

Comentarios

Si ya existe una secuencia con el nombre especificado en el parámetro pwcsName y el parámetro grfMode incluye la marca STGM_CREATE, la secuencia existente se reemplaza por una recién creada. Tanto la destrucción de la secuencia antigua como la creación del nuevo objeto de secuencia están sujetas al modo de transacción en el objeto de almacenamiento primario.

La implementación del archivo compuesto proporcionado por COM del método IStorage::CreateStream no admite los comportamientos siguientes:

  • No se admite la marca STGM_DELETEONRELEASE.
  • No se admite el modo de transacción (STGM_TRANSACTED) para los objetos de secuencia.
  • No se admite la apertura de la misma secuencia más de una vez desde el mismo almacenamiento. La marca STGM_SHARE_EXCLUSIVE modo de uso compartido debe especificarse en el parámetro grfMode .
Si la secuencia ya existe y grfMode se establece en STGM_FAILIFTHERE, este método produce un error con el valor devuelto STG_E_FILEALREADYEXISTS.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objidl.h
Library Uuid.lib
Archivo DLL Ole32.dll

Consulte también

IStorage: implementación de archivos compuestos

IStorage::OpenStream

Istream