COMat TECHCOM - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト187:デフォルトの名無しさん 08/02/21 16:24:48 このスレに住まわれるCOMの精霊様、 どうか以下の件についてお答えくださいませ。 VS2005でATLプロジェクトでWindowsサービスを作りましたが、 PreMessageLoop()の中で、以下のコードが無いとサービスが起動しません。 ----- if (SUCCEEDED(hr) && !m_bDelayShutdown) hr = CoResumeClassObjects(); ----- しかしサービスに1つでもCOMインタフェースを追加すると CoResumeClassObjects()がS_OK以外を返すようになります。 そこでCoResumeClassObjects()を呼び出さないようにしても、 サービスは起動してくれます。 なぜCOMインタフェースが自分で追加していない状態では CoResumeClassObjects()を呼ぶ必要があり、 COMインタフェースを追加すると呼ぶ必要がなくなるのでしょうか? 188:デフォルトの名無しさん 08/02/22 01:05:40 Effective COMには ・1つ以上のクラスをエクスポートしてるサービスが最初のCoregisterClassObjectの呼び出しで開始してしまうと、それらのクラスの初期化の問題が起きる場合がある ・このためREGCLS_SUSPENDフラグで起動を遅らせて、CoResumeClassObjectsで起動させる みたいなことはあったけど。 追加したときにフラグ上書きしたことになってるのではと想像。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch