次の方法で共有


Wi-Fi ダイレクト印刷の実装

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

デバイスの要件

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

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で規定されているように、永続グループと同時実行 Connection-Multiple グループを実装する必要があります。

プリンターの 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 ベンダー拡張機能。

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

wfd ベンダー データ。

コンテナー UUID の TLV 定義

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

定義:

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

垂直ペアリング データ BLOB の実装

垂直ペアリング データ BLOB を使用すると、PC はプリンターに接続する前に WSD 印刷サービスを理解できます。 このメカニズムは、Wi-Fi Direct のサービス検出仕様が記述される前に実装されていたサービス検出の単純な代替手段です。

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

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

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

WFDベンダー拡張機能。

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

WFDベンダーデータ。

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

ラリー垂直ペアリングには、2 つの特定の TLV タイプが定義されています。 これらの TLV 型を次の表に示します。

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

垂直ペアリング識別子 TLV

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

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

wfd データが vpi tlv に含まれています。

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

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

価値 トランスポート
0x00 無し
0x01 DPWS
0x02 UPnP
0x03 セキュリティで保護された DPWS
0x04-0xFF 予約済み

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

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

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

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

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

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

トランスポート UUID TLV

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

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

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

デバイスで VPI トランスポート値が 0x00 (なし) と指定されている場合は、トランスポート UUID TLV を含めないでください。

WPS の例

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

サービス アイデンティティ
WPS ec742c0d-5915-4bcb-b969-008132afec5e
DPWS 印刷 urn:uuid:00010203-0405-0607-0809-0a0b0c0e0e0f

WPS サービス UUID 値の例

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

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

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

wfd ベンダー拡張機能の詳細の例。

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

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

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

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

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