プロシージャのシリアル化

プロシージャのシリアル化を使用すると、プロシージャに [encode] 属性または [decode] 属性のラベルが付けられます。 通常のリモート スタブを生成する代わりに、コンパイラはルーチンのシリアル化スタブを生成します。

リモート プロシージャがバインド ハンドルを使用してリモート呼び出しを行う必要があるのと同様に、シリアル化プロシージャではシリアル化ハンドルを使用してシリアル化サービスを使用する必要があります。 シリアル化ハンドルが指定されていない場合は、既定の暗黙的ハンドルを使用して呼び出しを指示します。 一方、シリアル化ハンドルが指定されている場合は、ルーチンの明示的な handle_t 引数として、または [explicit_handle] 属性を使用して、呼び出しの引数として有効なハンドルを渡す必要があります。 有効なシリアル化ハンドルを作成する方法の詳細については、「 シリアル化ハンドル」、「 固定バッファー エンコードの例」、および「 増分エンコードの例」を参照してください。

Note

Microsoft RPC を使用すると、リモートプロシージャとシリアル化プロシージャを 1 つのインターフェイスで混在できます。 ただし、その場合は注意が必要です。

暗黙的なバインド ハンドルを持つリモート プロシージャの場合、MIDL コンパイラは型handle_tのグローバル ハンドル変数 生成します。 暗黙的なシリアル化ハンドルを持つプロシージャと型では、同じグローバル ハンドル変数が使用されます。

暗黙的ハンドルの場合、グローバル暗黙的ハンドルは、リモート呼び出しの前に有効なバインディング ハンドルに設定する必要があります。 暗黙的なハンドルは、シリアル化呼び出しの前に有効なシリアル化ハンドルに設定する必要があります。 したがって、プロシージャをリモートとシリアル化の両方にすることはできません。 いずれか一方である必要があります。