所以我试图调用一个指向函数的指针,但是我失败了。有人可以帮忙吗?如何在MASM中调用指向函数的指针
我存储函数指针像这样:
mov pFunction,offset Function
其实我可以得到该呼叫是通过这样的工作:
call pFunction
但当我尝试这个办法:
invoke pFunction
我得到“错误A2190:INVOKE需要过程原型”。
如果我试试这个:
invoke Function pFunction
我得到 “错误A2206:缺少表达式运算符”。
任何想法?
PS:这里是整体上市:
.386
.model flat,stdcall
option casemap: none
include d:\masm32\include\windows.inc
include d:\masm32\include\kernel32.inc
includelib d:\masm32\lib\kernel32.lib
Function proto
.data?
pFunction dd ?
.code
start:
mov pFunction,offset Function
invoke pFunction
push 0
call ExitProcess
Function proc
ret
Function endp
end start
我只是在这里找到答案 http://webster.cs.uc r.edu/Page_TechDocs/MASMDoc/ProgrammersGuide/Chap_07.htm 尽管它对我来说似乎有点不可思议......(为什么我只能在8小时后回答自己的问题?!) – user812775
INVOKE是一个可能不是“在所有情况下完成?很明显,如果你不介意做自己的设置/拆卸,CALL将起作用(在过去的日子里,我们一直这么做,因为汇编中没有“INVOKE”)。另外值得注意的是,您引用的文档声称INVOKE扩展了短于预期项目的宽度。我遇到了一个并不那么近的案例。我有一个INVOKE,它在返回时导致崩溃。在OlyDbg中打开它,发现它是在推送一个项目(在32位应用程序中)而不是双字! –