ILocalRegistry.CreateInstance 方法

在本地注册表列表中创建的类的实例。

命名空间:  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 控件实例的指针使用新创建的对象。空值指示充当聚合一部分,就不能创建对象。如果非 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 ILocalRegistry::CreateInstance(
   [in] CLSID clsid,
   [in] IUnknown* punkOuter,
   [in] REFIID riid,
   [in] DWORD dwFlags,
   [out] void** ppvObj
);

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

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

,如果要创建基于 CLSID 的对象的一个实例,并不需要将类工厂对象创建对象的其他实例后,调用 CreateInstance 。创建从单个类对象的多个对象,请使用 GetClassObjectOfClsid 方法。

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

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

.NET Framework 安全性

请参见

参考

ILocalRegistry 接口

Microsoft.VisualStudio.Shell.Interop 命名空间