CoCreateInstance

指定されたCLSIDに関連付けられたクラスの1つの未初期化オブジェクトを作成します。ローカルシステム上で1オブジェクトを作成したい場合に呼び出します。リモートシステム上で1つのオブジェクトを作成する場合にはCoCreateInstanceEx関数を呼び出します。1つのCLSIDをもとに複数のオブジェクトを作成す場合にはCoGetClassObject関数を使用します。

STDAPI CoCreateInstance(
    REFCLSID  rclsid,     // オブジェクトのCLSID
    LPUNKNOWN pUnkOuter,  // アグリゲートオブジェクト
    DWORD   dwClsContext, // コンテキスト
    REFIID  riid,         // 取得するIID
    PVOID   *ppv          // 変数アドレス
);

OLE32.DLL

引数

rclsid

オブジェクトの作成に使用するデータおよびコードに関連付けられているCLSIDを指定します。

pUnkOuter

オブジェクトがアグリゲートオブジェクトの一部として作成する場合はアグリゲートオブジェクトのIUnknownインターフェイス (制御側IUnknown) へのポインタを指定します。

0 (NULL) を指定すると、オブジェクトはアグリゲートオブジェクトの一部として作成されません。

dwClsContext

新しく作成されるオブジェクトの管理コードを実行するコンテキストを指定します。以下の値の組み合わせで指定します。

0x1 (CLSCTX_INPROC_SERVER)

このクラスのオブジェクトを作成および管理するコードは、呼び出し側と同じプロセスで実行されるDLLです。

0x2 (CLSCTX_INPROC_HANDLER)

このクラスのオブジェクトを管理するコードはプロセス内ハンドラです。これはクライアントプロセス内で実行されるDLLで、クラスのインスタンスがリモートでアクセスされる際にこのクラスのクライアントサイド構造を作成します。

0x4 (CLSCTX_LOCAL_SERVER)

このクラスのオブジェクトを作成および管理するEXEコードは同じマシン上で実行されますが、別のプロセス空間にロードされます。

0x17 (CLSCTX_ALL)

上記の3つのフラグをすべて含んでいます。

riid

オブジェクトとの通信に使用するインターフェースのインターフェースID (IID) の参照(アドレス)を指定します。

ppv

riidパラメータで要求されたインターフェースポインタを格納するための変数のアドレスを指定します。オブジェクトのインスタンスが正常に作成されると、この変数に要求したインターフェースポインタが格納されます。作成に失敗した場合は、この変数に0 (NULL) が格納されます。

戻り値

0 (S_OK)
指定されたオブジェクトクラスのインスタンスが正常に作成されました。
0x80004002 (E_NOINTERFACE)
指定されたクラスでは要求されたインターフェースが実装されていません。
0x80040154 (REGDB_E_CLASSNOTREG)
指定されたクラスが登録データベースに登録されていないか、dwClsContextパラメータで指定されたサーバータイプが登録されていないか、レジストリのサーバータイプ値が不正です。
0x80040110 (CLASS_E_NOAGGREGATION)
指定されたクラスはアグリゲートオブジェクトの一部として作成できません。

対応情報

Windows 95 以降 / Windows NT 3.1 以降