P/Invoke的全称是PlatformInvoke(平台调用)它实际上是一种函数调用机制通 过P/Invoke我们就可以调用非托管DLL中的函数。P/Invoke依次执行以下操作:1.查找包含该函数的非托管DLL2.将该非托管DLL加载到内存中3.查找函数在内存中的地址并将其参数按照函数的调用约定...
分类:
编程语言 时间:
2015-01-05 12:29:22
阅读次数:
252
以下结果是由VS2010里面测试得出:------------------------------------------------------------------/*函数名、类名、名称空间、@@、函数访问级别、调用约定、返回类型、参数类型、有无参数(@Z、XZ)函数名: ?函数名类名: @类...
分类:
编程语言 时间:
2014-12-23 19:22:07
阅读次数:
264
调用约定(Calling convention),决定以下内容:
a. 函数参数的压栈顺序。
b. 由调用者还是被调用者把参数弹出栈。
c. 以及产生函数修饰名的方法。
常用的调用约定为__stdcall、__cdecl、__fastcall。
1) __stdcall。
StandardCall的缩写,约定内容:
a. 参数从右向左压入堆栈。
b. 函数被调用者修改堆栈。...
分类:
编程语言 时间:
2014-12-12 13:24:06
阅读次数:
188
随着个人计算机的普及,Windows用户也越来越多。在Windows环境下的应用也越来越多样性,这就需要开发人员具备各种各样的技术能以适工作之需。对于一般的应用需求来说,使用微软提供的公开API即可完成绝大部分功能。但还有一些特殊的需求,需要从第三方进程中获取数据,然后再将这些数据进行处理并返回给原进程。典型的应用例如,在应用层实现的文件透明加密。因为微软所提供的公开API一般都是实现在系统的DLL中的,这就需要使用到HookAPI技术。
近些年来,面向对象编程的方法已经非常成熟,在这方面,比较典型的就是...
分类:
其他好文 时间:
2014-12-08 23:05:21
阅读次数:
1917
VC中涉及到调用约定的概念,特别是回调函数CALLBACK,WinAPI等。
这些其实都归结到调用约定上,VC中默认使用的时cdecl的C语言调用约定,而CALLBACK,WINAPI为stdcall即PASCAL调用约定。这两种约定在定义参数传递顺序及堆栈清楚方面有些差异。DELPHI采用的也是PASCAL约定,因此用DELPHI封装的函数在VC中调用时最好指定其约定是stdc...
分类:
其他好文 时间:
2014-11-27 22:04:00
阅读次数:
222
到达一个已知的反汇编位置:G。栈帧是在程序的运行时栈中分配的内存块,专门用于特定的函数调用。存在规定如何向函数传递参数的调用约定,但不存在规定函数的局部变量布局的约定。编译器的第一个任务是,计算出函数的局部变量所需的空间。编译器的第二个任务,则是确定这些变量是否可在CPU寄存器中分配,或者它们是否必...
分类:
其他好文 时间:
2014-11-25 22:45:02
阅读次数:
239
下面是MSDN的常用Window类型:1.调用函数的接口类型: 数据类型描述APIENTRY 应用程序入口,调用约定的系统功能,在WinDef.h定义如下#define APIENTRY WINAPIWINAPI应用程序入口,调用约定的系统功能,在WinDef.h定义如下#define WINAP....
函数调用约定和堆栈1 什么是堆栈编译器一般使用堆栈实现函数调用。堆栈是存储器的一个区域,嵌入式环境有时需要程序员自己定义一个数组作为堆栈。Windows为每个线程自动维护一个堆栈,堆栈的大小可以设置。编译器使用堆栈来堆放每个函数的参数、局部变量等信息。函数调用经常是嵌套的,在同一时刻,堆栈中会有多个...
分类:
其他好文 时间:
2014-11-11 10:32:46
阅读次数:
215
函数调用约定,是指当一个函数被调用时,函数的参数会被传递给被调用的函数和返回值会被返回给调用函数。函数的调用约定就是描述参数是怎么传递和由谁平衡堆栈的,当然还有返回值。 __stdcall,__cdecl,__fastcall,__thiscall,__nakedcall,__pascal 参数传递...
分类:
其他好文 时间:
2014-11-09 19:20:12
阅读次数:
212
首先,__cdecl,c declaration,C风格声明。或者 c default calling(笔者瞎编的)。(那么问题来了,为什么PASCAL风格被称为std?)调用约定的内容包括三点:参数出入栈顺序,弹栈工作由谁做,以及产生函数名的方式(renaming?)1.在参数入栈顺序上,__cd...
分类:
其他好文 时间:
2014-10-27 12:14:41
阅读次数:
194