連載
» 2010年09月09日 00時00分 公開

64bit Windows時代到来:第4回 64bit版デバイス・ドライバ (3/3)

[打越浩幸,デジタルアドバンテージ]
前のページへ 1|2|3       

 デジタル署名がないデバイス・ドライバをインストールすると、実際にどうなるのかやってみよう。サンプルとして取り上げるのは、デバイス・ドライバ開発キット(WDK)にサンプルとして含まれているRAMDISKドライバである。WDKをインストールすると、デフォルトではC:\WinDDK\7600.16385.1\src\storage\ramdiskフォルダにインストールされている(インストール・フォルダやビルド番号はバージョンによって変わる)。

 ビルド方法はここでは述べないので、WDKのドキュメントや、前述のWDKのサイトなどを参照していただきたい。ここでは、64bitモードのドライバだけをビルドしている。このサンプル・プログラムにはコード署名用のデジタル証明書は用意されていないので、ビルドしただけでは証明書なしのデバイス・ドライバ・ファイル(ramdisk.sys)が得られる。設定ファイル(ramdisk.inf)の内容を次に示しておく。

※設定ファイルの先頭部分

; RAMDISK.INF
; Windows installation file for installing the Ramdisk driver
; Copyright (c) Microsoft Corporation All rights Reserved
;
; Installation Notes:
;
;     Using Devcon: Type "devcon install ramdisk.inf Ramdisk" to install
;

[Version]
Signature="$WINDOWS NT$"
Class=Sample
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
Provider=%MSFT%
DriverVer=09/01/2010,6.1.7600.16385
CatalogFile=KmdfSamples.cat ……ダミー・カタログ・ファイル
……(以下省略)……

 カタログ・ファイルとして「CatalogFile=KmdfSamples.cat」が設定されているが、これはサンプル・ドライバに共通の、ダミーのカタログ・ファイルの名前である。実際にこのファイルが用意されているわけではない。ramdisk.sysファイルが生成できたら、inf2catツールを使って(これはWDKに付属のツール)、ramdisk.infファイルからKmdfSamples.catファイルを生成する。具体的な操作方法については、以下のドキュメントを参照していただきたい。

 作成されたファイルは次のようになっている。

インストールするサンプルRAMDISKドライバ
WDKに付属のサンプルRAMDISKドライバをビルドして、カタログ・ファイルなどを用意したところ。

 カタログ・ファイル(kmdfsamples.cat)ファイルをダブルクリックして表示させると、次のようになっている。デジタル署名が付いていないというメッセージが表示されている。

カタログ・ファイルの内容
デジタル署名がないカタログ・ファイル。ファイルのハッシュ値のみが含まれている。
 (1)デジタル署名がないというメッセージ。
 (2)デジタル署名がないので、証明書は表示できない。

 これらのドライバ・ファイルを64bit版Windows 7のPCにコピーしておき、ハードウェアの追加ウィザードで追加してみる。まず[ファイル名を指定して実行]で「hdwwiz」と入力し、ウィザードを起動する。

ハードウェアの追加ウィザード
hdwwizコマンドを実行してこのウィザードを起動する。
 (1)これをクリックして先へ進む。

 ウィザードの先の画面では、ハードウェアを自動的に追加するか、一覧から選ぶかを選択するが、どちらでもよいので先へ進め、パスを手動入力する画面を表示させる。そしてサンプル・ドライバのramdisk.infファイルの場所を指定する。正しく指定できると、次のように表示されるはずである。

インストールするドライバの確認
読み込まれたドライバの確認メッセージが表示される。
 (1)これをクリックして、ramdisk.infファイルの場所を指定すること。
 (2)読み込まれたドライバの情報。
 (3)デジタル署名がないというメッセージ。
 (4)これをクリックして先へ進む。

 インストールしようとするドライバ名が表示されているが、デジタル署名がないというメッセージも表示されている。

 [次へ]をクリックすると、インストールの準備ができたという画面が表示されるので、さらに次ページへ進む。

インストールするハードウェアの確認
インストール前の最終確認の画面。インストールするハードウェアの名前が表示されているが、「?」マークも表示されている。
 (1)サンプル・ドライバの名前。
 (2)これをクリックしてインストールを開始する。

 ここで[次へ]をクリックすると、実際のインストール作業が始まる。しかし次のように発行元を検証できないという、かなりインパクトの強いエラー画面が表示される。

署名が確認できない場合のエラー画面
ドライバの発行元がデジタル署名で確認できないというエラー。
 (1)インストールを中止する場合はこれをクリックする。
 (2)インストールを強行する場合はこれをクリックする。
 (3)説明。

 デジタル署名が確認できないというエラーが表示されているが、これを無視してインストールさせてみる。すると次のように、一応インストールは正常に終了する。

インストールの完了画面
先の警告画面を無視して、このようにインストールすることは可能だが、正しく動作するわけではない。
 (1)インストールしたデバイス。
 (2)警告メッセージ。

 インストールが完了して上の画面が表示されるが、同時に、次のようなダイアログが(ウィザードとは別に)ポップアップ表示される。

互換性に問題があるというエラー・ダイアログ
インストールしたプログラムに問題があることを検出し、このようなダイアログがポップアップ表示される。これはデバイス・ドライバに限らず、署名のないカーネル・モジュールを検出したときに表示される。
 (1)デジタル署名がないというエラー表示。

 以上でインストールは完了である。システムを再起動してみるが、RAMDISKは作成されていない。そこでデバイス・マネージャの画面を確認すると次のようになっていた。

デバイスにエラーがある場合の表示
RAMDISKドライバにエラーが表示されている。
 (1)黄色いマークが表示されている。

 ドライバのプロパティ画面を確認すると、次のようになっている。

エラーのあるデバイスのプロパティ画面
デジタル署名がないので、ドライバを起動できなかったというエラー。
 (1)エラーの内容。

 デバイス・ドライバのロード・エラーは、イベント・ビューアで「システム」にも記録されている。

デジタル署名の有無を無視してデバイス・ドライバをロードする

 Windows OSの起動時に[F8]キーを押し、詳細なブート・メニューを表示させると、デバイス・ドライバの署名の強制を無視させるモードを選ぶこともできる。本来これは、デバイス・ドライバの開発などにおいて、未署名のデバイス・ドライバを強制的にロードさせるために利用する機能である。前述したように、このモードでは、例えば特定のデジタル・コンテンツが再生できなくなるなど、いくつかの副作用がある。常用するためのモードではないし、不正なデバイス・ドライバなどによってシステムがぜい弱になったり、信頼性が損なわれたりする可能性があるので、その目的を理解して、利用していただきたい。

署名の確認を行わないようにするための起動メニュー
Windows OSの起動時に[F8]キーを押すと、このようなブート画面が表示される。これが表示されずにWindowsのロゴ画面が表示されてしまったら、押すタイミングが遅すぎるので、再起動してやり直す。
 (1)これを選択する。

 [ドライバー署名の強制を無効にする]を選択して[Enter]キーを押すと、署名のないデバイス・ドライバであっても強制的にロードできる。起動後の画面は次のように、RAMDISKドライバが正常に起動している。

起動したWindows 7のデバイス・ドライバ・画面
署名の強制を無効にすれば、このように署名のないデバイス・ドライバでもロードして実行できるが、これはあくまでもテスト用途であることに注意。
 (1)正常に実行されているRAMDISKデバイス・ドライバ。
 (2)正しく動作している。

 なお、bcdeditコマンドで次のように指定すれば正規のデジタル署名(デジタル証明書)でなくとも有効にできるが(ルート証明書の確認が行われなくなる)、これもテスト用なので、やはり常用するためのものではない。

※デジタル署名の確認を無効にする場合
bcdedit /set testsigning on

※デジタル署名の確認を有効(元の状態)にする場合
bcdedit /set testsigning off

 この方法を利用した場合、画面上にテスト・モードであることを表すメッセージが常に表示され、通常の状態ではないということがすぐに分かるようになっている。

testsignningをオンにした場合の表示
testsignningをオンにした場合、画面の右下に(Windows 7の場合)このような文字が表示される。

「64bit Windows時代到来」のインデックス

64bit Windows時代到来

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。