Método IOleCache::Cache (oleidl.h)

Especifica el formato y otros datos que se van a almacenar en caché dentro de un objeto incrustado.

Sintaxis

HRESULT Cache(
  [in]  FORMATETC *pformatetc,
  [in]  DWORD     advf,
  [out] DWORD     *pdwConnection
);

Parámetros

[in] pformatetc

Puntero a una estructura FORMATETC que especifica el formato y otros datos que se van a almacenar en caché. El almacenamiento en caché de vistas se especifica pasando un formato de Portapapeles cero en pformatetc.

[in] advf

Un grupo de marcas que controlan el almacenamiento en caché. Los valores posibles proceden de la enumeración ADVF . Cuando se usa en este contexto, para una memoria caché, estos valores tienen significados específicos, que se describen en Comentarios. Consulte la enumeración ADVF para obtener una descripción más detallada.

[out] pdwConnection

Puntero a una variable que recibe el identificador de esta conexión, que se puede usar más adelante para desactivar el almacenamiento en caché (pasandolo a IOleCache::Uncache). Si este valor es 0, no se estableció la conexión. La implementación proporcionada por OLE usa números distintos de cero para los identificadores de conexión.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
E_INVALIDARG
Los argumentos pformatetc o advf proporcionados no son válidos.
E_UNEXPECTED
Se produjo un error inesperado.
E_OUTOFMEMORY
Memoria insuficiente disponible para la operación.
CACHE_S_FORMATETC_NOTSUPPORTED
La memoria caché se creó, pero la aplicación de objeto no admite el formato especificado. La creación de caché se realiza correctamente aunque no se admita el formato, lo que permite al autor de la llamada rellenar la memoria caché. Sin embargo, si el autor de la llamada no necesita mantener la memoria caché, llame a IOleCache::Uncache.
CACHE_S_SAMECACHE
Ya existe una memoria caché para el FORMATETC pasado a IOleCache::Uncache. En este caso, las nuevas marcas de aviso se asignan a la memoria caché y se devuelve el identificador de conexión asignado anteriormente.
DV_E_LINDEX
Valor no válido para pformatetc-lindex>; actualmente solo se admite -1.
DV_E_TYMED
El valor no es válido para pformatetc-tymed>.
DV_E_DVASPECT
El valor no es válido para pformatetc-dwAspect>.
DV_E_CLIPFORMAT
El valor no es válido para pformatetc-cfFormat>.
CO_E_NOTINITIALIZED
El almacenamiento de la memoria caché no se inicializa.
DV_E_DVTARGETDEVICE
El valor no es válido para pformatetc-->-ptd.
OLE_E_STATIC
La memoria caché es para un objeto estático y ya tiene un nodo de memoria caché.

Comentarios

IOleCache::Cache puede especificar el almacenamiento en caché de datos o el almacenamiento en caché de vistas (presentación). Para especificar el almacenamiento en caché de datos, se debe pasar un formato de datos válido en pformatetc. Para el almacenamiento en caché de vistas, el propio objeto de caché decide el formato que se va a almacenar en caché, por lo que un llamador pasaría un formato de datos cero en pformatetc de la siguiente manera:

pFormatetc->cfFormat == 0

Un controlador de objetos personalizado puede elegir no almacenar datos en un formato determinado. En su lugar, puede sintetizarlo a petición cuando se solicite.

El valor advf especifica un miembro de la enumeración ADVF . Cuando se usa uno de estos valores (o una combinación OR de más de un valor) en este contexto, estos valores significan lo siguiente.

Valor de ADVF Descripción
ADVF_NODATA La memoria caché no se actualizará mediante los cambios realizados en el objeto en ejecución. En su lugar, el contenedor actualizará la memoria caché llamando explícitamente a IOleCache::SetData, IDataObject::SetData o IOleCache2::UpdateCache. Esta marca se usa normalmente cuando se almacena en caché el aspecto emblemático de un objeto.
ADVF_ONLYONCE Actualice la memoria caché solo una vez. Una vez completada la actualización, la conexión de asesoramiento entre el objeto y la memoria caché se desconecta. El objeto de origen de la conexión de asesoramiento llama al método Release .
ADVF_PRIMEFIRST El objeto no debe esperar a que los datos o la vista cambien antes de actualizar la memoria caché. OR'd con ADVF_ONLYONCE, este parámetro proporciona una llamada asincrónica IDataObject::GetData .
ADVFCACHE_NOHANDLER Sinónimo de ADVFCACHE_FORCEBUILTIN.
ADVFCACHE_FORCEBUILTIN Se usa en aplicaciones de objetos DLL y controladores de objetos que dibujan sus objetos para almacenar en caché los datos de presentación para asegurarse de que hay una presentación en la memoria caché. Esto garantiza que los datos se pueden recuperar incluso cuando el objeto o el código del controlador no están disponibles.
ADVFCACHE_ONSAVE Novedades la representación almacenada en caché solo cuando se guarda el objeto que contiene la memoria caché. La memoria caché también se actualiza cuando el objeto OLE cambia del estado en ejecución al estado cargado (porque una operación de guardado posterior requeriría volver a ejecutar el objeto).

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado oleidl.h

Consulte también

IOleCache

IOleCache::Uncache