CoInitializeSecurity问题
刚接管一份以前同事代码,从来没有做过com相关,对其中一些处理不甚理解,前来求教。
FUN1()
{
CoInitializeEx
CoInitializeSecurity
CoUninitialize
}
FUN2()
{
CoInitializeEx
//业务流程
CoUninitialize
}
流程是这样的,主线程启动线程FUN1(其实是做一些初始化工作),然后结束,然后启动线程FUN2。
我的问题是,在FUN1中,CoUninitialize被调用以后,CoInitializeSecurity还有效果吗?
代码的本意肯定是FUN1中的CoInitializeSecurity设置,在启动FUN2时还有效,但按照上面的代码是否真的有效。
多谢。
[解决办法]
http://www.cnblogs.com/moonz-wu/archive/2008/09/11/1289519.html
该函数只被每个进程确切的调用一次,以显式或隐式的方式。它可以被客户端,服务器端或是两边都调用。对于非COM的应用程序不应该显式的被调用,但是对于COM应用程序该函数会隐式的从注册表读取参数来调用。如果你使用注册表设置进程级的安全然后调用CoInitializeSecurity, 那么AppID的注册表值会被忽略而使用CoInitializeSecurity值。从这段话中,我们可以知道两个信息,一,CoInitializeSecurity函数用于设置进程安全;二,只能被进程调用一次。第一点是说明用途,而第二点说明用法。很简单,只要在CoInitialize()后面调用一下就可以。但是请记住一定要用下面的方式去验证返回值: