デバイス メタデータ パッケージ
こんにちは、K里です。
Windows 7 のリリースが近づいてまいりました。WDK も現在 Windows 7 RC 用の WDK としてキットの配布がされています。その中で、一部の新要素となるデバイス メタデータについてお話したいと思います。お役にたてれば幸いです。
デバイス メタデータパッケージ
Windows 7 の新機能に “デバイスとプリンター” と “Device Stage” があります。デバイスとプリンター画面では、ユーザーが PC 上で使用する様々なデバイス (プリンター、スキャナー、デジタルカメラ、ポータブルオーディオプレーヤー、携帯電話などなど) を一元管理します。また、Device Stage 画面では、各デバイスに応じた固有のインターフェースを提供します。たとえば、デジタルカメラであれば、写真を取り込んだり編集したり、オーディオプレーヤーであれば、音楽を再生したり、などといったインターフェースを提供することになると思います。デバイスメーカー各社は、これらの機能を利用することで、ユーザーエクスペリエンスの向上や、自社ブランドを高めるためのビジュアル インターフェースを提供することができます。
話を戻しますと、上述のデバイスとプリンター、ならびに Device Stage を定義する情報が、デバイスメタデータ パッケージとなります。デバイス メタデータ パッケージは、複数の XML スキーマとイメージ ファイルでパッケージング化されます。なお Device Stage については、WDK とは別に Microsoft Device Experience Development Kit があります。詳細については下記 URL をご参照ください。
Windows デバイス エクスペリエンス
https://www.microsoft.com/japan/whdc/device/DeviceExperience/default.mspx
Microsoft Device Experience Development Kit
https://www.microsoft.com/whdc/device/DeviceExperience/Dev-Kit.mspx
Windows 7 Portable Device Enabling Kit for MTP Version 7R2
https://www.microsoft.com/japan/whdc/device/wpd/MTP-DEK_Win7.mspx
デバイス メタデータを構成するコンポーネント
では、デバイス メタデータパッケージを構成する各種コンポーネントを、WDK 7.0.0 に含まれるToaster 向けメタデータを参考に説明します。Toaster のサンプル メタデータは、%WinDDK%\7100.0.0\src\general\toaster\devicemetadatapackage\rawdata にあります。今回は、ja-jp 用のメタデータを使用しています。
PackageInfo: https://msdn.microsoft.com/en-us/library/dd835107.aspx
デバイス メタデータ パッケージの統括的な情報を構成するスキーマです。OS は、この情報を基に、パッケージのインストール、ならびにコンテンツの参照を行います。例えば対象デバイスの HardwareID や地域情報、パッケージの構成情報などが含まれます。ちなみに下のサンプルスキーマで、<HardwareID> 要素の Prefix に定義される DOID は、デバイスコンテナーの種別を意味します。デバイスコンテナーは、デバイスが持つ機能のグルーピング化するもので、例えばプリンター、スキャナー、FAX 機能を持つ Multi Function Device を一デバイス (見た目上は一つのデバイス) と認識するためのものです。対して、複数機能を持ち、且つ一機能で認識するデバイスをシングルファンクションデバイスコンテナー (SFDOID) と定義しています (見た目上は複数のデバイス)。現在までのところ、Windows 7 では、DOID のみをサポート対象としています。
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <PackageInfo xmlns="https://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/"> <MetadataKey> <HardwareIDList> <HardwareID>DOID:{b85b7c50-6a01-11d2-b841-00c04fad5171}\MsToaster</HardwareID> </HardwareIDList> <Locale default="false">ja-JP</Locale> <LastModifiedDate>2009-02-25T11:46:53.5108690Z</LastModifiedDate> </MetadataKey> <PackageStructure> <Metadata MetadataID="https://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/">PackageInfo.xml</Metadata> <Metadata MetadataID="https://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/">DeviceInformation</Metadata> <Metadata MetadataID="https://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/">WindowsInformation</Metadata> </PackageStructure> </PackageInfo> |
DeviceInfo: https://msdn.microsoft.com/en-us/library/dd835138.aspx
デバイス固有の情報を定義するスキーマです。製造元名、モデル名、デバイスの説明、デバイスカテゴリ、デバイス アイコンファイルなどを定義します。
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <DeviceInfo xmlns="https://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/"> <DeviceCategoryList> <DeviceCategory>Other</DeviceCategory> </DeviceCategoryList> <ModelName>トースター</ModelName> <DeviceDescription1>WDK トースター用 デバイスメタデータパッケージサンプル</DeviceDescription1> <Manufacturer>Fabrikam, Inc.</Manufacturer> <DeviceIconFile>Toaster.ico</DeviceIconFile> </DeviceInfo> |
WindowsInfo: https://msdn.microsoft.com/en-us/library/dd835104.aspx
“デバイスとプリンター“ 上で、対象デバイスの表示方法を定義するスキーマです。対象デバイスの Device Stage 画面の表示設定や、デバイス接続状態に応じた表示設定を定義します。
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <WindowsInfo xmlns="https://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/"> <ShowDeviceInDisconnectedState>false</ShowDeviceInDisconnectedState> <LaunchDeviceStageOnDeviceConnect>false</LaunchDeviceStageOnDeviceConnect> <LaunchDeviceStageFromExplorer>false</LaunchDeviceStageFromExplorer> </WindowsInfo> |
Device Icon ファイル:
デバイスとプリンター画面に表示するためのアイコンファイル (.ico) を定義します。
パッケージのビルド
メタデータのパッケージ名は、”<GUID>.devicemetadata-ms” となります。このため、まずは Guidgen.exe ツールを使用してパッケージ用の GUID を取得します。次に、パッケージ情報を Cabarc.exe ツールを使用して全ファイルを圧縮することで、デバイス メタデータ パッケージが作成されることになります。それでは、先ほどの Toaster の Raw Data を使用してパッケージを作成してみます。
1. 下記フォルダ内のデータを作業用フォルダにコピーします。ここでは、D:\Test にコピーすることにします。
%WinDDK%\7100.0.0\src\general\toaster\devicemetadatapackage\rawdata\ja-jp\6d898b55-ab8a-4762-bdaf-cb0972a304c5
2. Guidgen.exe を起動し、Format Type を4 に設定し、GUID を取得します。
3. コマンドプロンプト上で、Cabarc.exe より以下のように設定し、パッケージを作成します (赤字が 2 で取得した GUID となります)。
D:\Test>D:\tools\Cabarc\BIN\CABARC.EXE -p -r N A3EB00A7-AF45-4b4f-9A10-133D2636C30A.devicemetadata-ms *.* Microsoft (R) Cabinet Tool - Version 1.00.0601 (03/18/97) Copyright (c) Microsoft Corp 1996-1997. All rights reserved. Creating new cabinet 'A3EB00A7-AF45-4b4f-9A10-133D2636C30A.devicemetadata-ms' with compression 'MSZIP': -- adding PackageInfo.xml -- adding DeviceInformation\DeviceInfo.xml -- adding DeviceInformation\Toaster.ico -- adding WindowsInformation\WindowsInfo.xml Completed successfully |
4. 作業フォルダ内にデバイス メタデータ パッケージ (.devicemetadata-ms ファイル) があることを確認します。
上記で使用した各ツールについては以下をご参照ください。
Microsoft Exchange Server GUID Generator
Microsoft Cabinet SDK について
https://support.microsoft.com/kb/310618/ja
パッケージのインストール
メタデータのパッケージをインストールする方法は、以下の 3 通りあります。
Ø WMIS (Windows Metadata and Internet Services) からインストールする
OS は新しいハードウェアを検知すると、オンラインで WMIS を利用することで、そのデバイスに対するメタデータを検索します。WMIS でインストール可能なメタデータは、Windows ロゴプログラムにて、ドライバ パッケージとともに送付し、署名されたものになります。ちなみにロゴ申請時にデバイスメタデータ パッケージが必須というわけではありません。
Ø アプリケーションからインストールする
シェル関数 SHGetKnownFolderPath よりパッケージのフルパスを取得し、CreateFile 関数でストアフォルダに格納します。
Ø 手動でインストールする
対象パッケージを %PROGRAMDATA%\Microsoft\Windows\DeviceMetadataStore にコピーします。
※例えば Toaster 用のパッケージ (.devicemetadata-ms ファイル) を上記フォルダにコピーすると、デバイスとプリンター画面の Toaster アイコンが変わります。
いかがでしたでしょうか。今回は、WDK に付属するサンプルを参考にデバイス メタデータ パッケージについてお話ししました。それではまた。