我在FASM中使用GetFileAttributesA来确定文件是否存在。我知道如果文件不存在,返回值将为INVALID_FILE_ATTRIBUTES,但我不知道如何检查此值。
我的代码:
invoke GetFileAttributes,lpFileName
cmp eax,IDK WHAT TO CHECK FOR
je notfound
jne found
invoke ExitProcess,0
看作编译器无法将INVALID_FILE_ATTRIBUTES识别为值:
cmp eax,INVALID_FILE_ATTRIBUTES
不行。
有没有人知道这个常数的值,所以我可以手动输入它?
感谢任何帮助。感谢
在JensBjörnhager的回复之后,以下是其他任何感兴趣的人的工作代码:
invoke GetFileAttributes,lpFileName
cmp eax,-1
je notfound
jne found
invoke ExitProcess,0
甚至:
invoke GetFileAttributes,lpFileName
cmp eax,$ffffffff
je notfound
jne found
invoke ExitProcess,0
再次感谢JensBjörnhager!
答案 0 :(得分:5)
INVALID_FILE_ATTRIBUTES
定义为 -1($ ffffffff),因此请检查。
答案 1 :(得分:2)
您应该使用正确定义的宏INVALID_FILE_ATTRIBUTES,而不是在代码中使用幻数。这个宏在fasm安装的INCLUDE文件夹中的kernel32.inc中定义。您可以像这样包含此inc文件
包括'c:\ path \ to \ fasm \ INCLUDE \ EQUATES \ KERNEL32.INC'
或者您只能添加高级别的内容,例如
包括'c:\ path \ to \ fasm \ INCLUDE \ win32a.inc'(如果使用unicode版本的winapi,则为win32w.inc)
或者如果你在fasmw.ini的Environment部分中设置include值:
包括'win32a.inc'