【发布时间】:2018-04-19 02:43:55
【问题描述】:
我正在尝试使用 x64 程序集中的 CreatFileA 系统调用打开一个文件以进行写入,但是为此我需要指定所需的访问权限。我不知道 GENERIC_WRITE 的常量是什么,GENERIC_READ 常量是 80000000h。
; create the file
lea rcx, fileName
mov rdx, 40000000h
xor r8, r8
xor r9, r9
mov QWORD PTR [rsp+48h-28h], 2
mov QWORD PTR [rsp+48h-20h], 80h
mov QWORD PTR [rsp+48h-18h], 0
call CreateFileA
mov FD2, rax
; write to the new file
lea rcx, FD2
lea rdx, buffer
mov r8, len
lea r9, written
mov QWORD PTR [rsp+48h-28h], 0
call WriteFile
mov writeResult, rax
【问题讨论】:
-
您能进一步解释该页面吗?谢谢
-
它列出了位及其含义。但考虑 GENERIC_READ。您知道该值是设置的最左边的位,因此 0x80000000 。 GENERIC_WRITE 将是被设置的第二个最左边的位或 0x40000000
-
你也可以只看winnt.h