Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than kernel32, prefix the name with the module name and a period.
<DllImport("Kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
Public Shared Function IsWow64Process( _
ByVal hProcess As Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid, _
ByRef wow64Process As Boolean) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
Boo Signature:
[DllImport("kernel32.dll")]
def IsWow64Process(hHandle as int, ref is64Bits as bool) as bool:
pass
Notes:
Requires Windows XP SP2, Windows Vista, Windows Server 2003 SP1 or Windows Server 2008
Tips & Tricks:
Use this instead of the processor architecture to determine if you are running on 64 bit. You can use GetProcAddess to determine if your OS supports it (XP SP2 or greater).
isWow64 = false;
if ((System.Environment.OSVersion.Version.Major == 5 && System.Environment.OSVersion.Version.Minor >= 1) ||
System.Environment.OSVersion.Version.Major > 5)
{
SafeProcessHandle processHandle = GetProcessHandle((uint)System.Diagnostics.Process.GetCurrentProcess().Id);
bool retVal;
if (!NativeMethods.IsWow64Process(processHandle, out retVal))
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
isWow64 = retVal;
}
VB.NET:
'Checks if the function exists on this OS, then calls it.
Private Shared Function IsWow64() As Boolean
Dim proc As Integer
proc = GetProcAddress(GetModuleHandle("Kernel32.dll"), "IsWow64Process")
If proc <= 0 Then
Return False
End If
'Dim processHandle As Long = GetProcessHandle(System.Diagnostics.Process.GetCurrentProcess().Id)
Dim retVal As Boolean
If IsWow64Process(GetCurrentProcess(), retVal) Then
Return retVal
Else
Return False
End If
End Function
'Uses Wow64 to see if the current process is running on Windows XP 64 bit
Public Shared Function IsWinXP64() As Boolean
'returns True if running Windows XP 64-bit
Dim osv As New OSVERSIONINFOEX
osv.dwOSVersionInfoSize = Marshal.SizeOf(osv)
Dim si As New SYSTEM_INFO
If GetVersionEx(osv) = 1 Then
GetSystemInfo(si)
Return (osv.dwMajorVersion = 5 And osv.dwMinorVersion = 2) And _
IsWow64()
Else
Return False
End If
End Function
'Uses Wow64 to see if the current process is running on Windows Vista 64 bit
Public Shared Function IsWinVista64() As Boolean
'returns True if running Windows Vista
Dim osv As New OSVERSIONINFOEX
osv.dwOSVersionInfoSize = Marshal.SizeOf(osv)
If GetVersionEx(osv) = 1 Then
Return (osv.wProductType = VER_NT_WORKSTATION) And _
(osv.dwMajorVersion = 6) And IsWow64()
Else
Return False
End If
End Function
TODO - a short description
4/5/2015 6:22:11 AM - -70.59.90.16
TODO - a short description
4/5/2015 6:22:11 AM - -70.59.90.16
Retrieves a pseudo handle for the current process.
10/28/2021 4:20:22 PM - -165.214.12.68
Please edit this page!
Do you have...
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).