如何在MASM中调用指向函数的指针

时间:2011-09-20 14:39:16

标签: pointers assembly function-pointers invoke 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

1 个答案:

答案 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