5edf7c19

IUnknown


Все интерфейсы COM получены из интерфейса, называемого IUnknown. Интерфейс IUnknown обеспечивает DirectX контролем над сроком службы объекта, и способностью управлять многократными интерфейсами. IUnknown имеет только три метода:

AddRef, который увеличивает счет ссылки объекта на 1, когда интерфейс или  прикладная программа привязывает себя к объекту.

Release, который декрементирует счет ссылки объекта на 1. Когда счет достигает 0, объект освобожден.

QueryInterface, который делает запрос объекта относительно особенностей, которые объект поддерживает, возвращает указатель на специфический интерфейс.

AddRef и Release устанавливают счет ссылки специфического объекта. Например, если Вы создаете объект DirectDrawSurface, счет ссылки объекта увеличен на 1. Каждый раз функция возвращает указатель на интерфейс для того объекта, она должна затем вызвать AddRef через тот указатель, чтобы увеличить счет ссылки. Все обращения AddRef должны быть согласованы с обращением Release. Прежде, чем указатель может быть разрушен, Вы должны вызвать Release через тот указатель. Как только счет ссылки специфического объекта достигает 0, объект разрушается, и все интерфейсы к объекту затем недопустимы.

QueryInterface определяет, поддерживает ли объект специфический интерфейс. Если интерфейс поддерживается, QueryInterface возвращает указатель на этот специфический интерфейс. Вы можете затем использовать методы, содержащиеся в том интерфейсе, чтобы связаться с объектом. Если QueryInterface успешно возвращает указатель на интерфейс, он неявно вызывает  AddRef, чтобы увеличить счет ссылки, так что ваша прикладная программа должна вызвать Release для уменьшения счета ссылки перед разрушением указателя на интерфейс.



Содержание раздела