所以我试图调用指向函数的指针,但是我失败了。有人可以帮忙吗?
我正在存储函数指针,如下所示:
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
答案 0 :(得分:0)
我刚刚在这里找到答案
http://webster.cs.ucr.edu/Page_TechDocs/MASMDoc/ProgrammersGuide/Chap_07.htm
这就是你要做的事情:
.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
FUNCPROTO TYPEDEF PROTO
FUNCPTR TYPEDEF PTR FUNCPROTO
.data?
pFunction FUNCPTR ?
.code
start:
mov pFunction,offset Function
invoke FUNCPTR ptr pFunction
push 0
call ExitProcess
Function proc
ret
Function endp
end start