LocalLock 関数 (winbase.h)

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

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

構文

LPVOID LocalLock(
  [in] HLOCAL hMem
);

パラメーター

[in] hMem

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

戻り値

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

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

解説

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

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

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

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

要件

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

関連項目

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

LocalAlloc

LocalFlags

LocalReAlloc

LocalUnlock

メモリ管理関数