我有一个 64 位 masm 代码,可以输出到控制台。问题是,通过使用WriteConsoleW,我无法重定向命令或任何内容的输出,因为它只写入控制台缓冲区。但使用WriteFile会在每个字符之间添加空格,因为 16 位字符的高位已清零。如何使用 打印 Unicode 文本WriteFile?
我在这里读到我可以使用 BOM,但这对我不起作用(我添加了另一个调用,该调用在第二次调用之前WriteFile写入两个字节,但它只打印了一个白色矩形,没有其他内容)。FF FEWriteFile
这是代码:
extern GetStdHandle: proc
extern WriteConsoleW: proc
.data?
written dq ?
.data
string dw 0048h,0065h,006ch,006ch,006fh,0020h,0057h,006fh,0072h,006ch,0064h,0021h
len equ $-string
.code
main proc
push rbp
mov rbp, rsp
sub rsp, 020h
and rsp, -10h
mov rcx, -11
call GetStdHandle
mov rcx, rax
mov rdx, offset string
mov r8, len
mov r9, written
call WriteConsoleW
add rsp, 020h …Run Code Online (Sandbox Code Playgroud)