Top 最新情報 会社概要 セミナー 製品 開発者向 サポート download 問い合せ English
Windows Linux NETMF H8マイコン FPGA SHSMOD E-Kit WDDDC techmemo

Windowsデバイスドライバ開発のためのヒント


Windows ハードウェア開発 (WHDC)

Windows 10 ハードウェア開発

ハードウェア開発者向けのサポートとコミュニティ

Tech Fielders コラム Windows 7 時代のデバイスドライバ開発

CQ出版 特集 Windows 7 時代のデバイス・ドライバ開発

Windows Summit 日本語PPTとインデックス

CQ出版 連載(終了)Windows Vista時代のデバイスドライバ開発 各回の概要

旧版WDK (6001.18002) 情報

BCDedit 簡単操作法

デバイスドライバ開発情報

Windows Vistaにおける64bit版ドライバのインストールとテスト

従来までのDDKとWDKの利用方法

インターフェース 2007年5月号 Windows Vista時代のデバイス・ドライバ開発:正誤表

 


Windows 10 時代のデバイスドライバ開発情報

WDK 10 (Windows Driver Kit 10) の入手とインストール

開発ツール入手とインストール手順: Windows 10 用のキットとツールのダウンロード

サンプルソースの入手先:https://github.com/Microsoft/Windows-driver-samples
右側の「Download ZIP」 で全部入手可能です。

WDDDC:

BLOG-ROMMER 日高のブログ:


Windows 8 時代のデバイスドライバ開発情報

WDK 8 (Windows Driver Kit 8) の入手

開発ツール入手先: Windows Driver Kit のダウンロード

サンプルソースの入手先:Windows hardware development samples
従来のSRCディレクトリ以下に相当する「基本サンプルソースコードセット」は、上記から Windows 8 Driver Samples を選択して「すべて (101.3 MB)
」を入手すると良いでしょう。そのほかにも、NDISやUSB等のキーワードで検索して他の有用なサンプルソースを探すことも可能です。

注意: 今回配布から、WDKはVisual Studio 2012 のアドインになりました。ドライバ開発のWDKを使うためにはまず Visual Studio 2012 (professional以上) を入手してインストールして下さい。インストール先のホスト環境とサポートするターゲットOSは、いずれも Windows Vista以降です。つまり Windows 7にこれらをインストールしてWindows 7用ドライバのビルドを試すことも可能です。Preview版なので製品開発には利用できません。

参考情報:2012年4月24日のWindows Developer Daysで弊社代表日高が、「Visual Studio と Metro UI で始める Windows 8 デバイスドライバ開発」のテーマでセッションを講演しました。資料はこちらです。

BLOG-ROMMER 日高のブログ:


Windows 7 時代のデバイスドライバ開発情報

WDK 7.1.0 (7600.16385.1) の入手

現在の最新版はWDK 7.1.0 です。Windows 7の新機能を利用するドライバ開発は勿論、Windwos XP以降の各種OS向け、各種製品向けドライバ開発をするためには、WDKの最新版 (7.1.0) を入手してインストールする必要があります。

Microsoft Download Center から、誰でも自由にダウンロード可能です。

WDK 7.1.0 (7600.16385.1) のインストール手順

入手したISOイメージはCD/DVDに焼くかマウントして、対象PCから読み込みます。ISOイメージ中のKitSetup.exe(通常は自動起動)を実行後、最低限以下の項目を選択(チェック)して、インストールを開始します。

次の画面でインストール先をC:\WinDDK\7600.16385.1\と確認しますので、Cドライブの容量があれば変更せずに、そのままインストールを行って下さい。ライセンス確認後しばらくすると「Finish」の表示でインストールが完了します。

インストールする項目の選択では、勿論全てにチェックを入れて全部インストールしても構いません。しかし通常の使い方では上記の通り、良く使われると思われる Help Document, Sampelsを含む「Full Development Environment」の内容全てと、WinDBG等を含む「Debugguing Tools for Windows」があれば十分です。

参考までに他の項目について簡単に解説すると、「Devie Simulation Framework」は、USBドライバ開発用のUSBデバイス・シミュレータです。実際のシミュレーションの内容は、CScript (WSH) で記述して動作させます。従ってUSB以外のドライバ開発や、開発対象のUSB実デバイスを持っている場合には通常不要です。

「Windows Device Testing Framework」は、Windows ロゴテストの様な繰り返し実行するテスト動作を CScript, VBScript, JScript を記述することができます。 ロゴテストの動作環境と簡単なサンプルプログラム、実行ライブラリを提供しているとも言えます。従って、スリープやハイバネーション等を繰り返す時間がかかる処理の繰り返しを記述するのに適しています。通常はロゴの規定に従って定義してあるロゴテストをそのまま使う場合が多く、開発者がWDTFを使用してテストを新規に作ることはあまりありません。

WDK 7.1.0 での修正点

  • Windows XP x64 is now supported as an installation platform
  • Debugger Changes
  • Redistributable Change: Update to offreg.dll
  • Build Environment Changes
  • Sample Changes and Issues
  • Update to Sensor Adapter Test Suite

というように、細かな修正(バグフィックスと機能向上)が中心の様です。詳細はRelease Noteを参照して下さい。
このRelease Noteを参照する際の注意としては、「WDK Version 7.1.0 Changes and Issues」の項だけが、7.1.0 での追加修正事項だということです。残りの部分は、7.0.0のリリース時のものです。今回の公開に伴い、7.0.0 はMicrosoft Download Centerからは入手できなくなりました。

古いWDK/DDKの入手

MSDNを購読してなくても、以下のConnectのページにLive IDでログインすれば、フリーで有用な過去のWDKが入手可能です。

Windows Driver Kit Download: WDK for Windows 7 (7600), WDK for Windows Server 2008 (6001.18002), WDK for Vista (6000), DDK for Windows Server 2003 SP1(3790.1830), DDK for Windows 2000

ワンポイント・アドバイス

WDK 7.0.0や7.1.0の公開により、WDMのサンプルが極度に無くなり、Windows 2000が完璧にサポート対象から外れたため、戸惑っているドライバ開発者も多いと思います。そんな方へのワンポイント・アドバイスは、WDK 7.1.0とともに、WDK 6001.18002をインストールして利用することです。

WDK 6001.18002は現在でも、Microsoft ConnectのWDKプログラムや、MSDNで入手可能です。それで1台の開発マシンには、複数バージョンのWDKを C:\WINDDK\ 以下に同時インストールが可能なので、目的に応じて使い分けることが可能です。例えば、WDK 6001.18002にしかない、WDMのサンプル・ドライバは、そのままかまたは少し変更するだけでWDK 7.1.0上でもビルドすることができます。また逆に、WDK 7.1.0のWDFやDIFxを使用してデバッグしたドライバやインストーラを、少し修正してWDK 6001.18002のredist以下の再配布DLL等と組み合わせることで、Windows 2000に対応させることができます。

古いドライバのメンテナンスの際には、やはりお手本となるWDKのサンプルのWDMドライバがどう書いてあり、どう動くのかは知りたいものです。この際、全面的にWDFに書き換える手も有ります。それでも動作比較のためにも当分の間はまだ、開発マシンに、WDK 6001.18002に入れておく必要がありそうです。

CQ出版 インターフェース誌 特集 Windows 7 時代のデバイス・ドライバ開発 (2010年2月号)のデバッグ(本文訂正)とダウンロード、リンク集

デバイス・ステージ (Device Stage)

デバイスステージ(Device Stage)とはWindows 7で新しく導入された、デバイスを操作するためのよりわかり易いGUIです。Windows 7 のスタート・メニューからは、あらかじめプロパティで設定しておくことにより「デバイスとプリンター」としてアクセスが可能になります。Microsoft の文献では、Device Center, Device Experience という呼び方でも紹介されています。

2010年に公開されたWindows Summit はまさしく Device Statge に関する技術情報を習得するためのオンライン・イベントであり、情報ページです。日本語のPPTとインデックス・ページが公開されています。

英語版のセッション・ページではPPTとともにストリーム・ビデオも公開されています。

英語版のMSDNライブラリ中の、Device Experience for Printers, Scanners, and Multifunction Printers の項にも カスタマイズの方法や、Device Stage Metadata Packageの作成方法が載っています。

参考書籍

  • Developing Drivers with Windows Driver Foundation

    Penny Orwick、Guy Smith Microsoft Press

  • Windows Vistaデバイスドライバプログラミング

    浜田 憲一郎 ソフトバンククリエイティブ

  • [入門と実践] Windows Vistaカーネルソフトウェア開発技法

    滝口 政光 技術評論社

  • インサイド Microsoft Windows 第4版〈上〉〈下〉

    日経BPソフトプレス

フォーラムと掲示板

日本語
英語

WDK 7600 サポート情報

WDK 7600 のホスト側サポート環境とターゲット環境は、「Tech Fielders コラム Windows 7 時代のデバイスドライバ開発 第1回」 にまとめました。

 


WDK (Windows Server 2008 RTM WDK) - 6001.18002 旧情報

はじめに

Windows 7 用の正式版のWDKがリリースされた現在、たとえWindows XPやWindows Vista専用のデバイスドライバの開発であっても、旧版のWDKの利用は推奨されません。Windows 2000用と同一のバイナリを提供したいといった、特別な事情が無い限りは、上記のWindows 7 用WDKを利用して開発しましょう。

入手方法

MSDNか、またはMicrosoft ConnectWDK/WLKプログラムに登録して入手可能です。以前の6000(Windows Vista WDK)や6001.18001はいくつかの問題があるために、製品開発には使用しないことをお勧めします。

  • WDK for Windows Server 2008 - Build 6001_18002
    リリース日 2008/10/23
    サイズ 577.71 MB
    バージョン 6001.18002

ターゲット・オペレーティング・システムのサポート

WDKの文書やリリースノートの記述はわかり難いので、以下にまとめました。

環境 ホスト環境 ターゲット環境
OS wlh vista wnet wxp w2k wlh vista wnet+ wnet wxp+ wxp w2k
SV03SP1DDK WDM
WDK (6000) WDM ×
WDK (6000) KMDF1.5 ×
WDK (6000) UMDF1.5 * × × × × ×
WDK (6001.18002) WDM ×
WDK (6001.18002) KMDF1.7 ×
WDK (6001.18002) UMDF1.7 × × × ×

凡例

  • SV03SP1DDK → Windows Server 2003 SP1 DDK
  • WDK (6000) → Windows Vista RTM WDK
  • WDK (6001.18002) → Windows Server 2008 RTM WDK
  • wlh → Windows Vista SP1 と Windows Server 2008 (x86, x64, ia64)
  • vista → Windows Vista (x86, x64 SP無)
  • wnet → Windows 2003 Server SP無 (x86, x64, ia64)
  • wnet+ → Windows 2003 Server SP1 以降とR2 (x86, x64, ia64)
  • wxp Windows XP SP1 (x86)
  • wxp+ → Windows XP SP2以降 (x86)と Windows XP (x64)
  • w2k Windows 2000 SP4 (x86)
  • ○ サポート
  • ― 未サポート
  • ×動作せず

*WDK 6000でのUMDFドライバの開発では、ビルド時常に「Windows Vista and Longhorn Server Environment」を使用する必要があります。


デバイスドライバ開発情報

  • WHDC (us)

    Windowsドライバとデバイスの開発に関する情報はWHDC(Windows Hardware Developer Center)にまとめられています。

  • WDK (us)

    最新のWDK(7600)を使用することで、Windows XP からWindows 7, Windows Server 2008 R2 用までのデバイスドライバが開発可能です。

    Windows 2000用のデバイスドライバ開発 →
    一世代前のWDK(6001.18002)を使用することで、Windows 2000からWindows Server 2008用までのデバイスドライバが開発可能です。
    Windows 7移行の新機能を利用しない場合は、このWDKを利用することで、同じバイナリでWindows 2000からWindows 7 / Server 2008 R2でも動作可能なドライバを開発することも可能です。

    Windows NT 4.0のデバイスドライバ開発 → Windows NT 4.0 DDKをMSDNで入手して開発します。

    Windows Me, 98用のデバイスドライバ開発 →Windows Server 2003 SP1 DDKをMSDNで入手して開発します。(VxDや16bitドライバを開発する場合は、そのほかにWindows 98 DDKと16bit開発ツールが必要です)

  • WLK (Windows Logo Kit) → Logo取得のためのテスト (us)

    DTM(Driver Test Manager)によるテストは、安定したデバイス・ドライバの開発と検証には欠かせません。

    DTM環境の構築とテスト実施にはそれなりの手間と時間がかかります。テストを成功させるため、あるいはテスト結果を正しく検証するためにはまず、「正しくテストを行うことができる、最新の環境」を構築する必要があります。

    ひとつのドライバのテスト実施のためには、最低条件としても以下のようなリソースを確保することをお勧めします。

    • 最新の安定動作するデスクトップPCを3〜5台 (テスト対象OSの種類に依存)
    • 専任の担当者を1人〜2人 (テスト対象OSの種類に依存)
    • 1週間〜3週間程度のテスト期間 (ドライバのテスト内容、テスト対象OSの種類に依存)

    ※ DTMの正しい利用には手間がかかりますので、安易に使用するとエラーが発生したり等トラブルの元となります。

  • GUIDgen

    デバイスドライバやCOMプログラム開発に欠かせないGUIDgenツールですが、現在はWDKにもSDKにも含まれていません。Visual Studio (Express Editionを含む)には含まれます。

    Visual StudioをインストールせずにGUIDgenを使うためには、Server 2003 SP1 DDKをインストールするか、英語版Microsoft.comのトップページから検索してダウンロードしてインストールする必要があります。

  • Debugging tools for Windows (us)

    WDK(7600)にかなり新しい版のWindowsデバッガ(WinDBG)が含まれています。インストール時に指定すれば、KitSetupが自動的にインストールしますが、KitSetUpのバグのため、以前の版を勝手にアンインストールしたり、インストール先の場所がわかり難いのが難点です。
    個別ダウンロード版にもありあます。どちらが最新かは、その時点によって状況が異なるので注意が必要です。

    デバッガ(WinDBG)の使い分け方法について

    64bit (x64)ドライバのデバッグには、どのデバッガを使用すべきなのでしょうか?
    WinDBGのページでは32bit用の説明も、64bit用の説明も、とってもわかり難いので簡単に解説しす。(これだと64bit OSで動作するドライバのデバッグには64bit版が必要なように見えます)
    WinDBG(32bit)版はx64ターゲットのクロスデバッグとWoW64ターゲットのデバッグをサポートしていて、なおかつ64bitデバッグホスト環境でも動作可能です。
    すなわちWinDBG32bit版だけを使用して、通常のデバッグ作業は十分行うことが可能です。WinDBGのオブジェクトの種類(32bit or 64bit)はデバッグを行うホスト環境に従って選択します。従ってWinDBG(x64版)は、x64のホスト環境でデバッガを動作させるときだけにだけ使用します。

    デバッガ(WinDBG)の使い方のヘルプと問題を発見したときのフィードバックについて

    msdn2でWinDBGのページが公開されています。最新の情報・ヘルプとフィードバックが可能です。

  • Windows Logo

    Windows Logo Program は従来Microsoft 本社内でWindows ロゴ検証を行っていたラボである WHQL(Windows Hardware Quality Labs) が解消したために、WHQLから本来の意味を示す通り、名前を新たにしました。対象のデバイスとともにテストをパスした、ドライバとINFファイルは与えられた「ドライバ署名」を付与することが出来、HCL(Hardware Compatibility List)への掲載と、ロゴの表示が認められます。

  • Microsoft Connect

    デバイスドライバ開発をする場合には、まずここのWDK/WLK/WDFプログラムに登録しましょう。


64bit版ドライバのインストールとテスト

64ビット ドライバに関するガイドラインのページに情報が集約されています。

Windows Vista 64bit版では、カーネル・モードで動作するモジュールの起動時にデジタル署名が必要になりました。これは基本的に常時強制されます。Microsoftの文書では、x64 バージョンの Windows Vista では、カーネル モード ソフトウェアの読み込みに Kernel Mode Code Signing (KMCS) が必要と、説明されています

そのため開発中のドライバをテストする場合には、この「デジタル署名の強制」機能を無効にする必要があります。具体的には以下のような操作を行うことで、無効にすることが可能です。

Windows 7を含む、Window Vista以降の64ビット環境で、KMCS(Kernel-Mode Code-Signing) によるカーネルモードで動作するドライバへの署名の強制を無効にする方法

補足: KMCS (Kernel-Mode Code-Signing) 動作の確認

KMCSを無視するモードで実行中は、イベント ビューアによる、ドライバ署名検証動作の確認が推奨されています。
これらのログで確認することで、GUIに表示されない署名が無いモジュールのKMCSによるカーネルモードでの起動の失敗を確認することが可能です。

  • セキュリティログの確認

    Windowsログ → セキュリティ を参照

  • Integrityチェック動作の確認

    アプリケーションとサービスログ → Microsoft → Windows →CodeIntegrity → Operational

SPC署名

頻繁なテストでの利用、特定範囲への64bitドライバの配布には、KMCSをクリアできるSPC(Sofware Publisher Certificate)署名の取得をお勧めします。

関連情報



Windowsデバイスドライバ開発者向けセミナー


誤りや不明な点はご指摘ください。
文責:日高亜友
Microsoft MVP for Driver & Kernel Development

Copyright(c) 2003-2015 Device Drivers Limited