- 最 新 のマイクロソフト 組 み 込 み 技 術 を 学 ぶ 一 日 ドライバー 開 発 から Windows ストア デバイス アプリ まで 株 式 会 社 デバイスドライバーズ 日 高 亜 友
Windows 8.1とEmbedded Systemの 関 係 を 知 る Windows デバイスドライバーとドライバー モデル USB と USBドライバーの 構 成 WinUSBの 拡 張 Windows 8.1のデバイスとデバイスドライバー Windows ストア アプリでハードウェア 制 御 2013/10/29 2
今 回 の 話 題 は Windows Embedded 8 ファミリー (WES 系 ) Windows Embedded 8.1 Pro Windows Embedded 8 Standard Windows Embedded 8.1 Industry Windows Embedded 8 Handheld Windows Server 2012 for Embedded Systems Microsoft SQL Server 2012 for Embedded Systems System Center 2012 SP1 と Windows 8.1 でのデバイス アクセスがテーマ 2013/10/29 3
画 面 の 様 子 画 面 機 能 は Windows 8.1 とほぼ 同 じ CUIアプリ 2013/10/29 4
ストアアプリケーションでデバイスを 扱 える Windows 8 で 本 来 実 現 できるはずだった 機 能 build 1(2011 年 9 月 ) では 多 数 のデバイス 制 御 のセッション しかしTechnical Previewでは 機 能 が 削 除 デバイスドライバー アーキテクチャの 変 更 KMDF: Version 1.9 1.11 1.13 UMDF: Version 1.9 1.11 2.0 CUIアプリ ソースコード 共 通 化 ( c! not c++) USB 関 連 クラス 追 加 とWinUSBの 位 置 づけの 変 更 WinUSB がデバイスサポートの 鍵 になる!? 2013/10/29 5
配 布 インストール 起 動 中 断 から 終 了 までの 振 る 舞 いの 変 更 セキュリティー 権 限 制 約 の 変 更 ブランディングとロックダウン 的 なものを 導 入 WEC アプリ 的 な 動 作 組 み 込 み 用 途 に 適 している 新 APIの 導 入 CUIアプリ Windows Application ストア アプリ UI 変 更 だけではない 2013/10/29 6
水 色 が 追 加 されたライブラリ 黄 緑 色 が 強 化 されたライブラリ デバイスアクセスの 強 化 2013/10/29 7
デバイスは 他 と 異 なる 差 別 化 する 機 能 を 実 装 使 いこなし (MS-DOSの 頃 から ) 最 近 は 高 性 能 高 機 能 化 する 一 方 標 準 化 汎 用 化 が 進 む 最 近 はデバイスや 半 導 体 メーカーが 淘 汰 してきている? デバイスドライバーは デバイスアクセスに 必 須 (MS-DOSの 頃 から ) デバイス 個 別 の 差 異 を 吸 収 デバイス 別 に 用 意 最 近 インボックス(インストール 済 汎 用 )ドライバー 利 用 が 増 加 2013/10/29 8
アプリケーション 操 作 への 対 応 カーネル 操 作 への 対 応 デバイスを 制 御 するソフトウェア 入 出 力 操 作, 割 り 込 み 操 作, バッファ 操 作, 排 他 制 御, ユーザモード アプリケーション CreateFile, ReadFile, WriteFile, User mode デバイスドライバー ネットワーク ファイルシステム NTカーネル ドライバーインストール PnP(デバイスの 脱 着 ) 電 源 管 理 Kernel mode デバイスドライバー カーネルモード ハードウェア デバイス 2013/10/29 9
デバイスドライバーを 開 発 する WDM ドライバー KMDF ドライバー UMDF ドライバー Windowsにプレインストールされているインボックスド ライバーを 利 用 する USBストレージ, USB-HID, WinUSB 汎 用 ドライバー(サードパーティ 製 )を 利 用 する UUSBD, LibUSB, 古 いアーキテクチャ 開 発 工 数 がWDMの1/5 ユーザーモードの 制 約 今 後 の 主 流 2013/10/29 10
基 本 的 にインストール 不 要 ( 特 定 条 件 ) INFファイル 等 が 必 要 な 場 合 がある VID&PID vs. Compatible ID デバイス 側 ファームウェアで デバイスクラスが 定 義 済 なら 不 要 ドライバー 開 発 が 不 要 INFファイルやカタログファイルの 作 成 が 必 要 な 場 合 はある ドライバーの 品 質 が 安 定 している 今 後 の 主 流 Windowsアプリケーションとの 連 携 が 容 易 2013/10/29 11
アプリケーションから 汎 用 的 に 使 えるUSBドライバー Microsoft 社 が 初 めて 提 供 した 汎 用 ドライバー Windows Vista 以 降 に 事 前 インストール 済 USB UMDF V1ドライバーに 必 須 (USB 入 出 力 をサポート) 一 般 的 なUSB 入 出 力 機 能 を 提 供 WinUSB.SYS カーネルモード ドライバー WinUSB.DLL APIライブラリ Windows 8.1 ストアアプリで 注 目 ドライバー 開 発 &インストール 不 要 汎 用 的 なデバイスアクセスを 実 現 Windows RT 対 応 (INF 不 要 のインストール) ( 以 前 は 文 献 やサンプルが 少 なかった) UMDFの サポート 用 として 開 発 アプリケーションから 直 接 利 用 可 能 2013/10/29 12
構 造 図 アプリケーション Win 32 API ユーザーモード IOマネージャー WDM ドライバー 下 位 ドライバー デバイス カーネルモード usbport.sys usbhub.sys usbehci.sys usbhub.sys usbd.sys 2013/10/29 13
構 造 図 アプリケーション Win 32 API ユーザーモード IOマネージャー KMDF ドライバー Framework 下 位 ドライバー デバイス カーネルモード usbport.sys usbhub.sys usbehci.sys usbhub.sys usbd.sys 2013/10/29 14
構 造 図 UMDFホスト プロセス アプリケーション UMDF ドライバー Win 32 API Framework WinUSB API WinUSB.dll ユーザーモード IOマネージャー リフレクタ WinUSB.SYS Framework 下 位 ドライバー デバイス カーネルモード usbport.sys usbhub.sys usbehci.sys usbhub.sys usbd.sys 2013/10/29 15
構 造 図 アプリケーション Win 32 API / WinUSB API WinUSB.dll ユーザーモード IOマネージャー WinUSB.SYS Framework 下 位 ドライバー デバイス カーネルモード usbport.sys usbhub.sys usbehci.sys usbhub.sys usbd.sys 2013/10/29 16
ストアアプリでのアイソクロナス 転 送 ストアアプリでの 指 定 外 クラスの 利 用 Windowsカーネルがサポートしている 機 能 の 代 替 LAN, Modem, Storage, ソフトウェア 構 造 としてアプリケーションとドライバー 部 分 を 分 離 すること アプリケーションが 直 接 デバイスを 制 御 する 構 造 (DLL 化 可 能 ) 2013/10/29 17
WinUSBで 対 応 できない 場 合 は 開 発 し ましょう 以 前 より 簡 単 になりました 開 発 環 境 OS Windows 7, Windows 8, Windows 8.1 開 発 対 象 OS Windows 7, Windows 8, Windows 8.1 ツール Visual Studio 2012/2013+WDK8.1(+SDK)(+ADK) デバッガとテストツール デプロイツールが 全 て 含 まれる F5キーでカーネルモードドライバーを 署 名 付 加 後 に リモート インストールしてリモートデバッグ 可 能 カーネルモードドライバーのデバッグ テスト 時 には ターゲット 専 用 マシンが 別 に1 台 必 要 2013/10/29 18
ストアアプリにはデバイス 利 用 制 限 がある 利 用 するためには Windows ストアデバイスアプリとしてドライバーとともに 開 発 ドライバーまたはINFファイルの 開 発 が 必 要 特 定 デバイスを 占 有 して 利 用 WinUSB 利 用 ストア アプリとして 開 発 ドライバー 開 発 は 不 要 (INFファイル 無 しでもインストール 可 能 ) 2013/10/29 19
特 定 ( 自 社 製 )デバイス 専 用 のアプリケーション マルウェア 等 の 他 のアプリケーションに 悪 用 されない 想 定 外 の 使 われ 方 をしない 課 金 対 象 等 のデバイス 利 用 を 制 限 可 能 デバイス 装 着 時 のAuto Play( 自 動 再 生 ) 機 能 デバイス メタデータでアプリケーションと 紐 づけ 権 限 管 理 典 型 的 なサポートデバイス プリンター モバイル ブロードバンド カメラ テレビ ステレオ レシーバー ゲーム デバイス デモ (Custom driver access sample:osrfx2) 2013/10/29 20
デバイス(ファームウェア)がWinUSBクラス 対 応 の 場 合 INF ファイルを 使 わなくても インストール 可 能 レジストリを 操 作 してデバイス 固 有 のGUIDを 登 録 クラスインストーラーがWinUSBクラスドライバーをインストール デモ (Custom USB device access sample:osrfx2) ベンダーがカスタムINFファイルを 用 意 する 場 合 ドライバー パッケージとしてINFファイルをベンダーが 用 意 Windows.Devices.Usb 名 前 空 間 により WinUSB(Winusb.sys) をデバイス ドライバーとして 使 う 外 部 USB デバイスと Windows ストア アプリが 通 信 可 能 デモ (USB CDC Control sample:elecom-gadgeteer) 2013/10/29 21
デバイスクラスは 以 下 のいずれかに 制 限 name:cdccontrol, classid:02 * * name:physical, classid:05 * * name:personalhealthcare, classid:0f 00 00 name:activesync, classid:ef 01 01 name:palmsync, classid:ef 01 02 name:devicefirmwareupdate, classid:fe 01 01 name:irda, classid:fe 02 00 name:measurement, classid:fe 03 * name:vendorspecific, classid:ff * * アプリケーションで 可 能 な 動 作 を 制 限 2013/10/29 22
USB 用 のMicrosoft 固 有 のディスクリプターを 定 義 いままでディスクリプターに 全 てを 含 めることができな かった 画 像 アイコン カスタム ドライバーといったデバ イス 固 有 の 情 報 をユーザーに 提 供 する WinUSB 用 の 情 報 を 拡 充 し ドライバー 無 しで 利 用 でき るデバイス 種 類 を 増 やす 2013/10/29 23
Windows 8.1とEmbedded Systemの 関 係 を 知 る Windows デバイスドライバーとドライバー モデル USB と USBドライバーの 構 成 WinUSBの 拡 張 Windows 8.1のデバイスとデバイスドライバー Windows ストア アプリでハードウェア 制 御 2013/10/29 24
Windows 8.1 向 け Windows ストア デバイス アプリの 新 機 能 http://msdn.microsoft.com/jajp/library/windows/hardware/dn265149(v=vs.85).aspx Windows 向 けハードウェアの 設 計 開 発 認 定 http://msdn.microsoft.com/ja-jp/windows/hardware/ WinUSB デバイス http://msdn.microsoft.com/library/windows/apps/hh450799 Windows 8.1: キットとツールのダウンロード http://msdn.microsoft.com/ja-jp/windows/hardware/gg454513.aspx 2013/10/29 25