windows中的通用写入常量十六进制值是多少?
我试图在x64中使用CreatFileA系统调用程序集打开一个文件进行写入,但是为了这样做,我需要指定所需的访问权限。我不知道泛型写的常数是什么,泛型读的常数是80000000hwindows中的通用写入常量十六进制值是多少?,windows,assembly,64-bit,Windows,Assembly,64 Bit,我试图在x64中使用CreatFileA系统调用程序集打开一个文件进行写入,但是为了这样做,我需要指定所需的访问权限。我不知道泛型写的常数是什么,泛型读的常数是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+
; 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
将评论转化为答案,这样就可以结束讨论 正如Michael指出的,构成访问掩码的位是定义的 使用它,我们可以看到泛型_读取为0x8000000,泛型_写入为0x40000000 一般来说,您可能应该查看Windows的标题,以获得所有Windows常量的最终和最新值。这个在温特h 针对下面的问题,加载要传递给WriteFile的句柄的汇编代码不正确。您正在使用保存从CreateFile返回的值
mov FD2, rax
但是你可以使用
lea rcx, FD2
lea
将返回指向句柄的指针,而不是句柄本身
因此,这一次,当Windows返回句柄无效错误消息时,它真的很有帮助。(暗示)它告诉了问题的来源是哪个参数,以及(大致)问题是什么。将评论转化为答案,这样就可以解决问题 正如Michael指出的,构成访问掩码的位是定义的 使用它,我们可以看到泛型_读取为0x8000000,泛型_写入为0x40000000 一般来说,您可能应该查看Windows的标题,以获得所有Windows常量的最终和最新值。这个在温特h 针对下面的问题,加载要传递给WriteFile的句柄的汇编代码不正确。您正在使用保存从CreateFile返回的值
mov FD2, rax
但是你可以使用
lea rcx, FD2
lea
将返回指向句柄的指针,而不是句柄本身
因此,这一次,当Windows返回句柄无效错误消息时,它真的很有帮助。(暗示)它告诉了问题的根源是哪个参数,以及(大致)问题是什么。你能进一步解释一下这一页吗?thanksIt列出了这些片段及其含义。但是请考虑GANICICYRADE。您知道该值是设置为0x8000000的最左边的位。GENERIC_WRITE将是设置的第二个最左边的位或0x4000000。这列出了具体的值:您也可以查看winnt.hc,您可以进一步解释该页面吗?thanksIt列出了这些片段及其含义。但是请考虑GANICICYRADE。您知道该值是设置为0x8000000的最左边的位。GENERIC_WRITE将是设置的第二个最左边的位或0x4000000。这列出了具体的值:您也可以只查看winnt.h