2012-10-16 32 views
1

我想确定我的应用程序运行的PC是x64还是x86。FASM - IsWow64Process - 检查布尔结果

这里是我当前的代码:

format PE GUI 4.0 
include "Win32A.Inc" 


entry start 


section ".idata" import data readable writable 

     library kernel32,"KERNEL32.DLL",user32,"USER32.DLL" 

     import kernel32,\ 
       IsWow64Process,"IsWow64Process",\ 
       GetCurrentProcess,"GetCurrentProcess",\ 
       ExitProcess,"ExitProcess" 

     import user32,\ 
       MessageBox,"MessageBoxA" 

section '.data' data readable writeable 

hProcess  dd ? 
hResult   dd ? 

section '.code' code readable executable 

start: 

     invoke  GetCurrentProcess 
     mov  [hProcess],eax 
     invoke  IsWow64Process,hProcess,hResult 
     cmp  [hResult],1 
     je   Is64 
     cmp  [hResult],0 
     je   Is32 
     invoke  ExitProcess,0 

Is64: 

      invoke  MessageBox,0,'64','AR',0 
      invoke  ExitProcess,0 
Is32: 

      invoke  MessageBox,0,'32','AR',0 
      invoke  ExitProcess,0 

它只是崩溃后执行。

什么是检查布尔值的正确方法,我正确地做那部分?

感谢您解决此问题的任何帮助。

回答

1

为了能够在线声明字符串,你需要包括扩展头:

include "Win32AX.Inc" 

或者“64”等将被解释为常数。

你还没有通过hProcess作为一种价值:

invoke  IsWow64Process,[hProcess],hResult