Форум: "Прочее";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];
ВнизВопрос про COM Найти похожие ветки
← →
IvanZ (2008-01-15 00:32) [0]Бывают COM "библиотеки" полностью открытыми, ну т.е. в них даже в ресурсах есть TLB файл, который можно использовать как файл с указаниями интерфейсов.
А бывают закрытые, т.е. нет никаких TLB, все предельно не ясно, а приложение и COM взаимодействуют, при этом ни в приложении (уже скомпилированномм), ни в библиотке - любые имена интерфесов отстуствуют.
Как называется второй "режим" работы? Точно знаю что читал об этом, но совсем забыл.
Спасибо.
← →
Черный Шаман (2008-01-15 04:03) [1]
> IvanZ (15.01.08 00:32)
Может я ошибаюсь, но разве в COM-технологии интерфейс может быть закрытым?
← →
ketmar © (2008-01-15 06:14) [2]>[1] Черный Шаман (15.01.08 04:03)
>Может я ошибаюсь, но разве в COM-технологии интерфейс может быть
>закрытым?
для работы с COM tlb не нужны. можно общаться и без них, если известны CLSID и сигнатуры методов.
← →
isasa © (2008-01-15 08:53) [3]Раннее и позднее связывание, не?
← →
isasa © (2008-01-15 08:58) [4]ketmar © (15.01.08 06:14) [2]
:)
Использование *.TLB это дельфийские штучки,не?
Крутые перцы используют IDL ...
← →
ketmar © (2008-01-15 09:05) [5]>[4] isasa ©(15.01.08 08:58)
>Использование *.TLB это дельфийские штучки,не?
>Крутые перцы используют IDL ...
это девелоперы. а энд-юзеры и tlb обходятся.
а впрочем, я вообще со всей этой ерундой работать не умею. %-)
← →
DiamondShark © (2008-01-15 09:08) [6]
> Использование *.TLB это дельфийские штучки,не?
Не. TLB -- это описания интерфейсов, а использовать его может кто угодно. VC и VB тоже используют TLB, кроме того, TLB может использовать системный маршалер.
> Крутые перцы используют IDL ...
Ага, если он есть, во-первых.
Во-вторых, эта фраза примерно эквивалентна: "EXE -- это хххисйские штучки, крутые перцы используют PAS."
← →
ketmar © (2008-01-15 09:16) [7]>[3] isasa ©(15.01.08 08:53)
>Раннее и позднее связывание, не?
кстати, какое, нафиг, раннее связывание в COM? O_o
← →
DiamondShark © (2008-01-15 09:19) [8]
> какое, нафиг, раннее связывание в COM?
А, я извиняюсь, раннее связывание бывает где?
← →
Черный Шаман (2008-01-15 18:35) [9]
> ketmar © (15.01.08 06:14) [2]
>
> >[1] Черный Шаман (15.01.08 04:03)
> >Может я ошибаюсь, но разве в COM-технологии интерфейс может
> быть
> >закрытым?
> для работы с COM tlb не нужны. можно общаться и без них,
> если известны CLSID и сигнатуры методов.
Да, но импорт классов,методов и параметров закрыть нельзя.
← →
DiamondShark © (2008-01-15 19:01) [10]
> Да, но импорт классов,методов и параметров закрыть нельзя.
Можно. Если CLSID и сигнатуры методов дать, например, написаными на бумажке.
← →
ketmar © (2008-01-15 19:04) [11]>[8] DiamondShark ©(15.01.08 09:19)
>>какое, нафиг, раннее связывание в COM?
>А, я извиняюсь, раннее связывание бывает где?
насколько я помню сей термин, «ранее связывание» — это когда компилятор присобачивает заместо вызова метода по VMT прямой адрес в коде, куда скакать надо, потому что видит, что VMT здесь не нужно. что в COM принципиально нереализуемо.
← →
ketmar © (2008-01-15 19:06) [12]>[11] ketmar ©(15.01.08 19:04)
или не компилятор, а загрузчик сразу сам адреса прописывает — по собственной инициативе или по наводе. в данном случае не важно, потому что этого всё равно нет.
← →
DiamondShark © (2008-01-15 19:21) [13]
> ketmar © (15.01.08 19:04) [11]
А-аа... Не, это не то. Тут, видимо, имелось "ранее связывание" (использование DISPID из библиотеки типов, вместо IDispatch.GetIDsOfNames), как противоположность "позднему связыванию" (late binding).
Где-то в каких-то книжках по ВБасику и Automation такие термины и использовали: ранее, позднее и VTable связывание.
← →
ketmar © (2008-01-15 20:04) [14]>[13] DiamondShark ©(15.01.08 19:21)
тьфу. понапридумывали словей — так вот скажешь, и потом перед боярями не лепо. учту. я-таки, похоже, не то понял.
← →
ага (2008-01-16 05:26) [15]
>DiamondShark © (15.01.08 19:21) [13]
>Тут, видимо, имелось "ранее связывание" (использование DISPID из библиотеки типов, вместо IDispatch.GetIDsOfNames)
Использование DISPID - это ID-связыване, ID-binding.
А раннее связывание - оно и есть на этапе компиляции. У компилятора есть описание интерфейса, и он строит вызов, вставляя вычесление адреса метода как смещение от начала таблицы методов, а адрес этой таблицы и есть, грубо говоря, интерфейс. А для ID-связывания компилятору нужно описание диспинтерфейса. Проще говоря, ID-связывание - это когда описания интерфейса нет, но есть ID методов и GetIDsOfNames вызывать не нужно, в отличии от позднего связывания.
>ранее, позднее и VTable связывание
Не-а. Раннее(VTable), ID-связывание и позднее.
Не знаю правда, есть ли это в нонешном MSDN, но раньше было.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c