プロシージャのシリアル化を使用すると、プロシージャに [encode] 属性または [decode] 属性のラベルが付けられます。 通常のリモート スタブを生成する代わりに、コンパイラはルーチンのシリアル化スタブを生成します。
リモート プロシージャがリモート呼び出しを行うためにバインディング ハンドルを使用する必要があるのと同様に、シリアル化プロシージャではシリアル化ハンドルを使用してシリアル化サービスを使用する必要があります。 シリアル化ハンドルが指定されていない場合は、既定の暗黙的ハンドルを使用して呼び出しを指示します。 一方、シリアル化ハンドルが指定されている場合は、ルーチンの明示的な handle_t 引数として、または [explicit_handle] 属性を使用して、呼び出しの引数として有効なハンドルを渡す必要があります。 有効なシリアル化ハンドルを作成する方法の詳細については、「シリアル化ハンドルの」、固定バッファー エンコードの例、および増分エンコード の例を参照してください。
手記
Microsoft RPC を使用すると、リモートプロシージャとシリアル化プロシージャを 1 つのインターフェイスで混在できます。 ただし、その際は注意が必要です。
暗黙的なバインド ハンドルを持つリモート プロシージャの場合、MIDL コンパイラは、handle_t型のグローバル ハンドル変数を生成します。 暗黙的なシリアル化ハンドルを持つプロシージャと型では、この同じグローバル ハンドル変数が使用されます。
暗黙的ハンドルの場合、グローバル暗黙的ハンドルは、リモート呼び出しの前に有効なバインディング ハンドルに設定する必要があります。 暗黙的なハンドルは、シリアル化呼び出しの前に有効なシリアル化ハンドルに設定する必要があります。 そのため、プロシージャをリモートとシリアル化の両方にすることはできません。 いずれか一方である必要があります。