2

我在 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

不管用。

有谁知道这个常量的值,以便我可以手动输入它?

任何帮助表示赞赏。谢谢


在 Jens Bjö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 

再次感谢 Jens Björnhager!

4

2 回答 2

5

INVALID_FILE_ATTRIBUTES被定义为-1 ($ffffffff),所以检查一下。

于 2012-09-26T04:17:29.970 回答
3

您应该使用正确定义的宏 INVALID_FILE_ATTRIBUTES,而不是在代码中使用幻数。该宏定义在 fasm 安装的 INCLUDE 文件夹中的 kernel32.inc 中。你可以像这样包含这个inc文件

包括 'c:\path\to\fasm\INCLUDE\EQUATES\KERNEL32.INC'

或者你可以只添加高级别的包括

包括 'c:\path\to\fasm\INCLUDE\win32a.inc' (或 win32w.inc,如果您使用 unicode 版本的 winapi)

或者,如果您在 fasmw.ini 的 Environment 部分设置 include 值:

包括“win32a.inc”

于 2012-09-26T05:53:54.423 回答