FASM 64 位调用 winmm.dll 时出现异常

问题描述 投票:0回答:1

从 winmm.dll 调用任何函数都会导致异常错误 (0xc0000005)。

format PE64 GUI 5.0

entry start

include 'win64a.inc'

section '.code' code readable executable 
start: 
 invoke mixerGetNumDevs 
 invoke ExitProcess

section '.idata' import data readable 
library kernel, 'kernel32.dll', wmm, 'winmm.dll'
import kernel, ExitProcess, 'ExitProcess'
import wmm, mixerGetNumDevs, 'mixerGetNumDevs' 

如果以 32 位模式编译,则一切正常。 怎么了?

fasm
1个回答
0
投票

我回答我自己的问题: 启动程序时需要对齐堆栈:sub rsp, 08h,这个没做。

开始: 子 rsp,08h 调用mixerGetNumDevs 调用 ExitProcess

© www.soinside.com 2019 - 2024. All rights reserved.