LoadLibrary()を使用して動的にロードする必要があり、__cdecl呼び出し規約を使用するサードパーティのDLLがあります。VB6のdllを使用できるようにする必要があるため、__ stdcall呼び出し規約を使用し、必要な関数をエクスポートする独自のラッパーDLLを作成しました。
追加の要件が到着し、管理方法を見つけるのに苦労しています。ラップされたDLLは別のアプリケーションにAPIを提供し、アプリケーションの2つのインスタンスに同時に接続する必要があります。DLLにはセッションの概念がないため、これは問題です。一般的な対話では、次のようになります。
tpc_connect("service1")
// Do some stuff
tpc_disconnect()
そして私ができる必要があるのは
session1 = tpc_connect("service1")
session2 = tpc_connect("service2")
// Do some stuff with session1
// Do some stuff with session2
tpc_disconnect(session1)
tpc_disconnect(session2)
私が見ている主な問題は、単一のプロセスを1つのサービスにしか接続できないことです。そのため、最初に試した解決策は、ATLを使用してアウトオブプロセスCOMサーバーを作成することにより、DLLラッパーを別のプロセスに移動することでした。私が今抱えている問題は、COMサーバーのインスタンスを1つしか取得できないことです。
それで、私の質問は(最後に)ATL COMサーバーの新しいインスタンスを強制的に作成する方法はありますか?これは問題への最善のアプローチですか、それとも誰かがこれに取り組むためのより良い方法を考えることができますか?
ありがとうジャクソン