在看一个外国佬的代码的时候,看到一个API函数,然后随手查了查MSDN,原来是新加的用来判断是否是Win64位系统的,于是写了一个函数用来判断是否是64位操作系统:
代码
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 ;
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 ;
本文转自 不得闲 博客园博客,原文链接: http://www.cnblogs.com/DxSoft/archive/2010/01/01/1637656.html
,如需转载请自行联系原作者