自動バインド ハンドル
自動バインド ハンドルは、アプリケーションが特定のサーバーを必要としない場合や、クライアントとサーバーの間で状態情報を保持する必要がない場合に便利です。 自動バインド ハンドルを使用する場合、バインドとハンドルを処理するためにクライアント アプリケーション コードを記述する必要はありません。アプリケーション構成ファイル (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 の例のとは大きく異なります。