В чем разница и взаимосвязь идентификатора интерфейса, идентификатора реализации и идентификатора DLL (UID3)? - PullRequest
1 голос
/ 09 марта 2010

и почему идентификатор внедрения необходим в ECOM? UID3 не достаточно?

спасибо.

1 Ответ

1 голос
/ 09 марта 2010

Все двоичные файлы Symbian OS имеют три UID: UID1, UID2, UID3.

  • UID1 указывает целевую категорию (например, exe, dll) и автоматически выводится из файла MMP TARGETTYPE ключевое слово.

  • UID2 указывает целевую подкатегорию (например, универсальную dll или подключаемую dll). Для dll модуля ECOM это должно быть 0x10009d8d.

  • UID3 идентифицирует сам объект, и вы должны указать уникальное значение (выбранное из незащищенного диапазона или выделенное из защищенного диапазона). UID2 и UID3 указываются с использованием ключевого слова MMP-файла UID.

Файлы ресурсов подключаемого модуля ECOM содержат три вида UID:

  • dll_uid - это механизм для отображения интерфейсов / реализаций, содержащихся в файле ресурсов плагина, в двоичную DLL-библиотеку плагина. Это то же самое, что и UID3.

  • interface_uid - это UID, который идентифицирует интерфейс, реализуемый плагином. Интерфейс подключаемого модуля может иметь более одной реализации, поэтому необходим механизм для определения их общности.

  • implementation_uid - идентификатор реализации интерфейса. Часто это то же самое, что и dll_uid, но это не обязательно. Он может отличаться, чтобы разрешить несколько реализаций интерфейса в одном двоичном файле.

Итак, UID3 достаточно, но инфраструктура ECOM, кодирующая файлы ресурсов, должна знать двоичный файл dll_uid, чтобы иметь возможность загружать реализацию по запросу.

...