Функция OleInitialize (ole2.h)

Инициализирует библиотеку COM в текущем экземпляре, определяет модель параллелизма как однопотоковое подразделение (STA) и включает дополнительные функциональные возможности, описанные в разделе Примечания ниже. Приложения должны инициализировать библиотеку COM, прежде чем они смогут вызывать функции библиотеки COM, отличные от CoGetMalloc и функций выделения памяти.

Синтаксис

HRESULT OleInitialize(
  [in] LPVOID pvReserved
);

Параметры

[in] pvReserved

Этот параметр зарезервирован и должен иметь значение NULL.

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

Эта функция возвращает S_OK об успешном выполнении. Ниже перечислены другие возможные значения.

Код возврата Описание
S_FALSE
Библиотека COM уже инициализирована в этой квартире.
OLE_E_WRONGCOMPOBJ
Версии COMPOBJ.DLL и OLE2.DLL на вашем компьютере несовместимы друг с другом.
RPC_E_CHANGED_MODE
В предыдущем вызове CoInitializeEx модель параллелизма для этого подразделения была указана как многопоточная (MTA). Это также может означать, что произошло изменение с нейтральной потоковой квартиры на однопотоковое.

Комментарии

Приложения, использующие следующие функции, должны вызывать OleInitialize перед вызовом любой другой функции в библиотеке COM:

  • Буфер обмена
  • Перетаскивание
  • Связывание и внедрение объектов (OLE)
  • Активация на месте
OleInitialize вызывает CoInitializeEx внутренне для инициализации библиотеки COM в текущем объекте. Так как операции OLE не являются потокобезопасными, OleInitialize указывает модель параллелизма как однопотоковое подразделение.

После установки модели параллелизма для подразделения ее нельзя изменить. Вызов OleInitialize в квартире, которая ранее была инициализирована как многопоточная, завершится ошибкой и возвратит RPC_E_CHANGED_MODE.

Необходимо инициализировать библиотеку COM в квартире перед вызовом любой из функций библиотеки, кроме CoGetMalloc, чтобы получить указатель на стандартный распределитель и функции выделения памяти.

Как правило, библиотека COM инициализируется в квартире только один раз. Последующие вызовы будут успешными, если они не попытаются изменить модель параллелизма в квартире, но возвращают S_FALSE. Чтобы корректно закрыть библиотеку COM, каждый успешный вызов OleInitialize, включая те, которые возвращают S_FALSE, должен быть сбалансирован соответствующим вызовом OleUninitialize.

Так как нет способа управлять порядком загрузки или выгрузки внутрипроцессных серверов, не вызывайте OleInitialize или OleUninitialize из функции DllMain .

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ole2.h
Библиотека Ole32.lib
DLL Ole32.dll
Набор API ext-ms-win-com-ole32-l1-1-0 (представлено в Windows 8)

См. также раздел

CoInitializeEx

OleInitialize

OleUninitialize