連載
» 2014年11月21日 11時00分 UPDATE

Windows 8 デバイスドライバ開発入門(4):「Windowsハードウェア認定」があなたの製品の価値を上げる(後編) (1/3)

Windows 8対応のデバイスドライバを開発する際に、“知っておくと便利なポイント”を実践的な観点から紹介する連載「Windows 8 デバイスドライバ開発入門」。今回は、「Windowsハードウェア認定」についての後編をお届けします。

[橋口友美(サイエンスパーク),MONOist]
photo

 Windows 8対応のデバイスドライバを開発する際に、“知っておくと便利なポイント”を実践的な観点から紹介してきた連載「Windows 8 デバイスドライバ開発入門」。今回は、Windows 10になってもきっと残るであろう、「Windowsハードウェア認定」について、実践的な観点から説明していきます。

 前編ではWindowsハードウェア認定の概要、用意すべきテスト環境、理解しておくべき“Product Type”の概要について説明しました。後編である本稿では、この“Product Type”が表示されない場合の対処法、ハードウェア認定テストの実施など、引き続き、Windowsハードウェア認定の流れを追っていきます。

“Product Type” が表示されない場合

 デバイスを接続した時に“Product Type”が表示されないケースがあります。

 このようなケースは、テストツールがデバイスの持つ特性を検出した際に、そこから“Product Type”を導き出せなかったということです。

 このような場合、「Microsoftも定義できないくらい、先進的なデバイスってこと!?」とか、「テスト項目が少ないし、認定を受けるのは楽勝!」とか、思ってしまうところですが、その期待は一瞬で崩れ去ります。

 前編でも書いたとおり、「Windowsハードウェア認定」を受けるには、少なくとも1つの“Product Type”を決める必要があります。ですので、自動で表示されない場合は、Matrixの中から頑張って探す必要があります。

 詳しくは、[Windows HCK FAQ]の「 Q: When I select my device the product types summary in the right pane does not display the product type I want to certify. What should I do? 」という項目を確認してください。

 それでも、デバイスが先進的過ぎて、というより、汎用的すぎて、どうにもこうにも当てはまる“Product Type”が見つけられない。といった場合もあります。

 ここで、焦ってとんちんかんな“Product Type”を選択しようものなら大変です。

 “Product Type”を決めると、その“Product Type”の持つべき特性に関するテストが自動的に決まりますから、テスト項目が全て不合格になってしまう可能性があります。

 この例外ケースですが、そもそもどのような時に起こり得るのでしょうか?いろいろなデバイスで試してみました。

接続した時に“Product Type”が検出されなかったデバイスの例
No. デバイス ドライバ 検出
1. USB3.0対応カメラ Third Party製 ×
2. PCI Express Add-In Card Third Party製 ×
3. COMポート Third Party製 ×
4. BLEヘルスセンサー(※) 標準 ×
5. BLEセンサー(※) 標準 ×
(※)Bluetoothデバイスは全滅でしたが、これは単にHCKが対応していないだけということだそうで、“Product Type = Bluetooth Controller”が該当します

 結構、簡単に見つかってしまいました。きっと他にもたくさんあると思います。

 「Windows 8 デバイスドライバ開発入門(1):知っておくと便利な「Visual Studio 2012」によるテスト署名」の中で、「ドライバモデル」について少し触れましたが、ドライバモデルが、「デバイス固有のモデル」となるもの以外のデバイスであると、このようなケースになってしまう可能性があるようです。

 例えば、USBデバイスやPCIデバイスは、デバイスによっては、ある程度、自由度を持ってドライバの開発が可能です。PCIのグラフィックボードなどであれば、選択の余地はなく、決められたドライバモデルを使用しないとデバイスが動作しないのですが、そうではないケースもあります。カメラなどは、マイクロソフトが定めたDirectShowというインタフェースを使用してドライバを開発することもできるますし、ベンダー独自のインタフェースを定義して開発することもできるといったように。

 まとめますと、ただのUSBデバイスでは駄目で、ただのPCIデバイスでも駄目なのです。

 USBカメラとか、USB外付けディスク、とか、とにかくそのデバイスが何をするものなのかというところをきちんと定義して、かつ、そのデバイスに対して推奨されるドライバモデルやインタフェースを使用してドライバを開発してくれ!というのがマイクロソフトの主張です。ですので、Windowsハードウェア認定を取ると決めた時点で、それを見越した設計をしておかなくては駄目ですね。はい。

 開発初期に、どの“Product Type”で認定を取得するのかを決めて、必要な要件を確認し設計/実装を進めていく方が安全でしょう。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.