いきなりIndex 0EEhでString Descriptorを取得に来ることで悪名高いMicrosoft OS Descriptorですが、xHCIだと読みに来るものが限られるようです。
どうもUSBスタック(正確にはハブクラスドライバ?)が主体的に行なうものらしく、Windows 8以降のMicrosoftスタックだと読みに来ますが、少なくともルネサスのスタックだとOSに関わらず、Extended Propertiesを読みません。Extended Compat IDは読みます。
他のメーカーは不明ですが、基本的にルネサスはEHCIスタックをベースに開発したのでしょうから、Windows XP初期に実装されたものだけが引き継がれ、結果として制限事項になったと推測しています。
ということは、例えば.inf無しでWinUSBを読み込ませる企ては、限定的にしか実現されないことになります。DeviceInterfaceGUIDが書き込まれないためWinUSBのAPIから接続できません。
ただしWinUSB.sys/.dllの読み込みまではできるので、Device ParametersにDeviceInterfaceGUIDを書き込めば(通常の管理者権限で可能)何とかなります。個人使用ならこれで充分でしょう。
まとめると、回避法は以下になります。
どうもUSBスタック(正確にはハブクラスドライバ?)が主体的に行なうものらしく、Windows 8以降のMicrosoftスタックだと読みに来ますが、少なくともルネサスのスタックだとOSに関わらず、Extended Propertiesを読みません。Extended Compat IDは読みます。
他のメーカーは不明ですが、基本的にルネサスはEHCIスタックをベースに開発したのでしょうから、Windows XP初期に実装されたものだけが引き継がれ、結果として制限事項になったと推測しています。
ということは、例えば.inf無しでWinUSBを読み込ませる企ては、限定的にしか実現されないことになります。DeviceInterfaceGUIDが書き込まれないためWinUSBのAPIから接続できません。
ただしWinUSB.sys/.dllの読み込みまではできるので、Device ParametersにDeviceInterfaceGUIDを書き込めば(通常の管理者権限で可能)何とかなります。個人使用ならこれで充分でしょう。
まとめると、回避法は以下になります。
- Windows 8以降でMicrosoftスタックを使用
- xHCIポートを使わない
- HCKにinfを申請し署名入り.catファイル発行(有償)
- DeviceInterfaceGUIDを手動で書き込み
- 自己署名とテストモード
- 32ビット版WindowsやXP x64
コメントする