COM编程入门:深入COM服务器

来源: 作者: 2007-12-13 出处:pcdog.com

dos  安全  多线程  注册表  
下一页 1 2 3 4 5 6 7 8 9 10 11 12 

源码下载

  本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口。

  继上一篇COM编程入门之后,本文将讨论有关COM服务器的内容,解释编写自己的COM接口和COM服务器所需要的步骤和知识,以及详细讨论当COM库对COM服务器进行调用时,COM服务器运行的内部机制。

  如果你读过上一篇文章。应该很熟悉COM客户端是怎么会事了。本文将讨论COM的另一端——COM服务器。内容包括如何用C++编写一个简单的不涉及类库的COM服务器。深入到创建COM服务器的内部过程,毫无遮掩地研究那些库代码是充分理解COM服务器内部机制的最好方法。

  本文假设你精通C++并掌握了上一篇文章所讨论的概念和术语。在这一部分将包括如下内容:

  走马观花看COM服务器——描述COM服务器的基本要求。

  服务器生命其管理——描述COM服务器如何控制加载时间。

  实现接口,从IUnknown开始——展示如何用C++类编写一个接口实现并描述IUnknown之方法的目的。

  深入CoCreateInstance()——探究CoCreateInstance()的调用机理。

  COM服务器的注册——描述完成服务器注册所需要的注册表入口。

  创建COM对象——类工厂——描述创建客户端要使用的COM对象的过程。

  一个定制接口的例子——例子代码示范了上述概念。

  一个使用服务器的客户端——举例说明一个简单的客户端应用程序,用它来测试COM服务器。

  其它内容——有关源代码和调试的注释。

  走马观花看COM服务器

  本文我们将讨论最简单的一种COM服务器,进程内服务器(in-process)。“进程内”意思是服务器被加载到客户端程序的进程空间。进程内服务器都是DLLs,并且与客户端程序同在一台计算机上。

  进程内服务器在被COM库使用之前必须满足两个条件或标准:

  1、 必须正确在注册表的HKEY_CLASSES_ROOT\CLSID 键值下注册。

  2、 必须输出DllGetClassObject()函数。

  这是进程内服务器运行的最小需求。在注册表的HKEY_CLASSES_ROOT\CLSID 键值下必须创建一个键值,用服务器的GUID作为键名字,这个键值必须包含两个键值清单,一是服务器的位置,而是服务器的线程模型。 COM库对DllGetClassObject()函数进行调用是在CoCreateInstance() API中完成的。

  还有三个函数通常也要输出:

  o DllCanUnloadNow():由COM库调用来检查是否服务器被从内存中卸载。


更多内容请看PCdog.com--FTP服务器  代理服务器技术  刀片服务器专题
下一页 1 2 3 4 5 6 7 8 9 10 11 12 
上一篇:应用服务器的技术发展趋势
下一篇:多层C/S的客户端调用服务器端的方法