2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

BonDriver共有ツール総合 その2

1 :名無しさん@編集中:2015/04/07(火) 20:25:07.03 ID:n6IDd8Gi.net
BonDriver共有ツール総合

※前スレ
http://peace.2ch.net/test/read.cgi/avi/1366339738/

471 :名無しさん@編集中:2015/11/18(水) 20:44:13.95 ID:ioZ5HYxg.net
余計なコードが入っていたので上げ直し。

B25 patch for BDPex 1.1.6.4 (VS2015用)
http://pastebin.com/U37ZPLMj

472 :名無しさん@編集中:2015/11/19(木) 16:50:53.12 ID:BBrGLq4u.net
>>471
ありがとうございます

473 : ◆SALrG1ld3mTc :2015/11/19(木) 20:08:47.93 ID:T7X9SZk4.net
>>471
あまり問題になる事は無いとは思うのですが、以前からぼんやりと思ってた事が…
このdecode()の実装の場合、_b25->put()でエラーになった際に、decode()呼び出し側からみると
少なくとも1パケットドロップする(ECMが処理できずにrelease()を呼んだ場合)事になるか、
不必要なデータが追加されてしまう(次回以降の_b25->put()がまた成功した場合)事になりますよね

これを回避する為には、やり方は色々考えられると思いますが、一応当方の手元で期待通りに動いているのは、
b25ライブラリ側へput()がエラーになった場合の処理の変更と、未処理バッファの回収APIの追加を行い、
decode()内でput()がエラーになった場合にはそれらを使って、今までdecode()呼び出し側に返したデータと
一貫性がある(ドロップも追加も無く、ただ復号漏れになる)ように返すデータを調整する、と言う物です

具体的には、put()のエラー処理の方はsbufとdbufのtail位置を呼び出される前の状態に巻き戻し、
未処理バッファの回収APIはsbufのheadからtailまでを返すものをwithdraw()として実装しています
https://github.com/epgdatacapbon/libarib25/tree/b8ae14182e4ed52c4488118ef6aa7d7668ab14d2
へのパッチなら
ttp://pastebin.com/JpDJFE3c
と言う感じですね
#まず問題にはならない地味なバグ修正や、ECMやEMMをカードへ送るのに失敗した場合のリトライ方法及び
#回数の変更なども含んでいます

474 : ◆SALrG1ld3mTc :2015/11/19(木) 20:16:23.08 ID:T7X9SZk4.net
使う側の実装は
ttp://pastebin.com/sTAGcBy8
みたいな感じです
これを通して録画しながらカードリーダからカードを抜いてみて、録画ファイルにドロップが
発生しないのを期待通りの動作の確認としています
このクラスをEDCBからも使うためにdll使用前提になってたりdecode()のインタフェースが
ちょっと違ってたりしますが、ご参考までにヽ(´ー`)ノ

475 :名無しさん@編集中:2015/11/20(金) 17:09:13.34 ID:N+B16m/Q.net
>473,474
いつもありがとうございます。
早速アップデートさせて頂きます。

476 :名無しさん@編集中:2015/11/20(金) 22:53:39.00 ID:J202ybZY.net
質問させてください。
Windows7からWindows10にアップグレードしてPT3周り安定してたからクリーンインストールしてみたんですが
BonDriverProxyExサービス開始時にiniファイル読み込んでくれなくなりました。
サービス再起動すればiniファイル読み込まれるようです…

サービス再起動せずにiniファイルを読み込ませるにはどうしたらいいでしょか・・・?

Windows10 Pro TH2 x64
BonDriverProxyEx サービス版x64 コミットd555d2b

477 :474:2015/11/20(金) 23:31:25.65 ID:J202ybZY.net
>BonDriverProxyEx サービス版x64 コミットd555d2b
ではなく
BonDriverProxyEx サービス版x64 コミットe4ea3e8でした

478 : ◆SALrG1ld3mTc :2015/11/21(土) 09:07:38.08 ID:r0GrdxpX.net
>>474の実装例ですが、よく考えたら_bcasオブジェクトは個別の送受信バッファを持っていて、
ライブラリ内部では特に排他処理が行われてるわけでもないので、そのまま複数のクライアントで
共用するのはまずいですね(;´Д`)
かと言ってアプリ側で_b25->put()を排他にするのはロックの粒度が粗すぎてイマイチだと思うので、
わざわざ参照カウントのような事はやらずに、>>471さん方式で、素直に全部のクライアント用に
ちゃんと_bcasオブジェクトをつくる方が正しそうです…
ttp://pastebin.com/NWz7B7pY
失礼しました(;´Д`)
ついでと言っては何ですが、一旦パススルー動作にフォールバックしてもクラス使用側は気にせずに
decode()を呼び続ければ、一定時間毎にカード初期化から再チャレンジするようにしてみました

479 : ◆SALrG1ld3mTc :2015/11/21(土) 09:11:42.16 ID:r0GrdxpX.net
>476-477
えと、win7の頃は問題無かったと言う事でしょうか?
その辺りのコードは以前から何も変更していないので、何だろう…
既に試されたかもしれませんが、一旦サービス登録から削除して、再度登録してみるとかくらいしか
思い付きません…
クリーンインストールなら関係ないかもしれませんが、サービスとしてインストールした時と
実行ファイルの設置パスが変わっており、かつ前のパスにも設定ファイルが残っていたりすると、
一応そんな感じの挙動になりそうな気はします(;´Д`)

480 :名無しさん@編集中:2015/11/21(土) 10:55:53.02 ID:Iv/hpT+a.net
>>479
>えと、win7の頃は問題無かったと言う事でしょうか?
Win7の頃とWin7→Win10アップグレード後は問題はなく、Win10クリーンインストールで問題発生です

>一旦サービス登録から削除して、再度登録してみるとかくらいしか
何度もやってみましたがダメでした…

>サービスとしてインストールした時と実行ファイルの設置パスが変わっており
パスは変わってないです…

今のところわかってるのは以下の2つです
・サービスのスタートアップの種類が"自動"だとiniファイル読み込んでくれず、要サービス再起動
・サービスのスタートアップの種類が"自動(遅延起動)"だと問題なくiniファイル読み込んでくれる

遅延起動だと起動遅すぎるので一時しのぎとしてバッチファイルでサービス再起動させています><

総レス数 837
356 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★