掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
COMの初期化とCoInitialize関数について (ID:59205)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
KING・王さん、Toshiさん、生茶さん。レス、ありがとうございます。 話を総合すると・・・ ・S_FALSEになったとき、「すでに起動されている/単純に失敗」を識別できない ・というよりも、失敗はしない ・必要なたびに呼び出し、成功した回数分CoUninitializeを呼べばいい ということになるのでしょうか? ん〜・・・ すると、COMを利用するクラスが複数あって、同一のスレッドでも利用する可能性がある場合 ・S_FALSEになっても無視する(呼び出されていないのであれば必ず成功するので) ・クラスの外で(利用するクラスを実行するスレッド上で)CoInitializeを実行 のどちらかを取っているということでしょうか・・・? 私は今まで、クラスのなかでInitという関数を作りその中で HRESULT hr = CoInitialize( NULL ); if(FAILED(hr)) { //エラー扱いにして初期化失敗のフラグをたてる } //その他クラス事の初期化処理 として、コンストラクタのなかで実行→成功/失敗のフラグを作成し、その後の処理はフラグで判断して処理をしていたのですが、これでは、同様に設定して作成した複数のクラスを同じスレッドのなかで使用したときに、最初にInitを行ったもの以外はエラー扱いになってしまうな〜と・・・。 皆さんはどうされているのでしょうか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.