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。
- dwFlags
类型:System.UInt32
[in] 控件从 CLSCTX 枚举的标志实例的创建。指定 CLSCTX_INPROC_SERVER的值。
- 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 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。