VirtualAlloc

機能
関数を呼び出したプロセスの仮想アドレス空間に領域を確保
Declare Sub VirtualAlloc Lib "kernel32.dll" _
(ByVal lpAddress As Long, ByVal dwSize As Long, _
ByVal flAllocationType As Long, ByVal flProtect As Long)
Declare Sub VirtualAlloc Lib "kernel32.dll" _
(ByVal lpAddress As Integer, ByVal dwSize As Integer, _
ByVal flAllocationType As Integer, ByVal flProtect As Integer)

LPVOID VirtualAlloc(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flAllocationType,
DWORD flProtect
);
引数
lpAddress

確保するメモリ領域の希望開始アドレス
dwSize
同、サイズ
flAllocationType
確保する方法をしてする定数の組み合わせ
flProtect
アクセス方法を指定する定数の組み合わせ
戻り値
正常終了のとき  確保したメモリ領域のペースアドレス
エラーのとき    0
備考
「ガードページ」とは
このページにアクセスしようとすると例外を発生させるページのこと
flAllocationTypeの定数

MEM_COMMIT = &H1000        物理メモリに記憶領域を確保する
MEM_RESERVE = &H2000       記憶領域を予約する
MEM_TOP_DOWN = &H100000    できるだけ上位アドレスを使う
flProtectの定数

PAGE_READONLY = &H2        読み取り専用
PAGE_READWRITE = &H4       読み書き可能
PAGE_EXECUTE = &H10        実行可能
PAGE_EXECUTE_READ = &H20   実行、および読み取り可能
PAGE_GUARD = &H100         ガードページにする
PAGE_NOACCESS = &H1        不可
PAGE_NOCCHE = &H200        キャッシング不可