Compartir a través de


Enumeración ADVF (objidl.h)

Marcas que controlan el almacenamiento en caché y la notificación de cambios en los datos.

Syntax

typedef enum tagADVF {
  ADVF_NODATA = 1,
  ADVF_PRIMEFIRST = 2,
  ADVF_ONLYONCE = 4,
  ADVF_DATAONSTOP = 64,
  ADVFCACHE_NOHANDLER = 8,
  ADVFCACHE_FORCEBUILTIN = 16,
  ADVFCACHE_ONSAVE = 32
} ADVF;

Constantes

 
ADVF_NODATA
Valor: 1
Para las conexiones de aviso de datos (IDataObject::D Advise o IDataAdviseHolder::Advise), esta marca solicita al objeto de datos que no envíe datos cuando llama a IAdviseSink::OnDataChange. El destinatario de la notificación de cambio puede solicitar más adelante los datos llamando a IDataObject::GetData. El objeto de datos puede respetar la solicitud pasando TYMED_NULL en el parámetro STGMEDIUM o puede proporcionar los datos de todos modos. Por ejemplo, el objeto de datos podría tener varias conexiones de asesoramiento, no todas las cuales especificaron ADVF_NODATA, en cuyo caso el objeto podría enviar la misma notificación a todas las conexiones. Independientemente de la solicitud del contenedor, su implementación de IAdviseSink debe comprobar el parámetro STGMEDIUM porque es responsable de liberar el medio si no es TYMED_NULL.

En el caso de las conexiones de caché (IOleCache::Cache), esta marca solicita que los cambios realizados en el objeto en ejecución no actualicen la memoria caché. En su lugar, el contenedor actualizará la memoria caché llamando explícitamente a IOleCache::SetData. Esta situación suele producirse cuando se almacena en caché el aspecto emblemático de un objeto.

ADVF_NODATA no es una marca válida para las conexiones de asesoramiento de vista (IViewObject::SetAdvise) y devuelve E_INVALIDARG.
ADVF_PRIMEFIRST
Valor: 2
Solicita que el objeto no espere a que los datos o la vista cambien antes de realizar una llamada inicial a IAdviseSink::OnDataChange (para las conexiones de asesoramiento de datos o vistas) o actualizar la memoria caché (para las conexiones de caché). Usado con ADVF_ONLYONCE, este parámetro proporciona una llamada asincrónica IDataObject::GetData .
ADVF_ONLYONCE
Valor: 4
Solicita que el objeto sólo haga una notificación de cambios o una actualización de la caché antes de eliminar la conexión.

ADVF_ONLYONCE elimina automáticamente la conexión de asesoramiento después de enviar una notificación de datos o vista. El receptor de asesoramiento recibe solo una llamada de IAdviseSink . Se devuelve un identificador de conexión distinto de cero si se establece la conexión, por lo que el autor de la llamada puede usarlo para eliminar la conexión antes de la primera notificación de cambio.

Para las notificaciones de cambio de datos, la combinación de ADVF_ONLYONCE y ADVF_PRIMEFIRST proporciona, en efecto, una llamada asincrónica IDataObject::GetData .

Cuando se usa con el almacenamiento en caché, ADVF_ONLYONCE actualiza solo la memoria caché una vez, al recibir la primera notificación de IAdviseSink::OnDataChange . 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_DATAONSTOP
Valor: 64
Asegura la accesibilidad a los datos en las conexiones de consulta. Esta marca indica que cuando se cierra el objeto de datos, debe llamar a , proporcionando datos con la llamada. Normalmente, este valor se usa en combinación con ADVF_NODATA. Sin el valor deIAdviseSink::OnDataChange , cuando una llamada a OnDataChange sin datos llega al receptor, es posible que el origen haya completado su apagado y que los datos no sean accesibles. Los receptores que especifican este valor deben aceptar los datos proporcionados en OnDataChange si se pasa, ya que es posible que no tengan otra oportunidad de recuperarlo.

En el caso de las conexiones de caché, esta marca indica que el objeto debe actualizar la memoria caché como parte del cierre de objetos.

ADVF_DATAONSTOP no es una marca válida para las conexiones de asesoramiento de vista.
ADVFCACHE_NOHANDLER
Valor: 8
Sinónimo de ADVFCACHE_FORCEBUILTIN, que se usa con más frecuencia.
ADVFCACHE_FORCEBUILTIN
Valor: 16
Las aplicaciones del objeto DLL y los controladores de objetos que dibujan sus objetos utilizan este valor. ADVFCACHE_FORCEBUILTIN indica a OLE que almacene en caché los datos de presentación para asegurarse de que hay una presentación en la memoria caché. Este valor no es una marca válida para las conexiones de consulta de datos o vistas. En el caso de las conexiones de caché, esta marca almacena en caché los datos que requieren que solo haya código enviado con OLE (o el sistema operativo subyacente) para poder generarlos con IDataObject::GetData o IViewObject::D raw. Al especificar este valor, el contenedor puede asegurarse de que los datos se pueden recuperar incluso cuando el objeto o el código del controlador no están disponibles.
ADVFCACHE_ONSAVE
Valor: 32
En las conexiones de caché, este marcador actualiza la representación almacenada en la memoria caché, pero sólo cuando se guarda el objeto que contiene la caché. La memoria caché también se actualiza cuando el objeto OLE pasa del estado en ejecución al estado cargado (porque una operación de guardado posterior requeriría volver a ejecutar el objeto). Este valor no es una marca válida para las conexiones de consulta de datos o vistas.

Comentarios

Para una conexión de asesoramiento de datos o vistas, el contenedor usa las constantes de ADVF al configurar una conexión entre una instancia de IAdviseSink y una instancia de IDataObject o IViewObject . Estas conexiones se configuran mediante los métodos IDataObject::D Advise, IDataAdviseHolder::Advise o IViewObject::SetAdvise .

Para una conexión de almacenamiento en caché, las constantes se especifican en el método IOleCache::Cache para indicar las solicitudes del contenedor sobre cómo debe actualizar el objeto su caché.

Estas constantes también se usan en el miembro advf de la estructura STATDATA . IEnumSTATDATA usa esta estructura para describir las conexiones enumeradas y el miembro advf indica las marcas que se especificaron cuando se estableció la conexión de consulta o caché. Cuando se usa STATDATA para un enumerador IOleObject::EnumAdvise , el miembro advf es indeterminado.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado objidl.h

Consulte también

IDataAdviseHolder

IDataObject

IEnumSTATDATA

IOleCache

IViewObject