Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows中的通用写入常量十六进制值是多少?_Windows_Assembly_64 Bit - Fatal编程技术网

windows中的通用写入常量十六进制值是多少?

windows中的通用写入常量十六进制值是多少?,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+

我试图在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+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