性能动态库的生命周期

当一个性能动态库被载入PerfMon地址空间,一个动态库的正常行为就起了作用,简而言之 ,DLLMain函数被调用并且一个DLL_PROCESS_ATTACH值被传送给它。然后,一个动态库能接收到许多DLL_THREAD_ATTACH的调用并且一旦这个线程或过程被终止,它们的DLL_THREAD_DETACH调用被信号通知。
一旦初始化安装过程完成,PerfMon直接调用在注册表PO键值下列出的三个输出函数。首先调用的是打开函数,也就是OpenPerfData 函数,这个过程给了性能动态库时间来做一些在就绪状态下获得对象所需的设置。然后,PerfMon 重新获得这个动态库将要处理的POS和COS信息。它从动态库的收集函数或是从输出的CollectPerfData 函数中得到信息。这个函数获得四个参数:第二个参数是一个数据缓冲区,性能动态库把它的PO、CO信息存放在里面。第三个参数是收入在数据缓冲区所有PO和CO信息的总字节数。最后一个参数指出在数据缓冲区中插入了多少性能对象。
第一个参数在收集函数中扮演双重角色。首先,它只是一个编码串值。然而,这个串包含了两个变量。第一个是全局变量,第二个可以做为数字串的分隔符(或PO的索引值)。那个全局变量作为“这是谁”的标记被传送,这时性能动态库把PO和CO的信息填入数据缓冲区。
一旦函数退出,再次被调用就要看你是否选择了由PERMON监视的特殊计数器。如果你选了,再次传送到函数的值是被正确监视的包含了所有PO索引值的分隔串。动态库的责任是仔细检查列表并为它处理的DLL提供正确的PO和CO信息。
最后一个调用的函数是DLL关闭函数(CLOSEperfData)。当PerfMon退出时,它被调用释放内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值