Compartir a través de


Definir el tipo de cálculo de referencias

Para poder generar un contador de referencias es necesario definir las interfaces administrada y no administrada cuyas referencias se van a calcular. Normalmente, estas interfaces realizan la misma función, pero se exponen de manera diferente a los objetos administrados y no administrados.

Un compilador administrado produce una interfaz administrada a partir de metadatos y la interfaz resultante tiene el mismo aspecto que cualquier otra interfaz administrada. En el siguiente ejemplo de código se muestra una interfaz típica:

#using <mscorlib.dll>
interface INew {
    void NewMethod();
}

El tipo no administrado se define en el Lenguaje de definición de interfaz (IDL) y se compila con el compilador MIDL. La interfaz se define dentro de una instrucción de biblioteca y se le asigna un identificador de interfaz con el atributo del identificador único universal (UUID).

En Old.idl

[uuid(9B2BAADA-0705-11D3-A0CD-00C04FA35826)]
library OldLib {
     [uuid(9B2BAADD-0705-11D3-A0CD-00C04FA35826)]
     interface IOld : IUnknown
         HRESULT OldMethod();
}

El compilador MIDL produce varios archivos de resultados. Si la interfaz se define en Old.idl, el archivo de resultados Old_i.c define una variable const con el identificador de interfaces (IID) de la interfaz:

En Old_i.c

const IID IID_IOld = {0x9B2BAADD,0x0705,0x11D3,{0xA0,0xCD,0x00,0xC0,0x4F,0xA3,0x58,0x26}};

MIDL produce también el archivo Old.h. Contiene una definición de la interfaz de C++ que se puede incluir en el código fuente de C++.

Vea también

Conceptos

Implementar la interfaz ICustomMarshaler
Utilizar un contador de referencias sustituto

Otros recursos

Cálculo de referencias personalizado