15/09/16 09:19:05.96 BfRuKofg.net
>>300
そのソースをうpした者です。
S_FALSEだったらすでにCoInitializeされてるはずであり、2重にCoInitializeは行われていないということなのでそのままにしておくという考えです。
ですから、S_FALSEだった時にはCoUnInitializeも行わないようになっています。
スレッドIDを記憶している理由は、CloseTunerがOpenTunerと別スレッドで呼ばれた場合に
自分以外が行ったCoInitializeを間違ってCoUnInitializeしてしまわないようにしているだけです。
どちらにせよCoUnInitializeする術がないので。
私は、BonDriver側の責任でCoInitializeを行うべきだと思っています。
BonDriverでCOMを使用するかどうかはBonDriver側の都合なので。
今考えているところで一番良いやり方は、BonDriver側でAppとは独立した別スレッドを作成し、
そのスレッドでCoInitialize/CoUnInitializeを含めたすべてのCOM処理を行うのが最善ではないかな