次の方法で共有


RpcSmAllocate 関数 (rpcndr.h)

RpcSmAllocate 関数は、RPC スタブ メモリ管理機能内でメモリを割り当て、割り当てられたメモリまたは NULL へのポインターを返します。

構文

void * RpcSmAllocate(
  size_t     Size,
  RPC_STATUS *pStatus
);

パラメーター

Size

割り当てるメモリのサイズ (バイト単位)。

pStatus

返された状態へのポインター。

戻り値

説明
RPC_S_OK
呼び出しは成功しました。
RPC_S_OUT_OF_MEMORY
システムがメモリ不足です。
 
メモ 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。
 

解説

RpcSmAllocate ルーチンを使用すると、アプリケーションは RPC スタブメモリ管理環境内でメモリを割り当てることができます。 RpcSmAllocate を呼び出す前に、メモリ管理環境が既に確立されている必要があります。 スタブ内で呼び出されるメモリ管理の場合、サーバー スタブ自体が必要な環境を確立する可能性があります。 詳細については、「 RpcSmEnableAllocate」を参照してください。 RpcSmAllocate を使用してスタブから呼び出されないメモリを割り当てる場合、アプリケーションは RpcSmEnableAllocate を呼び出して、必要なメモリ管理環境を確立する必要があります。

RpcSmAllocate ルーチンは、呼び出しが成功した場合、割り当てられたメモリへのポインターを返します。 それ以外の場合は、 NULL が返されます。

スタブによってメモリ管理が確立されると、 RpcSmAllocate によって割り当てられたメモリが解放されます。 アプリケーションは 、RpcSmFree を呼び出して呼び出し元のスタブに戻る前に、このようなメモリを解放できます。

これに対し、アプリケーションがメモリ管理を確立するときは、割り当てられたメモリを解放する必要があります。 これを行う場合は、 RpcSmFree または RpcSmDisableAllocate を呼び出します。

スタブ メモリ管理環境内で同じメモリを管理するために、複数のスレッドで RpcSmAllocateRpcSmFree を呼び出すことができます。 この場合、スレッドは同じスタブ メモリ管理スレッド ハンドルを共有する必要があります。 アプリケーションは、 RpcSmGetThreadHandle と RpcSmSetThreadHandle を呼び出して、スレッド ハンドルをスレッドからスレッド に渡します

詳細については、「 メモリ管理」を参照してください。

要件

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

関連項目

RpcSmDisableAllocate

RpcSmEnableAllocate

RpcSmFree

RpcSmGetThreadHandle

RpcSmSetThreadHandle