次の方法で共有


インスタンス作成ヘルパー関数

COM の以前のリリースでは、オブジェクト インスタンスの作成に使用される主なメカニズムは、CoCreateInstance 関数でした。 この関数は、クラス オブジェクトを作成し、これを使用して新しいインスタンスを作成し、クラス オブジェクトを解放するプロセスをカプセル化します。 この種のもう 1 つの関数は、oleCreate、クラス オブジェクトを作成し、要求されたオブジェクトへのポインターを取得する OLE 複合ドキュメント ヘルパーです。

分散システムでのインスタンス作成のプロセスをスムーズにするために、COM には 4 つの重要な新しいインスタンス作成メカニズムが導入されています。

クラス モニカーを使用すると、オブジェクトのクラスを識別でき、通常はファイル モニカーなどの別のモニカーと共に使用され、オブジェクトの場所を示します。 これにより、オブジェクトにバインドし、そのオブジェクトに対して起動するサーバーを指定できます。 クラス モニカーは、IClassActivator インターフェイスへのバインドをサポートするモニカーの右側にも構成できます。 詳細については、「クラス モニカー」を参照してください。

CoCreateInstanceExCoCreateInstance拡張して、指定された CLSID に関連付けられた単一の初期化されていないオブジェクトを指定されたリモート コンピューターに作成できるようにします。 さらに、1 つのインターフェイスを要求してそのインターフェイスへの単一のポインターを取得するのではなく、CoCreateInstanceEx を使用すると、複数のインターフェイスを照会でき、(使用可能な場合は) 1 回のラウンドトリップでそれらのインターフェイスへのポインターを受け取ることができるため、マシン間のラウンドトリップが少なくなります。 これにより、リモート オブジェクトの操作の効率が大幅に向上します。 これを行うために、関数は MULTI_QI 構造体の配列を使用します。

CoCreateInstanceExを使用してオブジェクトを作成するには、初期化インターフェイスの 1 つ (IPersistStorage::Load など) の呼び出しによってオブジェクトを初期化する必要があります。 ヘルパー関数 CoGetInstanceFromFileCoGetInstanceFromIStorageCoCreateInstanceEx のインスタンス作成能力と初期化 (ファイルの前者、ストレージからの後者) の両方をカプセル化します。

クラス オブジェクト を使用してオブジェクトを作成する