Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Инициализирует библиотеку COM в текущем потоке и определяет модель параллелизма как однопотоковый объект (STA).
Новые приложения должны вызывать CoInitializeEx вместо CoInitialize.
Если вы хотите использовать среда выполнения Windows, необходимо вызвать RoInitialize или Windows::Foundation::Initialize.
Синтаксис
HRESULT CoInitialize(
[in, optional] LPVOID pvReserved
);
Параметры
[in, optional] pvReserved
Этот параметр зарезервирован и должен иметь значение NULL.
Возвращаемое значение
Эта функция может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.
| Код возврата | Описание |
|---|---|
|
Библиотека COM успешно инициализирована в этом потоке. |
|
Библиотека COM уже инициализирована в этом потоке. |
|
При предыдущем вызове CoInitializeEx модель параллелизма для этого потока была указана как многопоточный объект (MTA). Это также может означать, что произошла смена квартиры с нейтральным потоком на однопотоковый. |
Комментарии
Необходимо инициализировать библиотеку COM в потоке перед вызовом любой из функций библиотеки, кроме CoGetMalloc, чтобы получить указатель на стандартный распределитель и функции выделения памяти.
После установки модели параллелизма для потока ее нельзя изменить. Вызов CoInitialize в квартире, которая ранее была инициализирована как многопоточная, завершится ошибкой и возвратит RPC_E_CHANGED_MODE.
CoInitializeEx предоставляет те же функции, что и CoInitialize , а также параметр для явного указания модели параллелизма потока. CoInitialize вызывает CoInitializeEx и задает модель параллелизма как однопотоковый объект. Приложения, разработанные сегодня, должны вызывать CoInitializeEx , а не CoInitialize.
Как правило, библиотека COM инициализируется в потоке только один раз. Последующие вызовы CoInitialize или CoInitializeEx в том же потоке будут успешными, если они не будут пытаться изменить модель параллелизма, но будут возвращать S_FALSE. Чтобы корректно закрыть библиотеку COM, каждый успешный вызов CoInitialize или CoInitializeEx, включая те, которые возвращают S_FALSE, должен быть сбалансирован соответствующим вызовом CoUninitialize. Однако первый поток в приложении, вызывающий CoInitialize с 0 (или CoInitializeEx с COINIT_APARTMENTTHREADED), должен быть последним потоком, вызывающим CoUninitialize. В противном случае последующие вызовы CoInitialize в STA завершатся ошибкой, и приложение не будет работать.
Так как невозможно управлять порядком загрузки или выгрузки внутрипроцессных серверов, не вызывайте CoInitialize, CoInitializeEx или CoUninitialize из функции DllMain .
Требования
| Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
| Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
| Целевая платформа | Windows |
| Header | objbase.h |
| Библиотека | Ole32.lib |
| DLL | Ole32.dll |
| Набор API | ext-ms-win-com-sta-l1-1-0 (появилось в Windows 10 версии 10.0.20166) |