備忘録などいろいろ

イロイロ! 比較的Twitterの延長のノリで書くと思います。

鉄騎(XBox無印)のコントローラをWindows 7 x64で使うために、Windowsデバイスドライバを自作してみようと思うからその為に必要な知識などを蓄積していく鉄騎(XBox無印)のコントローラをWindows 7 x64で使うために、Windowsデバイスドライバを自作してみようと思うからその為に必要な知識などを蓄積していく

鉄騎(XBox無印)のコントローラをWindows 7 x64で使うために、Windowsデバイスドライバを自作してみようと思うからその為に必要な知識などを蓄積していく

Windowsドライバ作ろうと思ってなんとなくネット上をうろついて情報収集していたのだが、
一度体系立ててドライバ自作の知識などをまとめた方がいいだろうと思ってまとめてみるのである。

けど、一気にまとめる時間はないので、
最初は箇条書きみたいになるかも。

OS: Windows 7 Professional 64bit
使いたいもの: 鉄騎コントローラ

vtchidというドライバがある。
古い。
Windows XP x86用しかない。
ソースコードは手に入る。
Cygwin環境でコンパイルしてみたが動かなかった。
もしかするとinfファイルの書き方がまずいか?
vtchidはgccツールチェーンのクロスコンパイラ機能を使ってコンパイルする。
Cygwingccは、Cygwin依存ライブラリ等をリンクするので、バイナリをWindowsに持ってきても動かない。
gcc -mno-cygwinというオプションを付けることで、Cygwin依存ライブラリは使わず、Windowsネイティブで動くバイナリを生成できる。
これを使ってコンパイルした。ちなみに、現在のgccはバージョン4.xxで、gcc -> gcc-4というシンボリックリンクになっている。
gcc-4は-mno-cygwinオプションを受け付けず、これを付けた場合は、専用のクロスコンパイラを使え(amd64-mingw32msvc-gccを使えということ?)と言われる。
元々のvtchidのソースを、変更なくコンパイルするために、gccシンボリックリンクgcc-3に貼り直した。これでコンパイルで来てたはず。Cygwin環境でなく、Linuxならupdate-alternativeシンボリックリンクを張り替える。
こうしてコンパイルしたものもまだ動いておらず、現在残されている選択肢は、
1. クロスコンパイラを使ってコンパイルしながら、ターゲットOSで動くようにトラブルシューティングをする
2. WDK(Windows用ドライバ作成ツールチェーン・環境)を使ってコンパイルできるコードに書き直す
である。
1.でトラブルの原因となっていると考えられる点は
・infの書き方違う
・クロスコンパイラの使い方が間違っている。具体的には、Windows7 x64で使えるバイナリが生成できていない
・コード自体がダメ。Windows 7 x64では動かない
のどれか。ドライバインストール時の挙動からして「infの書き方が正しくない」説が濃厚だが、他の原因も併発している気がする。

ということで、最初に必要なのは、どちらにしろinfの書き方を調べなければならない。
とりあえず、infの書き方を調べる。