移植性マクロ

RPC ツールは、生成されたスタブ ファイルとヘッダー ファイル内のデータ型と関数戻り値の型を各プラットフォームに固有の定義に関連付けることで、モデル、呼び出し、名前付け規則に依存しません。 これらのマクロ定義により、 __far の指定を必要とするデータ型と関数は、遠くのオブジェクトとして指定されます。

次の図は、MIDL コンパイラが RPC コンポーネント間の関数呼び出しに適用するマクロ定義を示しています。

MIDL が関数呼び出しに適用されるマクロ定義を示す図。

RPC マクロは次のように定義されます。

定義 説明
__RPC_API スタブによってユーザー アプリケーションに対して行われた呼び出しに適用されます。 どちらの関数も同じ実行可能プログラム内にあります。
__RPC_FAR ポインターの標準マクロ定義に適用されます。 このマクロ定義は、ユーザーが指定したすべての関数の署名の一部として表示されます。
__RPC_STUB ランタイム ライブラリからスタブへの呼び出しに適用されます。 これらの呼び出しはプライベートと見なすことができます。
__RPC_USER ランタイム ライブラリによってユーザー アプリケーションに対して行われた呼び出しに適用されます。 これらは、DLL とアプリケーションの境界を越えています。
RPC_ENTRY アプリケーションまたはスタブによってランタイム ライブラリに対して行われた呼び出しに適用されます。 このマクロ定義は、すべての RPC ランタイム関数に適用されます。

Microsoft RPC ランタイム ライブラリ、スタブ、およびサポート ルーチンと正しくリンクするには、一部のユーザー指定関数も関数定義にこれらのマクロを含める必要があります。 メモリ管理 ユーザー定義バインド ハンドル、および transmit_as 属性に関連付けられている関数を定義する場合は、マクロ __RPC_API を使用し、コンテキスト ハンドルに関連付けられているコンテキスト ランダウン ルーチンを定義するときにマクロ __RPC_USER を使用します。 関数を次のように指定します。

__RPC_USER midl_user_allocate(...)

__RPC_USER midl_user_free(...)

__RPC_USER handletype_bind(...)

__RPC_USER handletype_unbind(...)

__RPC_USER _to_local

型__RPC_USER_from_local

__RPC_USER type_to_xmit(...)

__RPC_USER _from_xmit(...)

__RPC_USER _free_local

__RPC_USER _free_inst(...)

__RPC_USER _free_xmit(...)

__RPC_USER context_rundown(...)

Note

これらの関数内のすべてのポインター パラメーターは、マクロ __RPC_FARを使用して指定する必要があります。

要件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Rpc.h