Функция OleInitialize (ole2.h)
Инициализирует библиотеку COM в текущем экземпляре, определяет модель параллелизма как однопотоковое подразделение (STA) и включает дополнительные функциональные возможности, описанные в разделе Примечания ниже. Приложения должны инициализировать библиотеку COM, прежде чем они смогут вызывать функции библиотеки COM, отличные от CoGetMalloc и функций выделения памяти.
Синтаксис
HRESULT OleInitialize(
[in] LPVOID pvReserved
);
Параметры
[in] pvReserved
Этот параметр зарезервирован и должен иметь значение NULL.
Возвращаемое значение
Эта функция возвращает S_OK об успешном выполнении. Ниже перечислены другие возможные значения.
Код возврата | Описание |
---|---|
|
Библиотека COM уже инициализирована в этой квартире. |
|
Версии COMPOBJ.DLL и OLE2.DLL на вашем компьютере несовместимы друг с другом. |
|
В предыдущем вызове CoInitializeEx модель параллелизма для этого подразделения была указана как многопоточная (MTA). Это также может означать, что произошло изменение с нейтральной потоковой квартиры на однопотоковое. |
Комментарии
Приложения, использующие следующие функции, должны вызывать OleInitialize перед вызовом любой другой функции в библиотеке COM:
- Буфер обмена
- Перетаскивание
- Связывание и внедрение объектов (OLE)
- Активация на месте
После установки модели параллелизма для подразделения ее нельзя изменить. Вызов 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) |