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。
- 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 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 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。