GlobalLock 関数 (winbase.h)

グローバル メモリ オブジェクトをロックし、オブジェクトのメモリ ブロックの最初のバイトへのポインターを返します。

メモ グローバル関数はオーバーヘッドが大きく、他のメモリ管理機能よりも機能が少なくなります。 新しいアプリケーションでは、グローバル 関数 を使用する必要があるとドキュメントに記載されていない限り、ヒープ関数を使用する必要があります。 詳細については、「 グローバル関数とローカル関数」を参照してください。
 

構文

LPVOID GlobalLock(
  [in] HGLOBAL hMem
);

パラメーター

[in] hMem

グローバル メモリ オブジェクトへのハンドル。 このハンドルは、GlobalAlloc 関数または GlobalReAlloc 関数によって返されます。

戻り値

関数が成功した場合、戻り値はメモリ ブロックの最初のバイトへのポインターです。

関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

各メモリ オブジェクトの内部データ構造には、最初は 0 であるロックカウントが含まれます。 移動可能なメモリ オブジェクトの場合、 GlobalLock はカウントを 1 ずつインクリメントし、 GlobalUnlock 関数はカウントを 1 ずつデクリメントします。 プロセスがオブジェクトの GlobalLock に対して正常に呼び出すたびに、 対応する GlobalUnlock の呼び出しと一致する必要があります。 ロックされたメモリは、 GlobalReAlloc 関数を使用してメモリ オブジェクトが再割り当てされない限り、移動または破棄されません。 ロックされたメモリ オブジェクトのメモリ ブロックは、ロックカウントが 0 にデクリメントされるまでロックされたままになり、その時点で移動または破棄できます。

GMEM_FIXEDで割り当てられたメモリ オブジェクトのロックカウントは常に 0 です。 これらのオブジェクトの場合、返されるポインターの値は、指定したハンドルの値と等しくなります。

指定されたメモリ ブロックが破棄された場合、またはメモリ ブロックのサイズが 0 の場合、この関数は NULL を返します。

破棄されたオブジェクトのロックカウントは常に 0 です。

要件

   
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

グローバル関数とローカル関数

GlobalAlloc

GlobalReAlloc

GlobalUnlock

メモリ管理関数