zoukankan      html  css  js  c++  java
  • com学习笔记(5)HRESULT,GUID,注册表

    用百度词条挺不错的.

    1.HRESULT

    http://baike.baidu.com/view/1754469.htm

    2.GUID

    http://baike.baidu.com/view/185358.htm

    3.CLSID

    http://baike.baidu.com/view/150219.htm

    GUID,它是Globally Unique Identifier的简称,中文翻译为“全球唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID

    4.com组件与注册表

    转自http://book.csdn.net/bookfiles/179/1001798036.shtml

    COM注册表入口

    COM使用了一个不同的方法来查找这些对象——注册表。在注册表项HKEY_CLASSES_ROOT(HKCR)中,所有的COM对象都被配置在CLSID项下面。对于原生的COM对象,注册表项HKCR\CLSID\{CLSID}\InProcServer32指示了这个DLL的完整路径。

    对于可以当作COM对象使用的 .NET组件,注册表中记录了更多的信息。注册表项HKCR\CLSID\{CLSID}\InProcServer的默认值是mscoree.dll,如图4-8所示。

    对于 .NET组件,在InprocServer32项下面,你可以找到下面这些配置项:

    ●   对于 .NET组件来说,Default的值是mscoree.dll。这个DLL是一个COM DLL,它可以为 .NET组件提供COM接口(作为一个包装),所以.NET组件可以当作COM对象使用。mscoree.dll会加载和执行 .NET程序集,实现CCW的角色。

    ●   Assembly项的值指示了此程序集的强名称(比如,程序集名称、版本、语种和公钥)。

    ●   Class项的值指示了类型的名称,包括命名空间。

    ●   CodeBase项的值指示了共享程序集的完整文件路径。

    ●   RuntimeVersion项是.NET运行时的版本。

    ●   ThreadModel项定义了这个服务组件接受的单元类型。对于.NET组件,默认的值是Both,允许所有种类的COM单元类型。

    注册表中的CodeBase项和应用程序配置文件中的<codeBase>元素在功能上很相似。和<codeBase>元素一样,CodeBase注册表项中引用的程序集也都是共享的。所有的应用

    程序都能使用同样的CLSID引用这个COM对象,所以它也是共享的。这里的问题在于注册表并不是所有情况下都能用上。使用DCOM协议在网络上传递一个 .NET组件时,不仅要调用COM的功能在注册表中查找相应的类型,也需要调用 .NET的序列化和反序列化功能。因此,.NET和COM对查找程序集的需求都必须实现。

    image

    图4-8  COM注册表项目

    5.注册com组件

    转自http://tech.163.com/06/0410/10/2EBDCQ2I00091SB8.html

    COM位置无关性的实现机制并不深奥,它主要依赖于注册表,这也就是为什么一定要在使用之前对COM组件进行注册的原因。COM库在接到客户程序的请求后,会到注册表中检索COM对象的注册条目,并以此来定位COM对象

    当然,COM组件不能天生就具备将注册信息写入到注册表中的功能,对进程内服务器而言,还必须实现两个名为DllRegisterServer和DllUnregisterServer的输出函数,来负责注册信息的写入和卸载。

    HRESULT DllRegisterServer(void)

    {

    // 主要实现方法:

    // 调用Windows API函数得到模块当前所在的物理位置,

    // 调用Windows API操作注册表的函数创建图5-4、5-5中所示的注册项目

    …(代码略)

    }

    HRESULT DllUnregisterServer(void)

    {

    // 主要实现方法

    // 调用Windows API操作注册表的函数,在注册表中删除写入的信息。

    (代码略)

    }

    6.com的调用

    转自http://www.vckbase.com/document/viewdoc/?id=1493

    好文章

  • 相关阅读:
    Liunx-----Shell脚本流程控制--顺序、选择、循环
    oracle基本查询
    Shell脚本练习题
    Shell脚本:选择结构、循环结构、
    Shell脚本
    Linux的基本命令
    动态页面技术(JSP/EL/JSTL)
    小功能:访问页面距上次访问有多久时间
    添加验证码,并验证验证码是否正确
    注册,登陆的Servlet、dao、service、domain、jsp页面、
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1518796.html
Copyright © 2011-2022 走看看