Método IStorage::CreateStorage (objidl.h)
El método CreateStorage crea y abre un nuevo objeto de almacenamiento anidado dentro de este objeto de almacenamiento con el nombre especificado en el modo de acceso especificado.
Sintaxis
HRESULT CreateStorage(
[in] const OLECHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD reserved1,
[in] DWORD reserved2,
[out] IStorage **ppstg
);
Parámetros
[in] pwcsName
Puntero a una cadena Unicode terminada en null de caracteres anchos que contiene el nombre del objeto de almacenamiento recién creado. El nombre se puede usar más adelante para volver a abrir el objeto de almacenamiento. El nombre no debe superar los 31 caracteres de longitud, no incluido 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
Valor que especifica el modo de acceso que se va a usar al abrir el objeto de almacenamiento recién creado. Para obtener más información y una descripción de los valores posibles, vea Constantes STGM.
[in] reserved1
Reservado para uso futuro; debe ser cero.
[in] reserved2
Reservado para uso futuro; debe ser cero.
[out] ppstg
Puntero, cuando se ejecuta correctamente, a la ubicación del puntero IStorage al objeto de almacenamiento recién creado. Este parámetro se establece en NULL si se produce un error.
Valor devuelto
Este método puede devolver uno de estos valores.
Código devuelto | Descripción | |
---|---|---|
S_OK | El objeto de almacenamiento 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 un objeto de almacenamiento. | |
STG_E_FILEALREADYEXISTS | El nombre especificado para el objeto de almacenamiento ya existe en el objeto de almacenamiento y el parámetro grfMode incluye la marca STGM_FAILIFTHERE. | |
STG_E_INSUFFICIENTMEMORY | El objeto de almacenamiento no se creó debido a una falta de memoria. | |
STG_E_INVALIDFLAG | El valor especificado para el parámetro grfMode< no es un valor constante STGM válido. | el valor especificado para el parámetro grfMode no es válido |
STG_E_INVALIDFUNCTION | No se admite la combinación especificada de marcas en el parámetro grfMode . | |
STG_E_INVALIDNAME | No es un valor válido para pwcsName. | |
STG_E_INVALIDPOINTER | El puntero especificado para el objeto de almacenamiento no era válido. | |
STG_E_INVALIDPARAMETER | Uno de los parámetros no era válido. | |
STG_E_REVERTED | El objeto de almacenamiento se ha invalidado mediante una operación de reversión encima de él en el árbol de transacciones. | |
STG_E_TOOMANYOPENFILES | El objeto de almacenamiento no se creó porque hay demasiados archivos abiertos. | |
STG_S_CONVERTED | La secuencia existente con el nombre especificado se reemplazó por un nuevo objeto de almacenamiento que contiene una única secuencia denominada CONTENTS. Se agregará el nuevo objeto de almacenamiento. |
Comentarios
Si ya existe un almacenamiento con el nombre especificado en el parámetro pwcsName dentro del objeto de almacenamiento primario y el parámetro grfMode incluye la marca STGM_CREATE, el almacenamiento existente se reemplaza por el nuevo. Si el parámetro grfMode incluye la marca STGM_CONVERT, el elemento existente se convierte en un objeto de secuencia denominado CONTENTS y se crea el nuevo objeto de almacenamiento que contiene el objeto contents stream. La destrucción del elemento antiguo y la creación del nuevo objeto de almacenamiento están sujetas al modo de transacción en el objeto de almacenamiento primario. Tenga en cuenta que no puede usar STGM_CONVERT si también usa STGM_CREATE.
La implementación del archivo compuesto proporcionado por COM del método IStorage::CreateStorage no admite el siguiente comportamiento:
- Marca de STGM_PRIORITY para almacenamientos que no son raíz.
- Abrir el mismo objeto de almacenamiento más de una vez desde el mismo almacenamiento primario. Se debe especificar la marca STGM_SHARE_EXCLUSIVE.
- Marca de STGM_DELETEONRELEASE. Si se especifica esta marca, la función devuelve STG_E_INVALIDFLAG.
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 |