いつの間にか一般公開されていました。
Microsoft OS 2.0 Descriptors Specification
いきなりindex=0EEhのString Descriptorを読みに来るため、死ぬ製品があったMicrosoft OS Descriptorですが、そういった問題を起こさない新版として作られたのが2.0で、Windows 8.1からサポートされています。
公開日が9/16ということは、Windows 8.1 RTMがMSDN等で公開されたより少し後ですね。ちなみに日本語ページはデザインにバグがあってダウンロードできないため、英語ページへのリンクです。
詳しくは仕様書を読んでもらえばわかりますが、Certified Wireless USBから追加されたBOS Descriptorを拡張する形で実装されています。でもCapability Codeが標準BOSのすぐ後ろ(5)なのですが、BOSへの機能追加があったら大丈夫なのかと思ったり。
元のBOSがそうなのですが、柔軟な仕様になっています。平たく言えば、バイト列を手作業で作るのがとても面倒くさい。イメージとしてはConfiguration Descriptorの親玉で、サイズ情報を含むヘッダーで区切られた入れ子構造になっています。
bcdUSBを210hとすればOSがBOS Descriptorを読みに来ますが、少なくともWindowsではUSB 2.0 EXTENSIOSが必須となります。bmAttiributesに0(NO LPM)でも入れておけば大丈夫です。
P.S.
でもよく考えてみると、既存製品のことも考えれば1.0がなくなることはあり得ず、行儀正しい仕様に作り直しました、という以上の意味はないような気がします。そもそもWin8.1以降に限定しない限り2.0のみにはできませんし。
どちらかというとWindows Embedded向けなのでしょうか。あの世界なら1.0を止めるカスタマイズも可能でしょうから。
Microsoft OS 2.0 Descriptors Specification
いきなりindex=0EEhのString Descriptorを読みに来るため、死ぬ製品があったMicrosoft OS Descriptorですが、そういった問題を起こさない新版として作られたのが2.0で、Windows 8.1からサポートされています。
公開日が9/16ということは、Windows 8.1 RTMがMSDN等で公開されたより少し後ですね。ちなみに日本語ページはデザインにバグがあってダウンロードできないため、英語ページへのリンクです。
詳しくは仕様書を読んでもらえばわかりますが、Certified Wireless USBから追加されたBOS Descriptorを拡張する形で実装されています。でもCapability Codeが標準BOSのすぐ後ろ(5)なのですが、BOSへの機能追加があったら大丈夫なのかと思ったり。
元のBOSがそうなのですが、柔軟な仕様になっています。平たく言えば、バイト列を手作業で作るのがとても面倒くさい。イメージとしてはConfiguration Descriptorの親玉で、サイズ情報を含むヘッダーで区切られた入れ子構造になっています。
bcdUSBを210hとすればOSがBOS Descriptorを読みに来ますが、少なくともWindowsではUSB 2.0 EXTENSIOSが必須となります。bmAttiributesに0(NO LPM)でも入れておけば大丈夫です。
P.S.
でもよく考えてみると、既存製品のことも考えれば1.0がなくなることはあり得ず、行儀正しい仕様に作り直しました、という以上の意味はないような気がします。そもそもWin8.1以降に限定しない限り2.0のみにはできませんし。
どちらかというとWindows Embedded向けなのでしょうか。あの世界なら1.0を止めるカスタマイズも可能でしょうから。
コメントする