Compartir a través de


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.
Si ya existe un objeto de almacenamiento con el mismo nombre 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::OpenStorage