CoInitializeEx()

CoInitializeEx是 Windows提供的API函数,为当前线程初始化COM库并设置并发模式 。应用程序调用com库中的函数(除CoGetMalloc内存分配函数)之前必须初始化com库。

函数原型

HRESULT CoInitializeEx(

void * pvReserved,

DWORD dwCoInit

);

参数介绍:

pvReserved

系统 保留的参数,必须传入 NULL.

dwCoInit

该标示指明基于当前线程的并发模式和初始化选项。该参数是 COINIT 枚举类型,传入参数时候,除了

COINIT_APARTMENTTHREADED 和COINIT_MULTITHREADED标记外,其余的标记可以组合使用。

返回值:

S_OK :COM库初始化成功。

S_FALSE :当前线程上,COM库已经被初始化。

RPC_E_CHANGED_MODE :COM库已经被初始化且传入参数设置的并发模式和本次不同。

注意事项:

在应用程序中使用COM库,至少要调用一次CoInitializeEx函数(通常也就调用一次)。如果传入参数的并发标志相同,单个线程也可以多次调用该函数,但后来有效的调用将返回 S_FALSE。在正常关闭COM库情况下,每一个CoInitialize 或者CoInitializeEx的成功的调用(也包含返回S_FALSE的调用),都必须用通Uninitialize函数来结束。

使用函数 CoInitializeEx的代码的前面需要包含于处理标志 #define _WIN32_DCOM

基于线程的并发模式一旦设置,将不能再改变。一个线程上调用CoInitializeEx如果与原来调用设置的并发模式不一

致,将会失败并返回RPC_E_CHANGED_MODE。

原文地址:https://www.cnblogs.com/killer-xc/p/6670665.html