2

GetFileAttributesAを使用して、FASMにファイルが存在するかどうかを判断しています。ファイルが存在しない場合、戻り値は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!

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'

または、次のような高レベルのインクルードのみを追加できます

include 'c:\path\to\fasm\INCLUDE\win32a.inc' (Unicode バージョンの winapi を使用している場合は win32w.inc)

または、fasmw.ini の Environment セクションに include 値を設定した場合:

「win32a.inc」を含める

于 2012-09-26T05:53:54.423 に答える