ILocalRegistry3.CreateInstance 方法 (Guid, Object, Guid%, UInt32, IntPtr%)

创建一个本地注册表列出类的实例。

命名空间:  Microsoft.VisualStudio.Shell.Interop
程序集:  Microsoft.VisualStudio.Shell.Interop(在 Microsoft.VisualStudio.Shell.Interop.dll 中)

语法

声明
Function CreateInstance ( _
    clsid As Guid, _
    punkOuter As Object, _
    ByRef riid As Guid, _
    dwFlags As UInteger, _
    <OutAttribute> ByRef ppvObj As IntPtr _
) As Integer
int CreateInstance(
    Guid clsid,
    Object punkOuter,
    ref Guid riid,
    uint dwFlags,
    out IntPtr ppvObj
)

参数

  • clsid
    类型:System.Guid
    [in] 类标识符 (CLSID) 请求的对象。此 CLSID 与用于创建对象的数据和代码。
  • punkOuter
    类型:System.Object
    [in] 对复合的 IUnknown 控件实例的指针使用新创建的对象。nullnull 引用(在 Visual Basic 中为 Nothing) 的值指示充当聚合一部分,就不能创建对象。如果非 null,这是指针对复合对象 (控件 IUnknown) 的 IUnknown 接口。
  • riid
    类型:System.Guid%
    [in] 要使用的界面与对象进行通信。例如, IID_IClassFactory。
  • ppvObj
    类型:System.IntPtr%
    [out] 接收接口指针在 riid请求指针变量的地址。在成功返回, ppvObj 包含请求的接口指针。在失败, ppvObj 包含 nullnull 引用(在 Visual Basic 中为 Nothing)。

返回值

类型:System.Int32
如果方法成功,则返回 S_OK。如果失败,它会返回一个错误代码。

备注

COM 签名

从 objext.idl:

HRESULT ILocalRegistry3::CreateInstance(
    [in] CLSID clsid, 
    [in] IUnknown* punkOuter, 
    [in] REFIID riid, 
    [in] DWORD dwFlags, 
    [out] void** ppvObj
);

CreateInstance 方法与 CoCreateInstance 等效。 它创建与指定的 CLSID 类型的单个未初始化的对象并返回所有请求的接口指针。

CreateInstance 查找在注册的对象本地注册表类的对象,连接到与指定的 CLSID,创建对象的未初始化的实例的类对象,并释放类的对象。 此方法封装调用 OLE 功能 CoGetClassObject 获取指向对象的类工厂并对 CreateInstance 创建对象的实例并释放对类工厂。

备注

调用 CreateInstance ,如果要创建基于 CLSID 时对象的一个实例,因此不必保留类工厂对象创建对象的其他实例。创建从单个类对象的多个对象,请使用 GetClassObjectOfClsid 方法。

此方法注册在本地注册表项 HKEY_LOCAL_MACHINE \Software\Microsoft\VisualStudio\7.0\CLSID [] 中对象。 在注册表中, InProcServer32 用作值而不是子级。 实例化对象在主 UI 线程只支持。

为 dwFlags 参数指定 CLSCTX_INPROC_SERVER 的值实例化对象局部。 如果不指定此值,使用 CoCreateInstance,则对象全局将实例化。

.NET Framework 安全性

请参见

参考

ILocalRegistry3 接口

CreateInstance 重载

Microsoft.VisualStudio.Shell.Interop 命名空间