ILocalRegistry.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

[in] Идентификатор класса (CLSID) запрашиваемого объекта. Это идентификатор CLSID, связанный с данными и кодом, который используется для создания объекта.

punkOuter
Object

[in] Указатель на управляющий экземпляр IUnknown агрегата, который использует вновь созданный объект. Значение null указывает на то, что объект не создается в составе агрегата. Если не null, это указатель на интерфейс IUnknown агрегатного объекта (управление IUnknown).

riid
Guid

[in] Интерфейс, который должен использоваться для взаимодействия с объектом. Например, IID_IClassFactory.

dwFlags
UInt32

[in] Флаги, управляющие созданием экземпляра из перечисления CLSCTX. Задает значение CLSCTX_INPROC_SERVER.

ppvObj
IntPtr

[out] Адрес переменной указателя, получающей указатель интерфейса, запрашиваемый в riid. При успешном возвращении параметр ppvObj содержит запрошенный указатель интерфейса. При сбое параметр ppvObj содержит значение null.

Возвращаемое значение

Int32

Если метод завершается успешно, возвращает значение S_OK. В противном случае функция возвращает код ошибки.

Комментарии

Подпись COM

Из обжекст. IDL:

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

Этот метод эквивалентен CoCreateInstance функции COM. Он создает один неинициализированный объект типа, связанного с указанным CLSID, и возвращает все запрошенные указатели интерфейса.

CreateInstance выполняет поиск объекта класса в локальном реестре зарегистрированных объектов, подключается к объекту класса, связанному с указанным идентификатором CLSID, создает неинициализированный экземпляр объекта и освобождает объект класса. Этот метод инкапсулирует вызовы функции COM CoGetClassObject для получения указателя на фабрику класса объекта, для CreateInstance создания экземпляра объекта и для освобождения ссылки на фабрику класса объекта.

Вызовите, CreateInstance Если требуется создать единственный экземпляр объекта на основе идентификатора CLSID и не нужно, чтобы объект фабрики класса не был создан для создания других экземпляров объекта. Чтобы создать несколько объектов из одного объекта класса, используйте GetClassObjectOfClsid метод.

Этот метод регистрирует объект в локальном кусте реестра (например, [HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\8.0\CLSID]). В этом разделе реестра InProcServer32 используется в качестве значения, а не для подраздела. Мы поддерживаем создание экземпляров объектов только в основном потоке пользовательского интерфейса.

Укажите значение CLSCTX_INPROC_SERVER для dwFlags параметра, чтобы создать экземпляр объекта локально. Если это значение не указано, экземпляр объекта будет создан глобально с помощью CoCreateInstance функции COM.

Применяется к