CoInitializeSecurity 返回0x80010119 - 在整理或打亂任何接口之前,必須初始化安全機制。一旦初始化,不能再作更改。

  錯誤 0x80010119爲:RPC_E_TOO_LATE CoInitializeSecurity has already been called。說明CoInitializeSecurity 已經被調用過,這不算是錯誤。

判斷該函數執行是否成功的方法應爲:

HRESULT hr;

hr = CoInitialzieSecurity();

if (SUCCEED(hr) || RPC_E_TOO_LATE == hr){
	// ...
	// ...
}

  另外,MSDN中提到過,這個初始化有顯式調用和隱式調用之分,有時被COM隱式調用過我們還渾然不知。

  我遇到過的一個場景就是,程序中只有一個地方調用這個函數,但一直返回RPC_E_TOO_LATE。後來我把這個函數放在進程啓動時很前面的地方調用,就會返回成功了。隱式調用相關的參數來自註冊表,不一定是自己想要的。所以想要初始化COM安全機制的時候,最好儘早做,以免因爲其它操作引發隱式調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章