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.
Возвращаемое значение
Если метод завершается успешно, возвращает значение 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.