您能告诉我如何使此代码能够看到 C: 驱动器并正常工作吗?
include \masm64\include64\masm64rt.inc
.data
BS equ 128
Fname BYTE "C:\",0 ;
ms1 db "Free space on disk (in bytes) ",0
totalsize dq ?
hFile dq ?
buf db BS dup (?)
fmt db "%llu",0
ms2 db "Error!!Disk not found",0
.code
entry_point proc
invoke CreateFile, ADDR Fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
mov hFile, rax
cmp hFile, INVALID_HANDLE_VALUE
je m1
invoke GetDiskFreeSpaceEx, ADDR Fname, NULL, NULL, addr totalsize
mov rax, totalsize
mov rcx, OFFSET buf
mov rdx, OFFSET fmt
call wsprintf
invoke MessageBox, NULL, ADDR buf, ADDR ms1, MB_YESNO
jmp m2
m1:
invoke MessageBox, NULL, ADDR ms2, ADDR ms1, MB_ABORTRETRYIGNORE
m2:
invoke ExitProcess, 0
entry_point endp
end
没有可供链接器查找的
CreateFile()
或 MessageBox()
函数。它们实际上是 C/C++ 预处理器宏,映射到实际函数 CreateFileA()
、CreateFileW()
、MessageBoxA()
和 MessageBoxW()
,具体取决于项目配置。在您的情况下,您需要使用 A
函数,因为您使用的是字节字符串。