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