coinitializeex
OleInitialize。OleInitialize是一个Windows API函数。
它的作用是在当前单元初始化组件对象模型库。将当前的并发模式标识为STA。并启用一些特别用于OLE技术的额外功能。除了CoGetMalloc和内存分配函数。应用程序必须在调用COM库函数之前初始化COM库。不需要OleInitialize函数所启用的额外功能的应用程序应该调用CoInitializeEx来代替OleInitialize。
中文名,OleInitialize。类型,Windows API函数。作用,初始化组件对象模型库。头文件,在ole2.h中声明。
函数形式。WINOLEAPI OleInitialize;WINOLEAPI在objbase.h中又被定义为EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE其中参数pvReserved为保留参数。
在使用函数时必须设定为NULL。
返回值。这个函数除了支持标准的返回值E_INVALIDARG。
E_OUTOFMEMORY和E_UNEXPECTED之外还可能产生以下返回值:。
说明。使用以下功能的应用程序必须在调用其它任何COM库中的函数前调用OleInitialize函数。
这些功能是:OleInitialize函数将在其内部调用CoInitializeEx函数从而在当前单元初始化COM库。由于OLE操作线程不安全。因此OleInitialize函数将指明并发模式为STA。这也就意味着只有一个特定的线程可以直接访问单元内部的对象。试图在其它线程访问该对象通常会导致访问冲突。
一旦一个单元的并发模式被设定。它将不能被更改。在之前已经初始化为MTA的单元上调用OleInitialize将会遭遇失败。并得到返回值RPC_E_CHANGED_MODE。你必须在调用除了CoGetMalloc函数以外的其它任何库函数前初始化COM库。从而得到一个指向标准allocator的指针以及内存分配函数。通常的来说。COM库在一个单元上只被初始化一次。只要不试图去改变单元的并发模式。在第一次调用OleInitialize后的对OleInitialize的多次调用也会成功。
否则将会得到返回值S_FALSE。如果想将COM库“温柔的”关闭。每成功调用一次OleInitialize。包括那些返回值为S_FALSE。必须要有一个相对应的对OleUninitialize的调用。如果OleInitialize返回OLE_E_WRONGCOMPO。那么就说明文件COMPO.DLL或者OLE2.DLL中的任何一个被更新到了一个与其它文件不相匹配的版本。要修正这个问题。将这两个文件用与当前操作系统对应发行的SDK中的版本替换掉。
由于没有办法控制“进程内服务器”载入和卸载的顺序。因此不要在DllMain函数中调用OleInitialize和OleUninitialize。
OleInitialize是一个Windows API函数。它的作用是在当前单元(apartment)初始化组件对象模型(COM)库,将当前的并发模式标识为STA(single-thread apartment——单线程单元),并启用一些特别用于OLE技术的额外功能。除了CoGetMalloc和内存分配函数,应用程序必须在调用COM库函数之前初始化COM库。
不需要OleInitialize函数所启用的额外功能的应用程序应该调用CoInitializeEx来代替OleInitialize。[1]
函数形式返回值
返回值说明
说明
OleInitialize函数将在其内部调用CoInitializeEx函数从而在当前单元初始化COM库。由于OLE操作线程不安全,因此OleInitialize函数将指明并发模式为STA。coinitializeex[1]这也就意味着只有一个特定的线程(通过调用OleInitialize而创建单元的线程)可以直接访问单元内部的对象。[2]试图在其它线程访问该对象通常会导致访问冲突。
一旦一个单元的并发模式被设定,它将不能被更改。在之前已经初始化为MTA的单元上调用OleInitialize将会遭遇失败,并得到返回值RPC_E_CHANGED_MODE。[1]
通常的来说,COM库在一个单元上只被初始化一次。只要不试图去改变单元的并发模式,在第一次调用OleInitialize后的对OleInitialize的多次调用也会成功,否则将会得到返回值S_FALSE。如果想将COM库“温柔的”关闭,每成功调用一次OleInitialize,包括那些返回值为S_FALSE,必须要有一个相对应的对OleUninitialize的调用。[1]
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-44680-1.html
你收了多少