次の方法で共有


Wi-Fi Direct 印刷の実装

このトピックでは、Wi-Fi Direct 印刷を実装するためのデバイス要件について説明します。

デバイスの要件

WFD-WSD デバイスが 「Wi-Fi Direct 印刷の概要」で説明されているように、シームレスな接続エクスペリエンスを得るには、デバイスは次の要件を満たすに要があります。

  • デバイスは Vertical Pairing をサポートし、関連する DPWS (WSD) データを WPS メッセージに送信する必要があります (下の「vertical pairing data blob の実装」で説明されている形式)。

  • 物理デバイス内のすべての論理デバイスは、PnP-X 拡張機能で同じ PnP-X コンテナー ID を使用する必要があります。

WFD コンテナー ID はプリンターの UUID と一致するため、PnP-X コンテナー ID はデバイス メタデータでは必要ありません。 ただし、デバイスはデバイス メタデータで PnP-X メタデータをサポートし、デバイス メタデータの PnP-X メタデータの一部として PnP-X コンテナー ID をアドバタイズすることをお勧めします。 このコンテナー ID は WFD コンテナー ID と一致する必要があります。

WFD レイヤーと WSD レイヤーで同じコンテナー ID を使用すると、次の内容が保証されます。

  • デバイスの追加ウィザードなどのペアリング UI は、1 つの物理デバイスに複数の論理デバイスが共存していることを理解し、ユーザーにとってより論理的な方法でペアリングを処理できます。 (たとえば、ユーザーは WFD と印刷デバイスを別々の操作で手動でペアリングする必要はありません)。

  • デバイスとプリンターは、システムに 2 つの開発ノードセット (WFD 開発ノードのセットと WSD 開発ノードのセット) がインストールされている場合でも、デバイスの 1 つのデバイス アイコンを表示できます。

  • Windows ハードウェア認定キットのテストを正しく実行するには、適切なコンテナー ID の実装が必要であることに注意してください。 不適切な実装は、テストが各論理デバイスを別々の物理デバイスとして認識する原因となります。

WFD-WSD デバイスが上記の要件に準拠していない場合、この実装で説明されている接続エクスペリエンスはこれらのデバイスには適用されません。

デバイスでは、「Wi-Fi Alliance - Wi-Fi Direct Industry Whitepaper)」で指定されているように、永続的なグループと同時接続 - 複数のグループを実装する必要があります。

プリンターにおける Wi-Fi Direct 経由でのコンテナー UUID 発行方法

Windows は、Wi-Fi Alliance 「Wi-Fi Peer-to-Peer (P2P) Specification v1.1」 セクション 3.1.2.1.2 (スキャン フェーズ) に従ってプローブ要求/応答を使用して、Wi-Fi Direct 経由でプリンターを検出します。 この場合、デバイス、プリンターは、適切なプローブ要求/応答フレームを使用して PC に応答します。

プローブ要求 とプローブ応答フレームの両方を、カスタム IEs を使用して拡張できます。 Microsoft では、さまざまな拡張機能を有効にするために、いくつかの属性を持つカスタム IE を定義しています。

コンテナー UUID 用 Microsoft 802.11 カスタム IE の構築方法

カスタム IE は、次の WFD ベンダー拡張機能の図に示すように、ベンダー ID とベンダー データで構成されます。

wfd vendor extension.

Microsoft は、Microsoft が所有する IE を表すためにベンダー ID 0x137を使用します。 各ベンダーのベンダー拡張機能にあるベンダー データ ブロックには、ベンダーが定義する任意のデータ ブロックが含まれています。 Microsoft ベンダー拡張機能のベンダー データ ブロックは、1 つ以上の Type-Length-Value (TLV) 構造体で構成されます。 TLV 構造の編成は、次の WFD ベンダー データ の図に示されています。

wfd vendor data.

コンテナー UUID の TLV 定義

包含 ID に関連する 2 つの TLV があります。 Windows がデバイスに送信する 「属性の要求」 とデバイスが応答する 「コンテナー UUID」 TLV があります。

定義:

名前/説明 型 (2 バイト) 長さ (2バイト) 値 (長さで定義)
Microsoft 属性の要求 (検出中にプローブ要求で PC によって送信されます) 0x1005 0x0002 0x0001 = Microsoft が包含 UUID を要求しています
コンテナー UUID (これは、検出中にプローブ応答でプリンターによって送信されます) 0x1006 0x0010 プリンターで定義する

vertical pairing data blob の実装

Vertical Pairing Data BLOB を使用すると、PC はプリンターに接続する前に WSD 印刷サービスを理解できます。 このメカニズムは、Wi-Fi Direct のサービス ディスカバリ仕様が作成される前に実装されていたため、サービス ディスカバリの単純な代替品です。

コンテナー UUID と同様に、垂直ペアリング データ BLOB も Microsoft IE の属性です。 コンテナー ID 属性とは異なり、これは、その役割に応じて、デバイスからの M7/M8 WPS メッセージ (Wi-Fi ダイレクト ペアリング中) で公開する必要があります。

垂直ペアリング用の Microsoft 802.11 カスタム IE を構築する方法

カスタム IE は、次の WFD ベンダー拡張機能の図に示すように、ベンダー ID とベンダー データで構成されます。

wfd vendor extension.

Microsoft は、Microsoft が所有する IE を表すためにベンダー ID 0x137を使用します。 各ベンダーのベンダー拡張機能にあるベンダー データ ブロックには、ベンダーが定義する任意のデータ ブロックが含まれています。 Microsoft ベンダー拡張機能のベンダー データ ブロックは、1 つ以上の Type-Length-Value (TLV) 構造体で構成されます。 TLV 構造の編成は、次の WFD ベンダー データ の図に示されています。

wfd vendor data.

垂直ペアリング BLOB の TLV 定義

Rally Vertical Pairing には、2 つの特定の TLV タイプが定義されています。 このような TLV 型の一覧を次の表に示します。

名前/説明 型 (2 バイト) 長さ (2バイト) 値 (長さで定義)
Vertical Pairing 識別子 (デバイスの内部トポロジと通信します) 0x1001 0x0002 以下の「VERTICAL PAIRING 識別子 TLV」を参照してください。
トランスポート UUID (デバイスのトランスポート UUID 値) 0x1002 0x0010 上記の「コンテナー UUID の TLV 定義」を参照してください。

Vertical Pairing 識別子 TLV

Vertical Pairing 識別子 (VPI) TLV は、Windows がデバイスのサービスと通信する方法を指定するデバイスの内部トポロジと通信します。 デバイスに Vertical Pairing が実装されていない場合でも、Rally Vertical Pairing 拡張機能をサポートするには、少なくとも 1 つの VPI が必要です。 この状況では、VPI はトランスポートが使用されていないことを指定します。 VPI TLV は、WPS M1 メッセージの Microsoft ベンダー拡張機能の一部として送信する必要があります。

VPI TLV に含まれるデータは 2 バイトの長さであり、2 つの異なるフィールドで構成されます。それは、VPI TLV に含まれる WFD データが次の図に示すように (各フィールドは 1 バイトの長さです)、トランスポート フィールドとプロファイル要求フィールドです。

wfd data included with a vpi tlv.

VPI トランスポート フィールド

トランスポート フィールドは、Windows がデバイスとの通信に使用できるトランスポートを指定します。 VPI ごとに指定できるトランスポートは 1 つだけです。 デバイスが複数の PnP-X トランスポートをサポートしている場合は、Microsoft ベンダー拡張機能に複数の VPI TLV (トランスポートごとに 1 つ) を含めることで通信できます。 VPI トランスポート フィールドの有効な値を次の表に示します。

Value トランスポート
0x00 なし
0x01 DPWS
0x02 UPnP
0x03 セキュリティで保護された DPWS
0x04-0xFF 予約されています。

Note

Windows 7 では、DPWS (0x01) または Secure DPWS (0x03) がサポートされていますが、両方はサポートされていません。

デバイスが Rally Vertical Pairing を実装していない場合は、トランスポート値が 0x00 (None) の VPI を 1 つだけ指定する必要があります。 この状況では、デバイスは Transport UUID TLV を指定する必要はありません。 これにより、デバイスとのペアリングが想定されていないことが Windows に通知されます。 そのため、Windows はデバイスの Wi-Fi 設定を構成している間、デバイスとの事前ペアリングを試みません。

VPI プロファイル要求フィールド

VPI を使用すると、デバイスは WPS プロトコルを使用してデバイスのサービスをプロビジョニングできます。 この状況では、デバイス サービスは、サービスを構成するための情報を Windows に送信するように要求できます。 この情報はプロファイルと呼ばれます。 VPI の 2 番目のフィールドは、デバイスが Windows にプロファイルの送信を要求しているかどうかを指定します。 VPI トランスポート フィールドの有効な値を次の表に示します。

Value 説明
0x01 Wi-Fi プロファイルが要求されました。 これは、Windows 7 で現在サポートされている唯一の値です。
0x00、0x02–0xFF 予約されています。

0x00 の VPI プロファイル要求フィールド値は、Windows 7 では現在サポートされていないため、予約済みと見なされます。 VPI プロファイル要求フィールドは、0x00 (なし) の値がトランスポートに指定されている場合でも、0x01 (Wi-Fi プロファイル要求) の値にのみ設定する必要があります。

Transport UUID TLV

Transport UUID TLV は、特定のトランスポート (DPWS または UPnP) が WPS UUID とは異なる基本 UUID 値を持っていることを指定します。 Transport UUID TLV は省略可能です。 Transport UUID TLV が含まれていない場合、WPS UUID は、指定されたトランスポートの ID を形成するために使用されます。

Transport UUID TLV が含まれている場合は、トランスポートを識別する VPI TLV の直後に続く必要があります。 複数の VPI TLV が含まれる場合、各 VPI TLV の後に Transport UUID TLV を含めることができます。

Transport UUID TLV データ値は、ネットワークのバイト順である必要があります。

デバイスで VPI トランスポート値が 0x00 (なし) と指定されている場合は、Transport UUID TLV を含める必要はありません。

WPS の例

この例では、プリンター デバイスが DPWS を使用し、WS Print インターフェイスを実装すると仮定します。 デバイスは、次の表の UUID 値を使用します。

サービス ID
WPS ec742c0d-5915-4bcb-b969-008132afec5e
DPWS 印刷 urn:uuid:00010203-0405-0607-0809-0a0b0c0e0e0f

WPS サービス UUID 値の例

UUID 値はすべて小文字で指定され、DPWS ID 文字列では urn:uuid:uuid_value 形式が使用されます。

Note

この例の UUID 値は架空のものであり、実際のデバイスでは使用しないでください。

デバイスが WPS M7/M8 メッセージを送信すると、次の WFD ベンダー拡張機能の詳細の次の例に示されている Microsoft ベンダー拡張機能が含まれます。

example wfd vendor extension details.

この例では、ベンダー拡張機能に 0x137 のベンダー ID 値が含まれており、これを Microsoft ベンダー拡張機能として識別します。 ベンダー拡張機能のベンダー データ フィールド内には 2 つの TLV 構造があります。

最初の TLV の Type 値は 0x1001 で、TLV を VPI として識別します。 最初の TLV のデータの長さは 2 バイトで、0x0101 の値が含まれます。 これは、デバイスが DPWS トランスポート (0x01) をサポートし、プロファイル (0x01) を要求していることを指定します。

2 番目の TLV の Type 値は 0x1002 で、TLV を Transport UUID として識別します。 2 番目の TLV のデータの長さは 16 バイトで、UUID 値 00010203-0405-0607-0809-0a0b0c0e0e0f のバイナリ バージョンが含まれます。

顧客がプリンターを垂直方向にペアリングすると、Windows は最初にデバイスの Wi-Fi 無線を適切な設定で構成します。 次に、指定されたトランスポート UUID 値を使用して、デバイスの DPWS デバイスをペアリングします。

デバイスが Wi-Fi ネットワークに接続し、DPWS サービスをアナウンスすると、Windows は適切な PnP デバイス ノードを作成し、適切なドライバーをインストールして読み込みます。