web-dev-qa-db-ja.com

キーボードデバイスドライバーの作成

キーボードデバイスドライバを書いた経験のある人はいないかと思いました。キーボード割り込みがどのように機能するかの基本は知っていますが、すべての詳細を実際には知りません。難しいですか?一人では難しすぎる?

最近Appleキーボードを購入しましたが、Windowsドライバーは多くのキーを認識していないようです。また、ドライバーを作成する以外にこれを解決する簡単な解決策を知っている場合は、それもありがたいです(私はすでにSharpKeysを試しましたが、特定のスキャンコードを認識できないのはWindowsドライバの問題のようです)

20
Albinoswordfish

Windows用のデバイスドライバーを作成するために必要なものは次のとおりです。

  • Wdfドライバーフレームワーク(KMDF)とそのAPIの理解(WDMはお勧めしません)
  • カーネルのデバッグに使用できる2台目のPC(またはHyper-V)。 WinDbgをダウンロードしてから、2番目のマシンをリモートデバッグします。デバッグする方法なしでデバイスドライバを作成しようとしないでください。
  • キーボードのソフトウェア<->ハードウェアインターフェイスの完全な仕様。専門家はどういうわけか実験的にインターフェースを推測できるかもしれませんが、これには時間がかかる可能性があります。他のプラットフォームでドライバーをリバースエンジニアリングする方が幸運だと思います。

非常に類似したドライバーまたは別のプラットフォーム上のドライバーのソースを見つけることができれば、これは実行可能になる可能性があります。そうでない場合は...

デバイスドライバーに興味がある場合は、ソフトウェアのみのドライバーを作成することから始めてみてください。ほとんどの場合、それは単なる「おもちゃ」ですが、カーネルで非常に優れた処理を実行できるため、おもちゃのドライバーを用意する価値があるかもしれません。 IOCTLを使用して、ユーザーモードの.exeとドライバーの間で通信できます。最終的には、ソフトウェアのみのキーボードエミュレートドライバーに更新してから、実際のキーボードデバイスドライバーにアップグレードしてみてください。

ソフトウェアのみのキーボードドライバに関するスレッドが見つかりました: http://www.osronline.com/showthread.cfm?link=119885

多分これは便利です: http://www.osronline.com/ddkx/intinput/i8042ref_9eb6.htm

更新:Hyper-VはすべてのWindows 8ユーザーが利用でき、「2台目のPC」の要件を大幅に排除する必要があります。 VMでドライバーを実行し、カーネルデバッガーをそれに接続できます。

12
VoidStar