Win32API: GlobalReAlloc

グローバル メモリ オブジェクトの再確保を行います。


定義
Declare Function GlobalReAlloc Lib "kernel32" _
   (hMem As HGLOBAL, _
    dwBytes As DWord, _
    uFlags As DWord) As HGLOBAL
hMem
メモリ オブジェクトのハンドル、またはメモリ ブロックへのポインタを指定します。

dwBytes
再確保するメモリのバイト数を指定します。uFlags パラメータに GMEM_MOVEABLE フラグを指定し、このパラメータに 0 を指定したときは、破棄マークが付けられたメモリ オブジェクトが作成されます(後にメモリを確保する場合などに有効です)。uFlags パラメータに GMEM_MODIFY フラグを指定すると、このパラメータは無視されます。

uFlags
メモリ再確保の方法を、以下の定数を組み合わせて指定します。
定数説明
GMEM_MODIFYメモリ オブジェクトの属性変更を行います。サイズ変更は行われず、dwBytes パラメータは無視されます。
GMEM_MOVEABLEGMEM_MODIFY フラグと共に指定すると、固定メモリ オブジェクトを、移動可能メモリ オブジェクトに変更します。
GMEM_ZEROINIT再確保したメモリ サイズが以前のメモリ サイズより大きいときに、拡張領域を 0 で初期化します。

戻り値

固定メモリを再確保したときは、メモリ ブロックへのポインタが返ります。
移動可能メモリを再確保したときは、メモリ オブジェクトのハンドルが返ります。
関数が失敗すると、0 が返ります。

解説

作成したメモリ オブジェクトが不要になったときは、GlobalFree関数を使用して破棄して下さい。

dwBytes パラメータで指定されたバイト数より、実際に確保されたバイト数のほうが大きい場合があります。実際に確保されたバイト数を調べるには、GlobalSize関数を使用して下さい。

固定メモリを確保したときは、戻り値のポインタが示すメモリにアクセスすることが可能です。
移動可能メモリを確保したときは、メモリ オブジェクトのハンドルを元に、GlobalLock関数を使用してメモリ ブロックへのポインタを取得する必要があります。

環境情報

インクルード ファイル: api_system.sbp 内で定義済み
DLLファイル: kernel32.dll


GlobalAlloc関数GlobalFree関数GlobalLock関数GlobalSize関数