インスタンス作成ヘルパー関数
COM の以前のリリースでは、オブジェクト インスタンスの作成に使用される主なメカニズムは CoCreateInstance 関数でした。 この関数は、クラス オブジェクトを作成し、それを使用して新しいインスタンスを作成し、クラス オブジェクトを解放するプロセスをカプセル化します。 この種のもう 1 つの関数は、より具体的な OleCreate、クラス オブジェクトを作成し、要求されたオブジェクトへのポインターを取得する OLE 複合ドキュメント ヘルパーです。
分散システムでのインスタンス作成プロセスをスムーズにするために、COM は 4 つの重要な新しいインスタンス作成メカニズムを導入しました。
クラス モニカーを使用すると、オブジェクトのクラスを識別できます。通常は、オブジェクトの場所を示すために、ファイル モニカーなどの別のモニカとともに使用されます。 これにより、オブジェクトにバインドし、そのオブジェクトに対して起動するサーバーを指定できます。 クラス モニカーは、IClassActivator インターフェイスへのバインドをサポートするモニカーの右側にも構成できます。 詳細については、「クラス モニカー」を参照してください。
CoCreateInstanceEx は CoCreateInstance を拡張して、指定された CLSID に関連付けられた 1 つの初期化されていないオブジェクトを指定されたリモート コンピューターに作成できるようにします。 さらに、CoCreateInstanceEx では、1 つのインターフェイスを要求してそのインターフェイスへの単一のポインターを取得するのではなく、複数のインターフェイスを照会でき、(使用可能な場合は) 1 回のラウンドトリップでそれらのインターフェイスへのポインターを受け取ることができるため、マシン間のラウンド トリップが少なくなります。 これにより、リモート オブジェクトの操作の効率が大幅に向上します。 これを行うために、関数は MULTI_QI 構造体の配列を使用します。
CoCreateInstanceEx を使用してオブジェクトを作成するには、初期化インターフェイスの 1 つ (IPersistStorage::Load など) を呼び出してオブジェクトを初期化する必要があります。 ヘルパー関数 CoGetInstanceFromFile と CoGetInstanceFromIStorage は、CoCreateInstanceEx のインスタンス作成能力と初期化の両方をカプセル化します。初期化は、ファイルから、後者はストレージからカプセル化します。
関連トピック