Windows中GENERIC_WRITE常量的十六进制值?x64汇编CreateFileA写文件疑问
Windows中GENERIC_WRITE常量的十六进制值
你要找的GENERIC_WRITE常量的十六进制值是**40000000h**,巧的是你代码里已经给rdx寄存器赋值了这个值(mov rdx, 40000000h),这部分其实是完全正确的。
顺便补充几个常用的文件访问权限常量,方便你后续参考:
GENERIC_READ:80000000h(你已经知晓的)GENERIC_WRITE:40000000h- 若需要同时拥有读写权限,可将两个值按位或,得到
C0000000h(即80000000h | 40000000h)
再快速过一遍你的汇编代码,调用CreateFileA的参数设置是合理的:
rcx指向文件名,没问题rdx设置为GENERIC_WRITE权限,正确r8设为0表示独占访问的共享模式r9设为0使用默认安全属性- 栈上的参数依次是创建方式(
2对应CREATE_ALWAYS)、文件属性(80h对应FILE_ATTRIBUTE_NORMAL)、模板文件句柄(0)
如果后续写入文件时遇到问题,建议先检查CreateFileA返回的句柄FD2是否有效——如果返回值是INVALID_HANDLE_VALUE(即FFFFFFFFFFFFFFFFh),说明文件打开失败,需要排查路径、权限等问题。
内容的提问来源于stack exchange,提问作者SPFort
相关产品推荐
相关产品推荐

