客户应用程序调用COM API CoFreeUnusedLibraries()时,COM库遍历这个客户端应用已加载所有的DLL服务器并通过调用它的DllCanUnloadNow()函数查询每一个服务器

转载 2012年03月31日 09:11:03

服务器生命其管理

DLL服务器的一个与众不同的方面是控制它们被加载的时间。“标准的”DLLs被动的并且是在应用程序使用它们时被随机加载/或卸载。从技术上讲,DLL服务器也是被动的,因为不管怎样它们毕尽还是DLL,但COM库提供了一种机制,它允许某个服务器命令COM卸载它。这是通过输出函数DllCanUnloadNow()实现的。这个函数的原型如下:

         HRESULT DllCanUnloadNow();

当客户应用程序调用COM API CoFreeUnusedLibraries()时,通常出于其空闲处理期间,COM库遍历这个客户端应用已加载所有的DLL服务器并通过调用它的DllCanUnloadNow()函数查询每一个服务器。另一方面,如果某个服务器确定它不再需要驻留内存,它可以返回S_OK让COM将它卸载。
服务器通过简单的引用计数来确定它是否能被卸载。下面是DllCanUnloadNow()的实现:

extern UINT g_uDllRefCount;  // 服务器的引用计数HRESULT DllCanUnloadNow(){    return (g_uDllRefCount > 0) ? S_FALSE :S_OK;}

如何处理引用计数将在下一节涉及到具体代码时讨论。

网站调用dll程序的问题

有个不认识的小伙子问我一个问题,就是在自己的电脑上面调用Delphi开发的dll成功,但是部署在IIS服务器上,执行却没有返回信息,这是为什么呢? 我看了很久,也写了代码做测试,以为是dll路径的问...
  • panliuwen
  • panliuwen
  • 2015年12月17日 15:06
  • 1631

DCOM揭秘之六——远程COM调用(服务器端和客户端)

DCOM揭秘之六 2001-08-23 09:27作者:QQ新人类出处:Yesky责任编辑:方舟    Distributed COM --跨网络工作   ...
  • coolbear1027
  • coolbear1027
  • 2012年04月12日 20:29
  • 1971

COM组件初始化

OleInitialize、CoInitialize、CoInitializeEx和AfxOleInit()区别  (2012-06-28 22:49:25) 转载▼ 标...
  • chinabinlang
  • chinabinlang
  • 2014年04月15日 11:43
  • 7315

TCP编程例三:从客户端发送文件给服务器端,服务器端保存到本地,并返回“发送成功”给客户端。

从客户端发送文件给服务器端,服务器端保存到本地,并返回“发送成功”给客户端。...
  • motianlundejiyi
  • motianlundejiyi
  • 2015年05月08日 14:23
  • 697

COM与数据库访问

第2章  COM与数据库访问 2.1  COM的基本原理 COM即组件对象模型,是一种以组件为发布单元的对象模型,这种模型使各种软件组件可以通过一种通用的方式进行交互。COM既提供了组件之间进行交...
  • zhengguoying
  • zhengguoying
  • 2011年08月10日 15:04
  • 1072

socket网络编程之一:客户端和服务器端接口函数

以下为winsock。  1. socket网络编程分为客户端和服务器端,客户端发送请求,服务器端进行应答;      建立连接时,服务器端绑定端口监听(bind&listen),客户端发...
  • Anzhongliu
  • Anzhongliu
  • 2016年09月22日 02:24
  • 2119

10.获取客户端指定路径下的文件目录,并传输至服务器端--服务器端

/* * 本程序主要功能: * 服务器端: * 获取客户端传输的指定路径下的文件列表 * 并将其保存至一个 String[] 数组中 * */ import java.io.*; im...
  • u014129816
  • u014129816
  • 2014年08月20日 20:52
  • 1773

32位程序访问64位DLL,使用COM组件

一直纠结于微软所谓的32位程序不能访问64位dll或64位程序不能访问32位dll,MSDN上的说明也不能完全理解。 这两天纠结的问题终于需要直面了,有个项目需要转到64位平台上运行(需要超4G内...
  • swtech_
  • swtech_
  • 2016年09月20日 11:09
  • 1355

调用dll和com的区别

问题:调用COM与调用DLL的区别和联系调用DLL必须这样:HMODULE hDll=::LoadLibrary("..//Debug//wdll.dll");if(hDll==NULL){Messa...
  • johnny_83
  • johnny_83
  • 2007年08月22日 14:19
  • 1964

服务器获取客户端IP的方法

服务端获取客户端用户的IP
  • Tommycaokai
  • Tommycaokai
  • 2016年01月05日 11:33
  • 495
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:客户应用程序调用COM API CoFreeUnusedLibraries()时,COM库遍历这个客户端应用已加载所有的DLL服务器并通过调用它的DllCanUnloadNow()函数查询每一个服务器
举报原因:
原因补充:

(最多只允许输入30个字)