回调函数

原创 2013年12月04日 16:39:04

维基百科的解释:


In computer programming, a callback is a reference to a piece of executable code that is passed as an

argument to other code. This allows a lower-level software layer to call a subroutine (or function) defined

in a higher-level layer.


翻译:
在计算机编程中,一个回调(函数)是一个对一段可执行代码的引用,作为参数传递给其他的代码。这允许软件底层去调用在高层定义的子例程(或函数)

下面创建了一个sort.dll的动态链接库,它导出了一个名为CompareFunction的类型

typedef int (__stdcall *CompareFunction)(const byte*, const byte*)  //它就是回调函数的类型。


1 回调函数和Dll里面的普通导出函数有什么区别?

2 可否认为回调函数和Dll里面的普通导出函数是一样的?

3 如何实现DLL里面的回调函数?

4 轻松使用自己的回调函数
 

函数是你定义的,函数体里面该执行什么操作也是你规定。
但是这个函数却不需要你显式的调用(当然也可以)。
dll与exe之间的通讯方式有很多种,可以采用回调函数的方法实现:

简单实现的dll与exe之间的通讯, 其实就是利用了dll的导出函数,先向dll传递一个回调函数的地址,供dll和exe的通讯。exe和dll的通讯:exe直接执行dll导出函数即可。

若A.dll里面在直接使用另一个B.dll里面的函数,则A.dll主动。

(exe与exe之间的通讯:共享内存)

1 声明回调函数类型
  typedef int (WINAPI *pFCALLBACK)(int Param1, int Param2);

2 声明函数原形(在Exe端)
  int WINAPI CallBackFunc(int Param1,int Param2)

3 函数实现(在Exe端)
int CallBackFunc()
{
	Connect();
	KkRequest();
	DdRequest();
	
	return 0;
}

//在动态库里面定一个接口,如下,然后在program里面调用这个接口,同时传递你的回调函数指针
externc "C" int Start( char *buf1, char *buf2, pFCALLBACK *pFunction )
{
	int Param1, int Param2;
  ...
  pFunction( Param1, Param2 );
  ...
  
  return 0;
}

 

Exe端主动

LoadLibrary( A.dll )

Use  Start( pCallBackFunc ) //将先使用A.dll里面的函数,再使用Exe端的函数

FreeLibrary( A.dll )

 

 

http://www.programfan.com/article/163.html

相关文章推荐

回调函数详解

  • 2012年11月06日 10:47
  • 158KB
  • 下载

android中Activity的生命周期各回调函数的调用顺序学习心得

Activity是android里重要组件,主要提供用户界面的,一般每个App都会用到它,牢记activity的生命周期中的各个回调函数的回调顺序是非常必要的。google官方提供的那张图,基本说明了...

Android回调函数demo

  • 2015年12月08日 22:47
  • 1.4MB
  • 下载

C++回调函数详解

  • 2015年07月31日 13:50
  • 167KB
  • 下载

c回调函数(真不好理解)

什么是回调函数(callback)      模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了...
  • ghevinn
  • ghevinn
  • 2015年06月16日 18:50
  • 1650

测试 回调函数

  • 2012年02月05日 17:24
  • 153KB
  • 下载

理解和使用 JavaScript 中的回调函数

原文:http://javascriptissexy.com/在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String、Array、Number、Ob...
  • luoweifu
  • luoweifu
  • 2014年11月25日 01:20
  • 56606

Intent回调函数的用法

  • 2011年09月28日 23:43
  • 90KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:回调函数
举报原因:
原因补充:

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