<Return[C]><Top>

CoCreateInstance

Declare Sub Api_CoCreateInstance Lib "ole32" Alias "CoCreateInstance" (ByVal rclsid&, ByVal pUnkOuter&, ByVal dwClsContext&, ByVal riid&, ppv As Any)

Declare Sub CoCreateInstance Lib "ole32" (ByVal rclsid As Long, ByVal pUnkOuter As Long, ByVal dwClsContext As Long, ByVal riid As Long, ppv As Any)

指定されたCLSIDに関連付けられたクラスの1つの未初期化オブジェクトを作成する。

パラメータ

rclsid
    [入力]  オブジェクトの作成に使用するデータ、およびコードに関連付けられているCLSIDを指定する。
pUnkOuter
    [入力]  オブジェクトが、アグリゲートオブジェクトの一部として作成する場合は、アグリゲートオブジェクトのIUnknownインターフェイス (制御側

    IUnknown) へのポインタを指定する。
    0 (NULL) を指定すると、オブジェクトはアグリゲートオブジェクトの一部として作成されない。
dwClsContext
    [入力] 新しく作成されるオブジェクトの管理コードを実行するコンテキストを指定する。

    次の値の組み合わせで指定する。

    値                                             

意味                                                                                                                       

    CLSCTX_INPROC_SERVER

 

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

    CLSCTX_INPROC_HANDLER

 

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

    CLSCTX_LOCAL_SERVER

 

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

    CLSCTX_ALL

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

riid
    [入力] オブジェクトとの通信に使用するインターフェースのインターフェースID (IID) の参照(アドレス)を指定する。
ppv
    [出力] riidパラメータで要求されたインターフェースポインタを格納するための変数のアドレスを指定する。

戻り値

    値                                             

意味                                                                                                                       

    S_OK

指定されたオブジェクトクラスのインスタンスが正常に作成された。

    REGDB_E_CLASSNOTREG

 

指定されたクラスが登録データベースに登録されていないか、dwClsContextパラメータで指定されたサーバータイプが登録されていないか、レジストリのサーバータイプ値が不正である。

    CLASS_E_NOAGGREGATION

指定されたクラスはアグリゲートオブジェクトの一部として作成できない。

    E_NOINTERFACE

指定されたクラスでは要求されたインターフェースが実装されていない。