所以我試圖調用一個指向函數的指針,但是我失敗了。有人可以幫忙嗎?如何在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位應用程序中)而不是雙字! –