十月の日記/メモ

 

2002.10.18(金) 11:05:29
DirectX の HID INPUT レポートディスクリプタの互換性問題についてMSDNのサポートインシデントで問い合わせてみただが、MSから回答が得られた。

契約内容が不明なので、電話で確認したところメールを公開するのは(そうだろうとは思っていたが)やめてくれとのこと。だがやめてくれという事が明記された文書は別にないという。世の中そういうもんなのか、殿様商売だからなのか、サポートサービスなんてものをまず利用しないので分からない。といっても対応の良さという点ではさすがに有償なだけのことはあって、予想外のデバッグに有用な情報などを教えてくれたりと、業務の助けとしてちゃんと使えるものだということを実感した。あり得ないがこの対応の良さが通常のユーザーサポートのものだったら感動するだろう。あり得るためには有償だった当然するように各ユーザーが KnowledgeBase をくまなく検索して、問題を自分できっちり分析してという様に行動していなければならないはずで、それはそれであり得ない訳だ。
対価を払って買った情報を自由に公開することが出来ないのかという問題は、サポートする側が一生懸命仕事をするためには、回答のメールがそのまま公開されて不利益を被る可能性があっては困るという点で考えて見れば、納得できることに気づいた。

要点だけ言うと、DirectX8.1 以降では、HID_USAGE_PAGE_BUTTON のコントロールに、HIDP_GLOBAL_REPORT_SIZE, 1 以外を指定することを許さない仕様に変更したそうな。んで、HID Usage Tables の Editor の Intel の人(hut1_1.pdfを見れば分かる)にも確認したところ、マルチビットのボタンなんて要らないよということになったとか。
PS2 や XBox のパッドが当たり前の様に感圧ボタンに対応しているというのに規格がそれを無視するというのは不幸なので、なんとかして頂きたい。そもそも感圧なんてものは使わないってことでなにも問題ないかもしれないが。

ちなみに問い合わせはこんなの。

PCIカードに接続するタイプの非USBなHumanInterfaceデバイスを動作させるためのHIDミニポートドライバを開発しています。このドライバが、Windows2000 製品版では正しく動作するのですがWindows2000 に DirectX8.1 をインストールした環境 及びWindowsXP 製品版では正しく動作しませんでした。試行錯誤の結果、INPUTレポートディスクリプタの解釈に非互換性があることが分かりました。INPUTレポートディスクリプタは、USBの様に実際のデバイスが提供するのではなく、ミニポートドライバが提供するようになっていたためそれを変更して調べたところ、以下の記述方式は、DirectX8.1 の環境では、DirectInput DLL 内で ASSERT などの問題を起こすということが分かりました。(コントロールパネルのゲームコントローラを開くことが出来なくなります。)

・HID_USAGE_PAGE_BUTTON のコントロールを、HIDP_GLOBAL_REPORT_SIZE, 1 以外、例えば 8ビットの大きさで定義した場合。

これは、HIDP_GLOBAL_LOG_MIN_1, 0, HIDP_GLOBAL_LOG_MAX_1, 1 が指定されていれば論理的に正しい設定のはず。
NTDDK/src/wdm/hid/hidgame/hidjoy.c がしているように、原始的で冗長な記法のみを使うようにしたことろ問題を解決することが出来ましたが、以下の点について確認させていただきたいです。
・非互換性の存在を認知しているか。
・DirectX8.1 のバグあるいは仕様なのか。
・仕様ならどこで定義されているものか。
・修正の予定。(ないとは思いますが)

2002.10.28(月) 02:43:16
この度新しいおもちゃ(CLIE PEG-NX70V) が導入されたので italkのログ を見てみた。かなり望みうる限りのものに近づいたと言えるのではないだろうか。断っておくが望みうる限りというのは CLIE についてではなく、こんな画面で手のひらの上でログが読めるという点についてだけである。このおもちゃは、この例の様にある一点だけに絞ってみたときにすばらしいというのが多くあるように思う。全体で見るとそれを補うだけの欠点があるので、人には買わないように勧めるかな。
画面のキャプチャには、HRCaptDA Launcher と共に用いた。

九月の日記/メモ