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
相关产品推荐
相关产品推荐

