Clase de CComObjectRootEx

Esta clase proporciona métodos a la administración del recuento de referencias de objeto ID para los objetos nonaggregated y agregados.

template<
   class ThreadModel 
>
class CComObjectRootEx : public CComObjectRootBase

Parámetros

Members

8hzca2fs.collapse_all(es-es,VS.110).gifMétodos

CComObjectRootEx

Constructor.

InternalAddRef

Incrementa el recuento de referencias para un objeto nonaggregated.

InternalRelease

Decrementa para un objeto nonaggregated.

Bloquear

Si el modelo de subprocesos es multiproceso, obtiene la propiedad de un objeto de sección crítica.

Unlock

Si el modelo de subprocesos es multiproceso, propiedad de un objeto de sección crítica.

8hzca2fs.collapse_all(es-es,VS.110).gifmétodos de CComObjectRootBase

FinalConstruct

Reemplace en la clase para realizar cualquier inicialización requerida por el objeto.

FinalRelease

Reemplace en la clase para realizar cualquier limpieza necesaria para el objeto.

OuterAddRef

Incrementa el recuento de referencias para un objeto agregado.

OuterQueryInterface

delegados a IUnknown externo de un objeto agregado.

OuterRelease

Decrementa para un objeto agregado.

8hzca2fs.collapse_all(es-es,VS.110).gifFunciones de estático

InternalQueryInterface

delegados a IUnknown de un objeto nonaggregated.

ObjectMain

Denominado durante la inicialización y la finalización de módulo para las clases derivadas enumeradas en el mapa del objeto.

8hzca2fs.collapse_all(es-es,VS.110).gifmiembros de datos

m_dwRef

Con m_pOuterUnknown, parte de una combinación.Se utiliza cuando el objeto no se agrega para contener el recuento de referencias de AddRef y de Liberar.

m_pOuterUnknown

Con m_dwRef, parte de una combinación.Se utiliza cuando el objeto se agrega para contener un puntero al desconocido externo.

Comentarios

administración del recuento de referencias de objeto de los identificadores deCComObjectRootEx para los objetos nonaggregated y agregados.Contiene el recuento de referencias de objeto si el objeto no se suma, y mantiene el puntero a desconocido externo si se está agregando el objeto.Para los objetos agregados, los métodos de CComObjectRootEx se pueden utilizar para controlar el error del objeto interno a la construcción, y proteger el objeto externo de eliminación cuando se publican interfaces internas o el objeto interno se elimina.

una clase que implementa un servidor COM debe heredar de CComObjectRootEx o de CComObjectRoot.

Si la definición de clase especifica la macro de DECLARE_POLY_AGGREGATABLE , ATL crea una instancia de CComPolyObject <CTheClass> cuando se llama a IClassFactory:: CreateInstance .Durante la creación, el valor desconocido externo se comprueba.si es NULL, IUnknown se implementa para un objeto nonaggregated.Si el hecho exterior no se NULL, IUnknown se implementa para un objeto agregado.

si la clase no especifica la macro de DECLARE_POLY_AGGREGATABLE , ATL crea una instancia de CAggComObject <CTheClass> para los objetos agregados o una instancia de CComObject <CTheClass> para los objetos nonaggregated.

La ventaja de utilizar CComPolyObject es que se evita tener CComAggObject y CComObject en el módulo para controlar los casos agregado y nonaggregated.Los controladores de objeto de CComPolyObject ambos casos.Por consiguiente, sólo una copia de vtable y una copia de las funciones existen en el módulo.Si el vtable es grande, esto puede reducir considerablemente el tamaño del módulo.Sin embargo, si el vtable es pequeño, mediante CComPolyObject pueden producir un tamaño ligeramente mayor de módulo porque no se optimiza para un objeto agregado o nonaggregated, al igual que CComAggObject y CComObject.

si se agrega el objeto, IUnknown es implementado por CComAggObject o CComPolyObject.Estas clases delegan QueryInterface, AddRef, y las llamadas de Liberar a OuterQueryInterface, a OuterAddRef, y a OuterRelease de los entity_CComObjectRootEx reenvíe al desconocido externo.Normalmente, se reemplaza CComObjectRootEx::FinalConstruct en la clase para crear cualquier objeto agregado, y reemplaza CComObjectRootEx::FinalRelease para liberar los objetos agregados.

si el objeto no se agrega, IUnknown es implementado por CComObject o CComPolyObject.En este caso, las llamadas a QueryInterface, AddRef, y Liberar se delegan en InternalQueryInterface, a InternalAddRef, y a InternalRelease de los entity_CComObjectRootEx para realizar las operaciones reales.

Requisitos

encabezado: atlcom.h

Vea también

Referencia

Clase de CComAggObject

Clase de CComObject

Clase de CComPolyObject

Otros recursos

Información general de la clase ATL