virtualprotect (kernel32)
Last changed: -186.136.223.176

.
Summary

C# Signature:

[DllImport("kernel32.dll")]
static extern bool VirtualProtectEx(IntPtr hProcess, IntPtr lpAddress,
   UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);

VB.Net Signature:

    <DllImport("kernel32", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Public Shared Function VirtualProtectEx(ByVal hProcess As IntPtr, ByVal lpAddress As IntPtr, ByVal dwSize As IntPtr, ByVal flNewProtect As UInteger, ByRef lpflOldProtect As UInteger) As Boolean
    End Function

VB6 Signature:

    Public Declare Function VirtualProtectEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Any, ByVal dwSize As Long, ByVal flNewProtect As Long, ByVal lpflOldProtect As Long) As Long

Boo Signature:

[DllImport("kernel32.dll", SetLastError : true)]
def VirtualProtectEx(hProcess as IntPtr, lpAddress as IntPtr, dwSize as UIntPtr, flNewProtect as UInt32, ref lpflOldProtect as UInt32) as bool:
     pass
[DllImport("kernel32.dll", SetLastError : true)]
def VirtualProtect(lpAddress as IntPtr, dwSize as UIntPtr, flNewProtect as UInt32, ref lpflOldProtect as UInt32) as bool:
     pass

User-Defined Types:

None.

Notes:

dwSize should be IntPtr or UIntPtr because the underlying type is SIZE_T and varies with the platform.

Tips & Tricks:

Please add some!

    In Essential C# 2.0 by Mark Michaelis, it is mentioned ref is to be used for lpflOldProtect rather than out because the callee can ignore the data passed with ref.

Sample Code:

Please add some!

Alternative Managed API:

Do you know one? Please contribute it!

Documentation

http://msdn.microsoft.com/en-us/library/aa366899(VS.85).aspx