【发布时间】:2011-07-27 06:27:33
【问题描述】:
有没有简单的方法来判断 CoInitializeSecurity 是否已经被调用?
我需要调用 CoInitializeEx 并使用 COM 接口,但有时调用代码(我无法控制)首先调用我,然后在它的启动序列中到达 CoInitializeSecurity,然后它倒下与 E_RPC_TOO_LATE。
我想要做的是检测到 CoInitializeSecurity 尚未被调用,并延迟一小段时间(大约十秒左右),直到调用者成功到达 CoInitializeSecurity,然后我继续到 CoInitializeEx。
添加此延迟可以很好地解决问题,除了,我不喜欢在每次调用时都有这种延迟 - 只是启动期间的第一个。因此,希望检测 CoInitializeSecurity 是否已被调用。
【问题讨论】:
-
嗯,调用时获取 E_RPC_TOO_LATE 来检测它已经被调用。那可帮不上忙。如果您无法控制其他代码的功能,则很难找到治愈方法。与该代码的所有者交谈以解决问题。
-
我看到没有人回答你的问题;我需要一个答案。我想也许会问,“如何获取我当前的 COM 线程模型?” 可能会解决问题(如果我们可以获得一个线程模型,那么我们就知道它已经被初始化了) .但我也找不到这个问题的答案。
标签: com