천객만래 [千客萬來] (It has an interminable succession of visitors)

'IsWow64Process'에 해당되는 글 2건

  1. 2012.01.13 [개발/delphi] 64bit OS 판별
  2. 2010.08.27 [개발] c#,vc++ OS가 x86 인지 x64인지 알수 있는 방법
[개발/delphi] 64bit OS 판별

 // 64bit OS 판별
function Is64BitOS: Boolean;
type
  TIsWow64Process = function(Handle:THandle; var IsWow64 : BOOL) : BOOL; stdcall;
var
  hKernel32 : Integer;
  IsWow64Process : TIsWow64Process;
  IsWow64 : BOOL;
begin
  // we can check if the operating system is 64-bit by checking whether
  // we are running under Wow64 (we are 32-bit code). We must check if this
  // function is implemented before we call it, because some older versions
  // of kernel32.dll (eg. Windows 2000) don't know about it.
  // see http://msdn.microsoft.com/en-us/library/ms684139%28VS.85%29.aspx
  Result := False;
  hKernel32 := LoadLibrary('kernel32.dll');
  if (hKernel32 = 0) then RaiseLastOSError;
  @IsWow64Process := GetProcAddress(hkernel32, 'IsWow64Process');
  if Assigned(IsWow64Process) then begin
    IsWow64 := False;
    if (IsWow64Process(GetCurrentProcess, IsWow64)) then begin
      Result := IsWow64;
    end
    else RaiseLastOSError;
  end;
  FreeLibrary(hKernel32);
end;
Posted by SB패밀리

실행되는 프로그램의 OS의 32bit인지 64bit인지 알수 있는 방법.
IsWow64Process 함수에서 return 값이 false라면 64bit 프로세서이다.
흠.

[DllImport("kernel32.dll")] 
public static extern bool IsWow64Process(System.IntPtr hProcess, out bool lpSystemInfo); 
 
public static bool IsWow64Process1 
{ 
   
get 
   
{ 
       
bool retVal = false; 
       
IsWow64Process(System.Diagnostics.Process.GetCurrentProcess().Handle, out retVal); 
       
return retVal; 
   
} 
}




Visual C++


#include <windows.h>
#include <stdio.h>

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS fnIsWow64Process;

BOOL IsWow64()
{
    BOOL bIsWow64 = FALSE;

    //IsWow64Process is not available on all supported versions of Windows.
    //Use GetModuleHandle to get a handle to the DLL that contains the function
    //and GetProcAddress to get a pointer to the function if available.

    fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
        GetModuleHandle(TEXT("kernel32")),"IsWow64Process");

    if(NULL != fnIsWow64Process)
    {
        if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
        {
            //handle error
        }
    }
    return bIsWow64;
}

void main()
{
    if(IsWow64())
        printf("The process is running under WOW64.\n");
    else
        printf("The process is not running under WOW64.\n");
}

Posted by SB패밀리