関数を呼び出したプロセスの仮想アドレス空間に領域を確保
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の定数
このページにアクセスしようとすると例外を発生させるページのこと
flProtectの定数
MEM_COMMIT = &H1000 物理メモリに記憶領域を確保する
MEM_RESERVE = &H2000 記憶領域を予約する
MEM_TOP_DOWN = &H100000 できるだけ上位アドレスを使う
PAGE_READONLY = &H2 読み取り専用
PAGE_READWRITE = &H4 読み書き可能
PAGE_EXECUTE = &H10 実行可能
PAGE_EXECUTE_READ = &H20 実行、および読み取り可能
PAGE_GUARD = &H100 ガードページにする
PAGE_NOACCESS = &H1 不可
PAGE_NOCCHE = &H200 キャッシング不可