You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MASM x64中调用CreateFileW始终返回ERROR_INVALID_PARAMETER的原因

MASM x64调用CreateFileW触发ERROR_INVALID_PARAMETER

我正在学习MASM x64,目前在调用CreateFileW读取txt文件时遇到问题:API返回INVALID_HANDLE_VALUE,调用GetLastError得到0x57(ERROR_INVALID_PARAMETER)。提前调用SetLastError(0)后结果依旧。

相关代码片段

; Open the file for GENERIC_READ
    CALL ClearRegisters
    LEA RCX, TextTestfilePath
    MOV RDX, 80000000h  ; GENERIC_READ
    MOV R8, 00000001h   ; FILE_SHARE_READ
    MOV R9, 0h          ; NULL
    SUB RSP, 40h
    PUSH 0h             ; NULL
    PUSH 80h            ; FILE_ATTRIBUTE_NORMAL
    PUSH 3              ; OPEN_EXISTING
    CALL CreateFileW
    ADD RSP, 40h
    CMP EAX, -1
    JNE p_skip_invalid_create_file
    CALL InternalError
p_skip_invalid_create_file::

已确认的细节

  • 输入的文件路径是"test.txt",文件位于源码目录中;TextTestfilePath存储了ReadConsoleW的输出内容(已截断末尾的CRLF),内存数据为0074 0065 0073 0074 002e 0074 0078 0074 0000,是有效的Unicode编码
  • 之前调用GetFileAttributesW成功,确认路径在内存中写入正确
  • 已核对RDX、R8及栈中参数的设置,符合对CreateFileW参数的理解
  • 已正确分配调用所需的shadow space

求助内容

希望有人能指出问题所在、需要额外检查的点,或者提供学习建议。如果能定位问题,麻烦同时推荐MASM x64的优质学习文档,帮助我和其他学习者提升。

内容的提问来源于stack exchange,提问作者FireController1847

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:30:09