判断是否是64位操作系统

在看一个外国佬的代码的时候,看到一个API函数,然后随手查了查MSDN,原来是新加的用来判断是否是Win64位系统的,于是写了一个函数用来判断是否是64位操作系统:


ExpandedBlockStart.gif 代码
 1  function  IsWin64: Boolean;  
 2  var   
 3     Kernel32Handle: THandle;  
 4     IsWow64Process:  function (Handle: Windows.THandle;  var  Res: Windows.BOOL): Windows.BOOL;  stdcall ;  
 5     GetNativeSystemInfo:  procedure ( var  lpSystemInfo: TSystemInfo);  stdcall ;  
 6     isWoW64: Bool;  
 7     SystemInfo: TSystemInfo;  
 8  const   
 9     PROCESSOR_ARCHITECTURE_AMD64  =   9 ;  
10     PROCESSOR_ARCHITECTURE_IA64  =   6 ;  
11  begin   
12    Kernel32Handle : =  GetModuleHandle( ' KERNEL32.DLL ' );  
13     if  Kernel32Handle  =   0   then   
14      Kernel32Handle : =  LoadLibrary( ' KERNEL32.DLL ' );  
15     if  Kernel32Handle  <>   0   then   
16     begin   
17      IsWOW64Process : =  GetProcAddress(Kernel32Handle, ' IsWow64Process ' );  
18      GetNativeSystemInfo : =  GetProcAddress(Kernel32Handle, ' GetNativeSystemInfo ' );  
19       if  Assigned(IsWow64Process)  then   
20       begin   
21        IsWow64Process(GetCurrentProcess,isWoW64);  
22        Result : =  isWoW64  and  Assigned(GetNativeSystemInfo);  
23         if  Result  then   
24         begin   
25          GetNativeSystemInfo(SystemInfo);  
26          Result : =  (SystemInfo.wProcessorArchitecture  =  PROCESSOR_ARCHITECTURE_AMD64)  or   
27                    (SystemInfo.wProcessorArchitecture  =  PROCESSOR_ARCHITECTURE_IA64);  
28         end ;  
29       end   
30       else  Result : =  False;  
31     end   
32     else  Result : =  False;  
33  end ;  


需要注意是GetNativeSystemInfo 函数从Windows XP 开始才有, 而 IsWow64Process 函数从 Windows XP with SP2 以及 Windows Server 2003 with SP1 开始才有。 所以使用该函数的时候最好用GetProcAddress

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值