DLL サーバーの要件

ほとんどの DLL はサロゲートで実行できますが、一部の DLL では実行できません。

システム提供のサロゲートを使用する場合は、DLL が適切に動作する必要があります。 たとえば、クライアントからコールバックを登録するメソッドを呼び出す DLL は、受け取った関数ポインターがアドレス空間内の命令の場合と同様に、それらのコールバックを呼び出そうとします。これはそうではありません。 同様に、クライアントがアクセスすることを期待するグローバル変数を使用する DLL は機能しません。 一般に、適切にマーシャリングできないパラメーターを使用すると、DLL サーバーがクライアント プロセスの外部で実行されなくなります。 多くの場合、"不適切な" 動作を補正するように特別に設計されたカスタム サロゲートを記述できます。 詳細については、「カスタムプレーヤーアプリの作成」を参照してください

DLL サーバーでカスタム インターフェイスを使用する場合は、それらのインターフェイスでマーシャリング コードを使用できるようにする必要があります。 たとえば、プロキシ DLL をビルドして登録したり、サロゲートで実行中にサーバーが正しく機能できるようにするタイプ ライブラリを提供して登録したりできます。

DLL サーバーは、適切なセキュリティ コンテキストで実行されているサロゲート プロセスにのみ読み込まれます。 DLL サーバー サロゲートのセキュリティ コンテキストは、EXE サーバーの場合と同じ方法で決定されます。 DLL サーバー サロゲートは、セキュリティ コンテキストを決定する RunAs 値がサーバーの AppID レジストリ セクションに設定されていない限り、クライアントと同じセキュリティ コンテキストで実行されます。

DLL サロゲート