从 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 位模式编译,则一切正常。有什么问题?
我回答我自己的问题:启动程序时,需要对齐堆栈:sub rsp,08h,但尚未完成。