IUnknown
# IUnknown

En la programación de computadoras, el IUnknown (personalizado) es la interfaz fundamental en el modelo de objetos componentes (COM). Los publicados especificación COM mandatos que los objetos COM deben implementar mínimamente esta interfaz. Además, cada dos interfaz COM debe derivarse de IUnknown. IUnknown expone dos características esenciales de todos los objetos COM: objeto de gestión por vida a través de recuento de referencias, y el acceso a diferentes predefinidos de interfaces.

Una costumbre interfaz IUnknown consiste en un puntero a una tabla de métodos virtuales que contiene una lista de punteros a las funciones que implementan las funciones declaradas en la interfaz, en el mismo orden en que se declaran en la interfaz. La invocación de arriba en proceso es, por tanto, comparable a las llamadas a métodos virtuales en C++.

## Métodos

La interfaz IUnknown expone tres métodos: QueryInterface, AddRef y Release.

QueryInterface permite al llamante para recuperar las referencias a diferentes interfaces de los implementos de componentes. Es similar a dynamic_cast<> en C++ o arroja en Java y C#. Específicamente, se utiliza para obtener un puntero a otra interfaz, dado un GUID que identifica de forma exclusiva esa interfaz (comúnmente conocido como un ID de interfaz, o IID). Si el objeto COM no implementa esa interfaz, se devuelve un error E_NOINTERFACE lugar. AddRef se usa para incrementar la cuenta de referencia cuando un nuevo cliente adquiere el objeto. Devuelve la nueva cuenta de referencia. Release se utiliza para disminuir el recuento de referencia cuando los clientes han terminado de usar el objeto. Devuelve la nueva cuenta de referencia. El objeto COM se eliminará a sí mismo cuando la referencia de conteo llega a cero.

El IUnknown ID de interfaz se define como un GUID con el valor de {00000000-0000-0000-C000-000000000046}.

Se requieren las interfaces de un componente COM para exhibir las reflexiva, simétrica y transitiva propiedades. La propiedad reflexiva se refiere a la capacidad para el QueryInterface llamada en una interfaz dada con la identificación de la interfaz para devolver la misma instancia de la interfaz. La propiedad simétrica requiere que cuando la interfaz B se recupera de una interfaz a través de QueryInterface, interfaz A es recuperable desde la interfaz B también. La propiedad transitiva requiere que si la interfaz B se puede obtener desde la interfaz A y C es la interfaz que se puede obtener a partir de la interfaz B, entonces la interfaz C debe ser accesible a partir interfaz A.

## Varios

* Los componentes diseñados bajo el ActiveX estándar deben, como mínimo, implementar la interfaz IUnknown.
* IUnknown sirve como la base para el sistema CFPlugIn Core Foundation de Mac OS X.
* En el desarrollo de aplicaciones Mozilla, esta interfaz también se conoce como nsISupports.
