- 514 名前:510 mailto:sage [2009/07/28(火) 00:37:34 ]
- よく調べてみると、参照カウントが予想外の挙動をしていました。
例えば、 pCaptureGraphBuilder->FindInterface( &PIN_CATEGORY_CAPTURE, 0, pCapDev, IID_IAMStreamConfig, ( void** )&pConfig ) として、pConfigの参照カウントを調べてみると、1ではなく、いきなり2や6になったりするんです。 キャプチャデバイスフィルタ(上のpCapDev)も、 pMoniker->BindToObject()では1上がるだけですが、その直後のpGraphBuilder->AddFilterで 3とかになったりしました。 ここらへんが悪さをしていたようで、どうしたものかと思いましたが、 >>513さんが教えてくださったCComPtrに変えたところ、うまくいきました! CComPtrを使うと、 ttp://www.hamusuta.net/openbbs/pc/prg/wtl.html#msg9 に書いてあるように、使いまわし利用ができず、プログラムが止まります。 これで問題箇所が分かる上、xxx.Release()とすればちゃんと 解放(おそらく参照カウントを必要なだけ複数下げてくれている)してくれます。 この対処をした後はブルースクリーンクラシュは起こらなくなり、安定して動いています。 とてもよい解決策を教えてくださって、ありがとうございました!
|

|