2007年5月9日水曜日

USBの資料

Mac OS X用にUSBのkextドライバを書く場合に問題となるのがその資料やサンプルコードの少なさです。以下のURLに面白い記述があります。

Hardware Developer Documentation: (USB Devices)

上記のURLに以下のように書かれています。

There is no Inside Macintosh documentation for USB devices.
(USB装置用Inside Macintosh資料はない)

上記のように言い切った上でMac OS USB DDKと以下のpdfファイルを参照するように書かれています。

Mac OS USB DDK API Reference

ところが、この資料は1999年に書かれたもので、ハードウェア的にはUSB 1.1を基準にしていますし、ソフトウェア的にもその後さまざまなAPIなどが追加され統合されています。たとえば、古いDarwinのUSB Familyには単独のkextドライバとしてビルドできるマウスのソースコードが含まれていましたが、新しいDarwinには含まれなくなりました。ちなみに、マウスを扱うコードはポインティング・デバイスとしてHID系のドライバは統合され、さらに以下のディレクトリからも分かるようにUSB Familyのプラグインの一つになっています。

/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/IOUSBHIDDriver.kext/

さらにMac OS X USB DDKはもちろん、Mac OS X USB SDKもなくなり、Mac OS X USB Debug Kitsが残っているだけです。

Hardware & Drivers - Mac OS X USB Debug Kits Downloads

おそらく、Appleとしてはkextドライバをサードパーティが書く事によりカーネルが不安定になる可能性のリスクよりも、アプリケーションがAppleの汎用ドライバを経由してUSB装置とやり取りする事を推薦しているのではないかと思います。多くの場合はこの方法でも良いのですが、セキュリティ関連製品などUSB装置によってはカーネル内のkextドライバの方がスマートな場合もあります。

もちろん、前述のDarwinの旧版からマウスのソースコードを引き出して使うことも可能でしょうが、現在のMac OS Xに合わせるにはかなりの修正が必要です。また、USB Audioなどのように特定のサービスから掘り下げていくのも一案でしょう。

Audio Device Driver Programming Guide

いずれにしても、学習には時間がかかります。

0 件のコメント: