判断是否是64位操作系统

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

  function IsWin64: Boolean;  
  var  
     Kernel32Handle: THandle;  
     IsWow64Process: function(Handle: Windows.THandle; var Res: Windows.BOOL): Windows.BOOL; stdcall;  
     GetNativeSystemInfo: procedure(var lpSystemInfo: TSystemInfo); stdcall;  
     isWoW64: Bool;  
     SystemInfo: TSystemInfo;  
  const  
     PROCESSOR_ARCHITECTURE_AMD64 = 9;  
    PROCESSOR_ARCHITECTURE_IA64 = 6;  
 begin  
   Kernel32Handle := GetModuleHandle('KERNEL32.DLL');  
   if Kernel32Handle = 0 then  
     Kernel32Handle := LoadLibrary('KERNEL32.DLL');  
   if Kernel32Handle <> 0 then  
   begin  
     IsWOW64Process := GetProcAddress(Kernel32Handle,'IsWow64Process');  
     GetNativeSystemInfo := GetProcAddress(Kernel32Handle,'GetNativeSystemInfo');  
     if Assigned(IsWow64Process) then  
     begin  
       IsWow64Process(GetCurrentProcess,isWoW64);  
       Result := isWoW64 and Assigned(GetNativeSystemInfo);  
       if Result then  
       begin  
         GetNativeSystemInfo(SystemInfo);  
         Result := (SystemInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64) or  
                   (SystemInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_IA64);  
       end;  
     end  
     else Result := False;  
   end  
   else Result := False;  
 end;  

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

9 + = 13