# 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
## **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.