Share via


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

El método OpenStorage abre un objeto de almacenamiento existente con el nombre especificado en el modo de acceso especificado.

Sintaxis

HRESULT OpenStorage(
  [in]  const OLECHAR *pwcsName,
  [in]  IStorage      *pstgPriority,
  [in]  DWORD         grfMode,
  [in]  SNB           snbExclude,
  [in]  DWORD         reserved,
  [out] IStorage      **ppstg
);

Parámetros

[in] pwcsName

Un puntero a una cadena Unicode terminada en Null de carácter ancho que contiene el nombre del objeto de almacenamiento que se va a abrir. 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. Se omite si pstgPriority no es NULL.

[in] pstgPriority

Debe ser NULL. Un valor distinto de NULL devolverá STG_E_INVALIDPARAMETER.

[in] grfMode

Especifica el modo de acceso que se va a usar al abrir el objeto de almacenamiento. Para obtener descripciones de los valores posibles, vea Constantes STGM. Otros modos que elija deben por lo menos especificar STGM_SHARE_EXCLUSIVE al llamar a este método.

[in] snbExclude

Debe ser NULL. Un valor distinto de NULL devolverá STG_E_INVALIDPARAMETER.

[in] reserved

Reservado para uso futuro; debe ser cero.

[out] ppstg

Cuando se ejecuta correctamente, puntero a la ubicación de un puntero de IStorage al objeto de almacenamiento abierto. 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 abrió correctamente.
E_PENDING Solo almacenamiento asincrónico: la parte o todos los datos del almacenamiento no están disponibles actualmente.
STG_E_ACCESSDENIED No hay suficientes permisos para abrir el objeto de almacenamiento.
STG_E_FILENOTFOUND El objeto de almacenamiento con el nombre especificado no existe.
STG_E_INSUFFICIENTMEMORY No se abrió el objeto de almacenamiento 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 .
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. En modo directo, el nuevo almacenamiento se escribe inmediatamente en el disco. En el modo de transacción, el nuevo almacenamiento se escribe en un almacenamiento temporal en memoria y, posteriormente, se escribe en el disco cuando se confirma.

Comentarios

Si el parámetro pstgPriority es NULL, se omite. Si el parámetro pstgPriority no es NULL, es un puntero IStorage a una apertura anterior de un elemento del objeto de almacenamiento, normalmente uno que se abrió en modo de prioridad. El objeto de almacenamiento debe cerrarse y volver a abrirse según grfMode. Cuando se devuelve el método IStorage::OpenStorage , pstgPriority ya no es válido. Use el valor proporcionado en el parámetro ppstg .

Los objetos de almacenamiento se pueden abrir con STGM_DELETEONRELEASE, en cuyo caso el objeto se destruye cuando recibe su versión final. Esto es útil para crear objetos de almacenamiento temporales.

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::CreateStorage