Доброго времени суток! Читал о технологии СОМ и не понял на мой взгляд самого важного, а именно как узнать во всей куче указателей в памяти, указатель на нужный метод, например: имеем IHTMLDocument2 получаем на него указатель с помощью API ObjectFromLresult и записываем его в res. Теперь чтоб вызвать метод body описанный в MSDN как узнать где он будет валяться точнее узнать смещение относительное полученного res, а имеено вызвать call [res]+xx где хх бдует то самое смещение до нужного метода (он же body). И точно так же после получения указателя на новый спускаться дальше по лестнице методов пока не достигну нужного (в случае если отличаются от самого первого body) HRESULT IHTMLDocument2::get_body(IHTMLElement **p); трактуется как: push указатель в памяти на место куда будет получен указатель на IHTMLElement push указатель на текущий интерфейс IHTMLDocument2 call [res]+xx
OMG! Указатель на COM-объект (IHTMLElement*, например), всегда указывает непосредственно на таблицу виртуальных функций (vtable). Которая, в свою очередь, представляет собой массив указателей на виртуальные функции (методы интерфейса). Элементы этого массива - указатели на виртуальные функции, в том же порядке, в каком методы объявлены в определении интерфейса (класса). Отсюда легко вывести нужное преобразование (мне это делать лень) Если, конешно, я правильно понял, что вопрос был о том, как из указателя на COM-объект получить указатель на конкретный метод.
все ты правильно понял только вот не все так просто оказывается, забыл ты например что в начале каждой таблицы идут: IUnknown_QueryInterface_Proxy IUnknown_AddRef_Proxy IUnknown_Release_Proxy это уже +8 байт но даже если так все равно не сходится с MSDNоновкой последовательностью. Например в случае с IHTMLDocument2 метод body будет лежать по смещению 36 что соотвествует MSDN мануалу с учетом +8 байт в начале (body расположен 7-м по счету 7*4=28) 28+8=36 но вот незадача почему же тогда после получения IHTMLElement с помощью body хотим вызвать innerText (11*4=44) 44+8=52 вызываем и нифига не получаем что хотим?
Кароче нашел то что искал, случайно наткнулся на ссылку http://www.japheth.de/ там есть программа такая COMView показывает кучу информации в том числе и смещения для методов.