# IUnknown ## **Overview** **Related Modules:** [Samgr](Samgr.md) **Description:** Defines the **[IUnknown](IUnknown.md)** class. You need to inherit this structure when developing a subclass of the **[IUnknown](IUnknown.md)** interface. ## **Summary** ## Data Fields

Variable Name

Description

QueryInterface )(IUnknown *iUnknown, int version, void **target)

int(* 

AddRef )(IUnknown *iUnknown)

int(* 

Release )(IUnknown *iUnknown)

int(* 

## **Details** ## **Field Documentation** ## AddRef ``` int(* IUnknown::AddRef) ([IUnknown](IUnknown.md) *iUnknown) ``` **Description:** Adds the reference count. ## QueryInterface ``` int(* IUnknown::QueryInterface) ([IUnknown](IUnknown.md) *iUnknown, int version, void **target) ``` **Description:** Queries the subclass object of the **[IUnknown](IUnknown.md)** interface of a specified version \(downcasting\). ## Release ``` int(* IUnknown::Release) ([IUnknown](IUnknown.md) *iUnknown) ``` **Description:** Release the reference to an **[IUnknown](IUnknown.md)** interface.