|
In computer programming, the IUnknown (''custom'') interface is the fundamental interface in the Component Object Model (COM). The published (COM specification ) mandates that COM objects must minimally implement this interface. Furthermore, every other COM interface must be derived from IUnknown. IUnknown exposes two essential features of all COM objects: object lifetime management through reference counting, and access to various predefined interfaces. A ''custom'' IUnknown interface consists of a pointer to a virtual method table that contains a list of pointers to the functions that implement the functions declared in the interface, in the same order that they are declared in the interface. The in-process invocation overhead is therefore comparable to virtual method calls in C++. ==Methods== The IUnknown interface exposes three methods: QueryInterface , AddRef , and Release :〔(IUnknown definition ) at (microsoft.com ); accessed 18-Jan-2008〕* QueryInterface allows the caller to retrieve references to different interfaces the component implements. It is similar to dynamic_cast<> in C++ or casts in Java and C#. Specifically, it is used to obtain a pointer to another interface, given a GUID that uniquely identifies that interface (commonly known as an interface ID, or IID). If the COM object does not implement that interface, an E_NOINTERFACE error is returned instead.* AddRef is used to increment the reference count when a new client is acquiring the object. It returns the new reference count.* Release is used to decrement the reference count when clients have finished using the object. It returns the new reference count. The COM object will delete itself when the reference-count reaches zero.The IUnknown interface ID is defined as a GUID with the value of . A COM component's interfaces are required to exhibit the reflexive, symmetric, and transitive properties. The reflexive property refers to the ability for the QueryInterface call on a given interface with the interface's ID to return the same instance of the interface. The symmetric property requires that when interface B is retrieved from interface A via QueryInterface , interface A is retrievable from interface B as well. The transitive property requires that if interface B is obtainable from interface A and interface C is obtainable from interface B, then interface C should be retrievable from interface A.抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「IUnknown」の詳細全文を読む スポンサード リンク
|