連載
» 2013年07月26日 10時00分 公開

Windows 8 デバイスドライバ開発入門(1):知っておくと便利な「Visual Studio 2012」によるテスト署名 (2/3)

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

2.テンプレートを使ってドライバ開発

 「1.Visaul Studio 2012でデバイスドライバ開発が可能に」で紹介した2つのツールをインストールできたら、早速、Visual Studio 2012を起動してみましょう。

 起動後、メニューバーから[ファイル(F)]―[新規作成]―[プロジェクト]とすると、図1のような画面が表示されます。


ドライバテンプレート 図1 ドライバテンプレート 【※画像クリックで拡大表示】

 図1を見ると、「Windows Driver」の下にドライバ開発のためのテンプレートが用意されているのが分かります。

 まず、作成するドライバの種類(何のデバイス用にドライバを作成したいのか?)に応じて、使用するドライバモデルを決定し、そのモデルに合ったテンプレートを選択します(図2)。

ドライバモデルの選定 図2 ドライバモデルの選定

 図2に示した通り、デバイスの種類によっては、固有のドライバモデルがあらかじめ用意されていますので、該当するテンプレートを選択してください(例:Networking、Storage)。もしも、固有のドライバモデルが用意されていなければ、大抵の場合、WDFを選択すれば問題ありません。詳細については、以下に示したMSDNライブラリの情報をご覧ください。

MSDNライブラリ:ドライバモデルの選択

URL ⇒ http://msdn.microsoft.com/ja-jp/library/ff554652%28v=vs.85%29.aspx



 テンプレートを選択すると、一部のソースコードおよびinfファイルが自動で生成されますので、後はドライバのソースコードを記述していきます。

3.ドライバのデジタル署名

 最近は、PCメーカーからも64bit OSを搭載したパソコンが発売されています。そのため、ドライバも64bit OSで動作することが必須となっています。

 アプリケーションとは異なり、Windows 32bit OSで動作するドライバは、Windows 64bit OSでは動作しません。そのため、ドライバは「32bit OS用」と「64bit OS用」を別々に用意する(ドライババイナリを別々に用意する)必要があります。これは、開発環境がVisual Studioになっても同じです。

 64bit OS用のドライバを開発するに当たり、最も面倒なのが「ドライバのデジタル署名」です。

 デジタル署名は“ドライバの作成者を明示する”ために実施します。これはセキュリティ強化の目的で設けられたものであり、Windows Vista以降の64bit OSで必須となっています。つまり、64bit OS環境の場合、署名のないドライバをインストールしたとしても動作させることができません(未署名のドライバを動作させることはできますが、OSの起動オプションで毎回「ドライバ署名の強制を無効にする」を選択しなければならず、かなりのストレスになります)。

 では、ドライバのデジタル署名とはどのように行うものなのでしょうか。その流れを以下に示します(図3)。

ドライバ署名の流れ 図3 ドライバ署名の流れ

 図3のカタログファイル(CATファイル)作成と、カタログファイルへの署名を併せてドライバのデジタル署名と呼びます。

 Windows OS上でサポートされているデジタル署名には、以下の3つがあります。

(1)Microsoft署名

 Windowsハードウェア認定キット(HCK:Hardware Certification Kit)を使用して認定に関するテストを行い、テストログおよびドライバパッケージをダッシュボードに提出して認定を受けます。認定が通ると、マイクロソフトのデジタル署名済みのカタログファイルを入手できます。

(2)Authenticode署名(自己署名)

 root証明を行っている証明機関(VeriSignなど)が発行した証明書を使用するため、第三者証明書機関に証明書の発行を依頼する必要があります。ドライバの作成者は自身でカタログファイルを作成し、証明書機関から発行された証明書を使用して、カタログファイルに署名を行います。

(3)テスト署名

 ドライバの作成者は自身でカタログファイルを作成し、自身で作成した証明書を使用して、カタログファイルに署名を行います。ただし、この方法で署名を行ったドライバをインストールするには、Windows OSを“テストモード”で起動する必要があります。

 これらを表にまとめると以下のようになります(表1)。

(1)Microsoft署名 (2)Authenticode署名 (3)テスト署名
認定テスト実行の必要性 あり なし なし
デジタル証明書の入手 なし 第三者証明書機関に発行を依頼する ドライバ作成者が作成する
カタログファイルへの署名 マイクロソフトが行う ドライバ作成者自身が行う ドライバ作成者自身が行う
64bit OSへのインストール 可能 可能 テストモードで起動した場合のみ可能
表1 Windows OS上でサポートされているデジタル署名について

 デバイスドライバを対外的にリリースする場合は、(1)Microsoft署名もしくは(2)Authenticode署名の方法でデジタル署名を行います。一方、開発段階のデバイスドライバを64bit OS上でテストしたい、というような場合には(3)テスト署名を使用することが多いです。

 ここまでの説明を聞いて、「そもそも、テスト署名をするのが面倒くさい!」という意見もあることでしょう。でも安心してください。実は、Visual Studio 2012であれば、簡単にテスト署名を行うことが可能なのです!

Copyright © ITmedia, Inc. All Rights Reserved.