Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plugins 接口ID、实现ID和DLL ID(UID3)的区别和关系是什么?_Plugins_Symbian_Ecom - Fatal编程技术网

Plugins 接口ID、实现ID和DLL ID(UID3)的区别和关系是什么?

Plugins 接口ID、实现ID和DLL ID(UID3)的区别和关系是什么?,plugins,symbian,ecom,Plugins,Symbian,Ecom,为什么ECOM中需要实施ID?UID3还不够吗 谢谢。所有Symbian操作系统二进制文件都有三个UID:UID1、UID2、UID3 UID1指定目标类别(例如exe、dll),并根据MMP文件TARGETTYPE关键字自动推断 UID2指定目标子类别(例如,通用dll或插件dll)。对于ECOM插件DLL,它应该是0x10009d8d UID3标识对象本身,您必须提供唯一的值(从未受保护的范围中拾取或从受保护的范围中分配)。UID2和UID3是使用MMP文件UID关键字指定的 ECOM插

为什么ECOM中需要实施ID?UID3还不够吗


谢谢。

所有Symbian操作系统二进制文件都有三个UID:UID1、UID2、UID3

  • UID1指定目标类别(例如exe、dll),并根据MMP文件
    TARGETTYPE
    关键字自动推断

  • UID2指定目标子类别(例如,通用dll或插件dll)。对于ECOM插件DLL,它应该是
    0x10009d8d

  • UID3标识对象本身,您必须提供唯一的值(从未受保护的范围中拾取或从受保护的范围中分配)。UID2和UID3是使用MMP文件
    UID
    关键字指定的

ECOM插件资源文件包含三种UID:

  • dll\u uid
    是一种将插件资源文件中包含的接口/实现映射到插件二进制dll的机制。它和UID3一样

  • interface\u uid
    是标识插件实现的接口的uid。插件接口可能有多个实现,因此需要一种机制来识别它们的公共性

  • 实现\u uid
    是接口实现的标识符。通常它与
    dll\u uid
    相同,但不需要这样。允许在一个二进制文件中实现多个接口可能会有所不同


因此,UID3就足够了,但是存放资源文件的ECOM框架也需要知道二进制文件的uid,以便能够在请求时加载实现。

所有Symbian OS二进制文件都有三个uid:UID1、UID2、UID3

  • UID1指定目标类别(例如exe、dll),并根据MMP文件
    TARGETTYPE
    关键字自动推断

  • UID2指定目标子类别(例如,通用dll或插件dll)。对于ECOM插件DLL,它应该是
    0x10009d8d

  • UID3标识对象本身,您必须提供唯一的值(从未受保护的范围中拾取或从受保护的范围中分配)。UID2和UID3是使用MMP文件
    UID
    关键字指定的

ECOM插件资源文件包含三种UID:

  • dll\u uid
    是一种将插件资源文件中包含的接口/实现映射到插件二进制dll的机制。它和UID3一样

  • interface\u uid
    是标识插件实现的接口的uid。插件接口可能有多个实现,因此需要一种机制来识别它们的公共性

  • 实现\u uid
    是接口实现的标识符。通常它与
    dll\u uid
    相同,但不需要这样。允许在一个二进制文件中实现多个接口可能会有所不同


因此,UID3就足够了,但是存放资源文件的ECOM框架也需要知道二进制的
dll\u uid
,以便能够在请求时加载实现。

实现ID不必与实现插件的dll的UID3相同(尽管通常是这样),所以你可以在一个DLL中提供多个ECOM插件。@Mathewl:你说得对。谢谢你的评论。我已经更新了我的答案。实现ID不必与实现插件的DLL的UID3相同(尽管它通常是相同的),因此您可以在单个DLL中提供多个ECOM插件。@Mathewl:您是对的。谢谢你的评论。我已经更新了我的答案。