------------------------------------
PC関連

今日もChatGPTでGV-BCTV9の64bitドライバ作成の指示。

現在の進行状況

 

GV-BCTV9 64bitドライバ解析 現在位置(2026/10/03終了時点)

1. 目標

最終目標:

  • 旧32bit bt6vid.sys の動作を解析
  • CX23880系 GV-BCTV9 用に64bit Windowsドライバを作成
  • 最終的には実キャプチャ可能な状態へ持っていく

現在は:

「元ドライバがCX23880へ何を書いているか解析中」

という段階。


2. ここまで達成済み

✅ 64bitドライバ骨格

完了:

  • Visual Studio環境構築
  • WDK導入
  • x64 Kernel Driverプロジェクト作成
  • INF作成
  • SYSビルド
  • CAT作成
  • テスト署名

✅ Windows認識

成功済み:

  • GV-BCTV9 PCIデバイス認識
  • デバイスマネージャ表示成功
  • 署名問題(Code52)解決

✅ 独自Probeツール

作成済み:

GVBCTV9Probe.exe

現在できること:

  • デバイスオープン
  • MMIO読み取り
  • CX23880レジスタ確認

確認できたもの:

  • MO_PCI_INTSTAT
  • MO_DEVICE_STATUS
  • MO_INPUT_FORMAT
  • MO_CAPTURE_CTRL
  • DMA関連レジスタ

つまり、

ハードウェアへの入口は確保済み


3. 元ドライバ解析状況

解析対象:



E:\元ドライバ\bt6vid.sys

dumpbinで逆アセンブル解析中。


発見①

内部関数



00020296

が大量に呼ばれている。

これは恐らく:



レジスタ書き込みラッパー

と判断。

イメージ:



WriteRegister(device, offset, value)

みたいな関数。


発見②

310xxx領域

主に:



310100
310104
310108
31010C
310120
...

初期化テーブル・構造体設定っぽい。

特に



00023217~
000236xx

では大量の構造体初期化。

ここは:

  • Video Composite設定
  • DMA設定
  • フィルタ構造体

などの可能性。


発見③(今日の大きな成果)

320xxx領域発見。

検索結果:

320108
32058C
320600
320608
320408

など。

 


4. 現在一番怪しい場所

★320108

頻出。

例:



mov ebx,320108h

多数。

 

予想:

  • キャプチャ状態
  • DMA enable
  • RUN/STOPフラグ

候補。


★32058C

さらに重要。

頻出。

例:



mov edi,32058Ch

 

予想:

  • CX23880制御状態
  • 割り込み状態
  • SYNC制御フラグ

候補。


★320600 / 320608 / 320408

初期化関数でセット。



00013E79
push 320600h

00013E86
push 320608h

00013E93
push 320408h

 

予想:

  • 初期化完了処理
  • DMA準備
  • 割り込み設定

5. 今日見つかった重要ポイント

この部分:



000231B2~

ここ。

内容:



call 000202DE

shr esi,0Fh
and esi,1

call 000202DE

shr eax,10h

cmp eax,8801h
cmp eax,8811h

意味:

PCI/Vendor情報を読んで、



8801
8811

を判定しています。

つまりここは:

カード種類判定ルーチン

の可能性が高い。


6. 現時点でまだ未解決

残っている最大課題:

❓ SYNC問題の本当の犯人

まだ確定していない。

候補:

  1. CX23880 GPIO設定
  2. ADC入力設定
  3. VBI/SYNC設定
  4. DMA開始タイミング
  5. クロック設定

❓ 64bitドライバ側への移植

まだ途中。

現在は:



旧ドライバ解析
       ↓
レジスタ操作抽出
       ↓
64bit版へ再実装

の「レジスタ操作抽出」段階。


次回やる予定

次回の第一候補:



dumpbin /disasm /range:0x1C500,0x1C900 "E:\元ドライバ\bt6vid.sys"

を見る。

理由:

ここに

  • 320108
  • 32058C
  • 3205F0
  • 3205B4

が集中している。

 

ここが恐らく、

「キャプチャ開始・停止・DMA制御の核心部」

に近い。


個人的な進捗感

最初の頃は、

「64bitドライバ作れるのか?」

という状態でしたが、今はかなり変わっています。

現在:

  • デバイス認識 ✅
  • 署名問題解決 ✅
  • MMIOアクセス成功 ✅
  • 元ドライバのレジスタ書込み関数特定 ✅
  • 初期化テーブル発見 ✅
  • 制御レジスタ群候補発見 ✅

なので、今は「暗闇で探す」段階は抜けていて、

元ドライバの動作表を作って64bit版へ移植する段階に入った

という感じです。

今日はかなり濃いところまで掘れました。
次回は1C500付近から再開すれば、流れが切れないと思います。👍


------------------------------------
朝の体重
57.8kg

朝
牛乳+プロテイン 262kcal
スルピリド 50mg 1錠

昼
牛乳+プロテイン 262kcal
魚肉ソーセージ 108kcal

夜
牛乳+プロテイン 262kcal
卵かけごはん 420kcal
ハムカツ 266kcal
コロッケ 238kcal
サラダ
細切りポテトリング なげわ うましお味 314kcal
フルボキサミンマレイン酸塩錠 25mg サワイ1錠
スルピリド 50mg 1錠

ツイストクランチ 30回×3セットを時間空けて計3回
サイドプランク 左右 各30秒×2セットを時間空けて計3回
サイドプランクロール 左右 各20回×1セットを時間空けて計3回
腕立て伏せ 30回
懸垂 5回
スクワット 20回を時間空けて計3回