[過去ログ] BonDriver共有ツール総合 その2©2ch.net (834レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
305
(2): ◆SALrG1ld3mTc 2015/09/16(水)20:06 ID:53Si47U2(1/3) AAS
>>296
BonDriver_PX_W3PE_S0.dllがBonDriver_HDUSの改造でつくられていると言うのは多分その通りで、
外部リンク[zip]:www2.wazoku.net
のソースで言うと、DShowMain.cppの748行目に相当する部分で例の初期化処理を呼んでるようですね

C++なので仮想関数呼び出しになってて、ioctl()に相当するコードが具体的にどうなっているのか
テキトーにバイナリを眺めてるだけでは特定がめんどくさいのですが、PX-W3PEの実機を持ってる方なら
BonDriver_PX_W3PE_S0.dllをロード -> CreateBonDriver() -> OpenTuner()とやって、OpenTuner()の
内部をデバッガで追って行けば、結構簡単に特定できるんじゃないかなと思います

dllのロードアドレス+1040c辺りからが問題の処理なので、ここにブレークポイント置いて
動かしてみるのが手っ取り早いかと…
306: ◆SALrG1ld3mTc 2015/09/16(水)20:11 ID:53Si47U2(2/3) AAS
>>301
> S_FALSE

>>302さんの書かれてる通りですが、MSのAPIにはたまーにこの手の罠がありますね…

> 私は、BonDriver側の責任でCoInitializeを行うべきだと思っています。
> BonDriverでCOMを使用するかどうかはBonDriver側の都合なので。

まあ行うにせよ行わないにせよ、ライブラリの使用方法に制限をかける形になるのは同じで、
単にライブラリが、
---
a. 使用するには呼び出し側での初期化が必要ですが、それを守る限りは自由なAPI呼び出しが可能です
b. 対になるAPIを異なるスレッドから呼び出す事はサポートしませんが、特に前準備無しでも使用可能です
省6
307: ◆SALrG1ld3mTc 2015/09/16(水)20:15 ID:53Si47U2(3/3) AAS
> 今考えているところで一番良いやり方は、BonDriver側でAppとは独立した別スレッドを作成し、
> そのスレッドでCoInitialize/CoUnInitializeを含めたすべてのCOM処理を行うのが最善ではないかなと思っています。

ですね、非常に有効だと思いますヽ(´ー`)ノ
若干トリッキーではありますが、外部に公開しているAPIの内COMが絡むものは、呼び出されたらイベントをトリガして
実際の処理はそれを受けたワーカースレッドでやり、処理が終わればそれをイベントのトリガ元に通知すると言う形に
すれば、ライブラリ内でCOMの初期化/終了処理を完結できるので、APIの呼び出し方に制限はかからずアプリ側での
初期化/終了処理も不要にできますね
#ちなみに、今のBonDriver_Proxyも(COMを使う目的ではありませんが)似たような実装になっています
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s