当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言:
 

 

    摘要:;“莫国防”病毒(win32.mgf)的源程序; 警告:本程序仅供各位学习研究,不许更改本程序成病毒新变种,更不允许添加破坏性代码,各位切记! ;写毒目的:;1,崇拜陈盈豪,欲与cih一比高低;;2,传播技术,提高国人的水平(如果你把源程序读懂,并跟踪一遍病毒,你的技术会大大提高);;3,让世界知道中国还是有人的; ;相关技术:;1,进入ring0:在win98用和cih一样的技术,直接往gdt添......
 ·用全局钩子截获信史服务消息    »显示摘要«
    摘要:程序只是一个原理说明,可能有很多地方不完善。方法是用shell钩子。 利用win32全局钩子,我直接给hook的代码,可以同时截获中文版和英文版本的信使服务一下是msghook.dll的源代码//--------------//msghook.cpp//-------------------------------------------------------------------------......


COM中事件驱动技术探讨

com中事件驱动技术探讨 【程序编程相关:Perl and I[所有的PERL爱好

【推荐阅读:获得CPU的信息

  【扩展信息:Hibernate中如何处理一对多关系中

 

 

 

 

邹飞

版本v1.0

2004年7月

目  录

1.     问题的提出.... 3

2.     名次术语.... 3

3.     常用技术.... 3

3.1       紧密耦合事件(tightly coupled events,tce)... 3

3.1.1       连接点技术... 3

3.1.2       消息队列技术... 11

3.2       松散耦合事件(loosely coupled events,lce)... 11

3.2.1    com+的事件驱动... 11

4.     总结.... 18

 

1.              问题的提出

类似于设计模式中observer模式,在com编程中,希望实现一种机制,使得对数据变化感兴趣的若干部分能够接受到数据的变化通知.一个典型的应用:计算机监控程序在计算机状态数据发生变化时通知系统管理员.系统日志程序.发送电子邮件等等.

2.              名次术语

订阅者subscriber:对数据感兴趣的程序

发布者publisher:发布数据变化通知的程序

激发事件firing event:发布者发起的通知过程

源接口(source)/出(outgoing)接口:发布者与订阅者之间达成的一致接口

接收器(sink):订阅者提供给发布者的对象

3.              常用技术

3.1               紧密耦合事件(tightly coupled events,tce)

3.1.1            连接点技术

com中提供了连接点的技术用于实现事件驱动.

连接点技术的工作方式为:

n         订阅者通过查询标准com接口iconnectionpointcontainer,询问发布者是否支持连接点机制

n         通过iconnectionpointcontainer的findconnectionpoint方法得到某种特定类型的连接点,通过接口iconnectionpoint返回

n         订阅者创建一个接收器(sink)对象

n         订阅者通过iconnectionpoint的advise方法把接收器对象加入到发布者的接收者名单中,返回一个cookie(dword的标识)

n         订阅者通过iconnectionpoint的unadvise取消对该事件的关注

从上面的工作方式可以发现,要实现连接点技术,只要订阅者与发布者遵循一定的接口规范,并对这些接口进行实现即可.

发布者:实现iconnectionpointcontainer的容器.支持iconnectionpoint的连接点

订阅者:实现sink对象

在vc中,提供了多种机制对连接点的实现进行了简化,使得开发连接点程序变得很简单,在vc6与vc7中均对连接点有很好的支持,同时又有一定差别,本文分别介绍.

实例介绍

首先介绍一下我们要实现的实例的功能描述:

发布者:实现一个add方法的接口,当add方法被调用时,如果结果大于100,则调用onadd事件,将add的参数传出去,实现为一个com的dll

订阅者:订阅onadd事件,当onadd事件被调用时,输出参数值,实现为dialog based application.

visual c++ 6.0

visual c++从5.0后提供了atl(active template library,活动模板库),它一套可用于开发轻量级com组件的开发库(在atl里使用非常复杂难懂的template,理解起来很麻烦~~~)

我们的第一种方法就是通过atl来实现连接点:

发布者:

n         通过atl com wizard新建一个com组件

项目名称为xadd

n         通过atl object wizard新建一个com对象(simple object)

short name设为add(其他的名字wizard会自动产生),同时,在attributes中钩上support connection points,以使得该com对象支持连接点,这会自动产生一个_iaddevents的接口.


...   下一页
 ·得到cpu的速度,较精确    »显示摘要«
    摘要:以前发布过一篇文章《粗略估计cpu的速度》可以得到cpu的速度,但是不是很准,这次发布一个比较准的程序。原理完全一样,只是用高精度计数器代替了sleep。 #include <windows.h>#include <stdio.h> int __fastcall frequence_mhz() { large_integer ulfreq, ulticks, ulvalue......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE