explicit_handle属性
[explicit_handle] ACF 属性は、各プロシージャが最初のパラメーターとして、 handle_t 型などのプリミティブ ハンドルを持っていることを指定します。
[
explicit_handle
]
interface interface-name
{
...
}
パラメーター
-
interface-name
-
インターフェイスの名前を指定します。
解説
[explicit_handle] 属性を使用すると、IDL ファイルにパラメーター リストにこのハンドルが含まれていない場合でも、各プロシージャは最初のパラメーターとしてプリミティブ ハンドルを持ちます。 ヘッダー ファイルおよびスタブ ルーチンに出力されるプロトタイプには追加のパラメーターが含まれており、そのパラメーターはリモート呼び出しを指示するためのハンドルとして使用されます。
[explicit_handle] 属性は、リモート プロシージャとシリアル化プロシージャの両方に影響します。 型のシリアル化の場合、サポート ルーチンは、明示的 (シリアル化) ハンドルとして初期パラメーターを使用して生成されます。 [explicit_handle] 属性を使用しない場合でも、アプリケーションは、呼び出しを指示する明示的なハンドル (バインドまたはシリアル化) を操作に指定できます。 これを行うには、ハンドル型を含む引数を持つプロトタイプが IDL ファイルに提供されます。 既定モードでは、最初に表示されない引数を呼び出しを指示するハンドルとしても使用できることに注意してください。
したがって、[ explicit_handle] 属性は IDL プロトタイプにプリミティブ [explicit_handle] 属性を与える方法ですが、IDL ファイルを変更する必要はありません。 /osf モードでは、最初の引数のみを明示的なハンドル型として使用できます。
[explicit_handle] 属性は、インターフェイス属性または操作属性として使用できます。 インターフェイス属性として、インターフェイス内のすべての操作と、シリアル化のサポートを必要とするすべての型に影響します。 ただし、操作属性として使用される場合は、その特定の操作にのみ影響します。 メソッドに 1 つ以上の [in] コンテキスト ハンドルが含まれている場合、左端の [in] コンテキスト ハンドルがバインド ハンドルとして使用され、追加の明示的なハンドルは作成されません。
例
/* ACF File */
[
explicit_handle
]
interface iface
{
// Interface definition statements.
};
関連項目