(FASM)如何在不使用调用的情况下正确调用FindFirstFile和FindNextFile之类的WinAPI?

时间:2014-08-18 16:28:36

标签: winapi calling-convention fasm

我的问题如下:我有一个程序在当前目录中查找特定的文件扩展名。如果我使用FASM中包含的调用宏,代码可以工作。但是我需要直接使用call指令调用winAPI,并在堆栈中推送它们的参数。

我试过这个,但不能正常工作并使我的程序崩溃:

;Push parameters for the function
push FIND_STRUCT     ;Put in the stack the address of FIND_STRUCT
push file_extension  ;File extension
call FindFirstFile   ; find the first *.fly

请问,有人可以解释我如何正确调用像FindFirstFile和FindNextFile这样的WinAPI吗?谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

我发现API名称可能是指针。如果我是对的,调用API名称的方法是用方括号括起API名称,如下所示:[API_name]。这个技巧至少适用于我的FASM汇编程序和我。

如果您不使用方括号,则调用指针的地址,而不是指向的地址。因此,使用方括号并在其中包含API名称,以调用API地址,而不是其指针地址。

我希望我的问题的答案对于有同样问题的其他人有用。