自動バインド ハンドル

自動バインド ハンドルは、アプリケーションに特定のサーバーが必要ない場合や、クライアントとサーバーの間で状態情報を保持する必要がない場合に便利です。 自動バインド ハンドルを使用する場合、バインドとハンドルを処理するためにクライアント アプリケーション コードを記述する必要はありません。アプリケーション構成ファイル (ACF) で自動バインド ハンドルの使用を指定するだけです。 次に、スタブによってハンドルが定義され、バインドが管理されます。

たとえば、自動ハンドルを使用してタイムスタンプ操作を実装できます。 使用可能な任意のサーバーから時刻を受け取ることができるため、タイム スタンプをサーバーが提供するクライアント アプリケーションに違いはありません。

注意

自動ハンドルは、Macintosh プラットフォームではサポートされていません。

 

ACF に [auto_handle] 属性を含めることで、自動ハンドルの使用を指定します。 タイムスタンプの例では、次の ACF を使用します。

/* ACF file */
[
  auto_handle
]
interface autoh
{
}

ACF に他のハンドル属性が含まれていない場合、およびリモート プロシージャが明示的なハンドルを使用しない場合、MIDL コンパイラは既定で自動ハンドルを使用します。 また、ACF が存在しない場合は、自動ハンドルも既定値として使用されます。

リモート・プロシージャーは IDL ファイルで指定されます。 自動ハンドルは、リモート プロシージャの引数として指定することはできません。 次に例を示します。

/* IDL file */
[ 
  uuid (6B29FC40-CA47-1067-B31D-00DD010662DA),
  version(1.0),
  pointer_default(unique)
]
interface autoh
{
  void GetTime([out] long * time);
  void Shutdown(void);
}

自動ハンドルの利点は、開発者がハンドルを管理するためのコードを記述する必要がないということです。スタブはバインディングを自動的に管理します。 これは、クライアントが ACF で定義されている暗黙的なプリミティブ ハンドルを管理し、バインド ハンドルを確立するために複数のランタイム関数を呼び出す必要がある Hello, World の例とは大きく異なります。