ILocalRegistry2.CreateInstance(Guid, Object, Guid, UInt32, IntPtr) 方法

定義

建立在本機登錄中列出之類別的實例。

public:
 int CreateInstance(Guid clsid, System::Object ^ punkOuter, Guid % riid, System::UInt32 dwFlags, [Runtime::InteropServices::Out] IntPtr % ppvObj);
public int CreateInstance (Guid clsid, object punkOuter, ref Guid riid, uint dwFlags, out IntPtr ppvObj);
abstract member CreateInstance : Guid * obj * Guid * uint32 * nativeint -> int
Public Function CreateInstance (clsid As Guid, punkOuter As Object, ByRef riid As Guid, dwFlags As UInteger, ByRef ppvObj As IntPtr) As Integer

參數

clsid
Guid

在要求的物件 (CLSID) 的類別識別碼。 這是與用來建立物件的資料和程式碼相關聯的 CLSID。

punkOuter
Object

IUnknown 使用新建立的物件之匯總的控制實例指標。 值為 null 時,表示不會在匯總中建立物件。 如果非 null,這是 (控制) 的匯總物件介面指標 IUnknown IUnknown

riid
Guid

在用來與物件通訊的介面。 例如: IID_IClassFactory

dwFlags
UInt32

在用來控制從列舉建立實例的旗標 CLSCTX 。 指定 CLSCTX_INPROC_SERVER 的值。

ppvObj
IntPtr

擴展指標變數的位址,此變數會接收所要求的介面指標 riid 。 在成功傳回時, ppvObj 包含所要求的介面指標。 失敗時,會 ppvObj 包含 null

傳回

Int32

如果方法成功,它會傳回 S_OK。 如果方法失敗,則會傳回錯誤碼。

實作

備註

COM 簽章

從 objext .idl:

HRESULT ILocalRegistry2::CreateInstance(

[in] CLSID clsid,

[in] IUnknown* punkOuter,

[in] REFIID riid,

[in] DWORD dwFlags,

[out] void** ppvObj

);

CreateInstance方法相當於 COM 的函式 CoCreateInstance 。 它會建立與指定 CLSID 相關聯之類型的單一未初始化物件,並傳回任何要求的介面指標。

CreateInstance 查閱已註冊物件的本機登錄中的類別物件、連接至與指定之 CLSID 相關聯的類別物件、建立物件的未初始化實例,以及釋放類別物件。 這個方法會封裝 COM 函式的呼叫 CoGetClassObject ,以取得物件之 class factory 的指標,以及來 CreateInstance 建立物件的實例,以及釋放物件的 class factory 參考。

注意

CreateInstance當您想要根據 CLSID 建立物件的單一實例,且不需要保留 class factory 物件來建立物件的其他實例時,請呼叫。 若要從單一類別物件建立多個物件,請使用 M:Microsoft.VisualStudio.Shell.Interop.ILocalRegistry2.GetClassObjectOfClsid (System.Guid@、system.object、system.string、System.Guid@、System.object) 方法。

這個方法會在本機登錄 hive 中註冊物件 (例如 [HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\8.0\CLSID])。 在登錄的這一節中,會使用 InProcServer32 做為值,而不是子機碼。 我們只支援在主要 UI 執行緒上具現化物件。

為參數指定的值 CLSCTX_INPROC_SERVER dwFlags ,以在本機具現化物件。 如果您未指定此值,則會使用 COM 的函式來全域具現化物件 CoCreateInstance

適用於