hayamdk / BonDriver_PTx_wine

Linux(Wine)上で動くPT3/PT1用のBonDriver

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

□□□ 概要

Linux(wine)上で動くPT3/PT1用のBonDriverです。
Windows向けに作られた録画・視聴用ソフトウェア資産のLinux上での有効活用が期待できます。


□□□ ビルド方法

・Windows(VC++)上でBonDriver_PTx_wine.dllをビルドします。

・Linux上でptx_ctrl.dllをビルドします(./build.sh)。
(開発関係、wine関係の各種パッケージのインストールが必要)

上記2つのDLLをセットで用います。


□□□ 使い方

BonDriverのDLLのファイル名によって、PT1/PT3や地上波/衛星の動作モードが変わります。
BonDriver_PTx_wine.dllを使いたいモードに合わせて次のようにリネームします。

・PT3 地上波: BonDriver_PT3wine-T.dll
・PT3 衛星: BonDriver_PT3wine-S.dll
・PT1 地上波: BonDriver_PT1wine-T.dll
・PT1 衛星: BonDriver_PT1wine-S.dll


□□□ 32ビット/64ビットの注意

カーネルとPTxのドライバは64ビットのものを用い、BonDriverは32ビットでビルドすることを想定しています(Windows用ソフトウェアの大半が32ビットバイナリのため)。

その想定のもと、pt3_ioctl.hにおける_IORマクロのポインタ引数をuint64_tに書き換えています。
これは、ioctlシステムコールによってカーネル空間とユーザー空間でデータをやり取りする際にカーネル側はポインタを64ビットと想定しているためで、無理やり32ビットのポインタを64ビットの整数にキャストして突っ込んでいます。

カーネル/ドライバとptx_ctrl.dllがどちらも32ビットの場合、ptx_ctrl.cにてGET_SIGNAL_STRENGTHを実行する2箇所のint*からuint64_tへのキャストを止め、pt3_ioctl.hの_IORマクロを元のものに戻す必要があります。
またカーネル/ドライバとptx_ctrl.dllがどちらも64ビットの場合はそのままでも動きますが、32ビットの場合と同様の修正を施すほうが望ましいです。なお、ptx_ctrl.dllを64ビットでビルドする場合、./build.shの-m32オプションを外す必要があります。


□□□ 動作環境

以下のPT3ドライバ
https://github.com/m-tsudo/pt3/
が動作している環境でテストしています。
ほかの派生版やPT1のドライバなどもioctlのインターフェースが同じなら動くはずだと思いますが未確認です。

About

Linux(Wine)上で動くPT3/PT1用のBonDriver


Languages

Language:C++ 56.6%Language:C 42.0%Language:Makefile 1.3%