Войти

Показать полную графическую версию : что такое интерфейс IUnknown


XCodeR
05-05-2006, 19:47
собственно сабж... единственное что я понял, интерфейс связан как-то с COM.....

пользовался ActiveX компонентом GWX. при создании объекта GWRoute вместо обхъекта получаю этот самый IUnknown...
как мне "переёти" к нужому объекту??....

XPEHOMETP
05-05-2006, 23:08
IUnknown - это как бы такая примочка в Дельфи, которая позволяет подключить COM-объект, не влезая во все детали реализации конкретного СОМ-интерфейса. В общем, чего бы там конкретно ни было написано, работать все равно будет. А если разбираться со всеми конкретными деталями, это придется описывать в явном виде все методы, которые предоставляет СОМ-объект. Это можно (при наличии толковой документации), но очень, очень, очень долго и муторно. Есть и другие варианты таких примочек, например, atl71.dll, которая идет в комплекте .NET.

ivank
06-05-2006, 18:24
XPEHOMETP
Полностью несоответствующая действительности информация.

IUnknown - предок всех возможных COM-интерфейсов. В нём есть три метода, два для управления временум жизни объекта - AddRef и Release и один для запроса других интерфейсов поддерживаемых объектом - QueryInterface. Соотвтественно после создания объекта (получения указателя на IUnknown) необходимо запросить конкретный интерфейс. Делается это по так называемому IID'у, его надо знать заранее (или можно импортировать из т. н. библиотеки типов, но это несколько сложнее и нафиг не нужно, если интерфейс известен априорно).

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/33f1d79a-33fc-4ce5-a372-e08bda378332.asp

ATL никакого отношения к .NET не имеет.

hasherfrog
07-05-2006, 00:10
>> IUnknown - предок всех возможных COM-интерфейсов.
Добавлю очевидное(?). Любой COM-объект поддерживает IUnknown-интерфейс.

>> как мне "переёти" к нужому объекту??....
Через IUnknown::QueryInterface. Можете поискать в DirectX SDK, много примеров.

XCodeR
07-05-2006, 12:57
ivank,hasherfrog спасибо.....
пойду пробовать




© OSzone.net 2001-2012