delphi – 什么是safecall?

我正在使用VB6创建一个ActiveX EXE,唯一的例子就是用Delphi编写。

阅读示例代码,我注意到有一些函数的签名后面是safecall关键字。以下是一个例子:

function AddSymbol(ASymbol: OleVariant): WordBool; safecall;

这个关键字的目的是什么?

解决方法

Safecall从左到右传递参数,而不是pascal或从左到右注册(默认)

使用safecall,过程或函数在返回时从堆栈中删除参数(如pascal,但不像cdecl那样由调用者决定)

Safecall实现异常“防火墙”; esp在Win32上,这实现了进程间COM错误通知。否则将与stdcall(与win api一起使用的其他调用约定)相同,

相关文章

ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的功能是:将源操作数送到目的操作数中,即:...
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂...
API原型: Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (By...