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 .
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 |