Windows.Devices.Usb 名前空間

この名前空間は、UWP アプリが WinUSB デバイスとの通信に使用できるWindows ランタイムクラスを定義します。 これらのデバイスは受信トレイ winusb.sys ドライバーによって処理され、特定の Microsoft OS 記述子によって識別されます。

有効な WinUSB デバイスの ID は互換性があります USB\MS_COMP_WINUSB

SuperMUTT WinUSB デバイスのデバイス マネージャーからの互換性のある ID

デバイスのサポート

この名前空間は、ほとんどの WinUSB デバイスをサポートしています。 ただし、次のデバイス クラスを使用して USB デバイスにアクセスすることはできません。

  • オーディオ (0x01)
  • HID (0x03)
  • 画像 (0x06)
  • プリンター (0x07)
  • 大容量ストレージ (0x08)
  • スマート カード (0x0B)
  • オーディオ/ビデオ (0x10)
  • ワイヤレス コントローラー (0xE0)

USB デバイスの機能

USB デバイスにアクセスする UWP アプリでは、マニフェストの機能ノードに特定のデバイス機能データを含める必要があります。 このデータは、デバイスとその目的 (または機能) を識別します。 一部のデバイスには複数の機能がある場合があることに注意してください。

Windows 10 Version 1809以降 (2018 年 10 月の更新プログラム)

<DeviceCapability Name="usb"/>

Windows 10 Version 1809より前 (2018 年 10 月の更新プログラム)

1809 以降、 VendorId/ProductId関数型 は指定する必要がなくなり、新しいシステムでは無視されます。 1809 未満のシステムを対象とする場合は、 レガシ USB デバイスの機能に関するページを参照してください。

トラブルシューティング

  • USB 機能 (usb) がアプリケーション マニフェストに含まれているかどうかを確認します。
  • ユーザーがアプリケーションに USB デバイスを利用するためのアクセス許可を付与したことを確認します。
  • デバイスの種類がアクセス不可として指定されていないことを確認します。
  • 一般に、マシン内部デバイス (DEVPKEY_Device_InLocalMachineContainer == TRUE) は、組み込みモードlowLevelDevices機能を備えた SKU で実行されていない限り、アクセスできません
  • 上位または下位のフィルター ドライバーを含むスタックを持つデバイスには、一般にアクセス できません 。 これらは、 カスタム ハードウェアの追加機能を有効にするために、サード パーティによって追加される場合があります。
    • デバイスの制限は、デバイスの列挙中にによってwinusb.sys部分的に決定されます。デバイス/クラス フィルターの存在に基づいて、WinUSB デバイス インターフェイスでデバイス インターフェイス GUID_DEVINTERFACE_WINUSB_WINRT プロパティDEVPKEY_DeviceInterface_RestrictedTRUEを に設定できます。
    • デバイス UpperFilter/LowerFilter ドライバーの存在は、 プロパティと LowerFilters プロパティを探UpperFiltersして DeviceManager を使用して判断できます。
    • WinUSB クラス UpperFilter/LowerFilter ドライバーの存在は、 プロパティと Class lower filters プロパティを探Class upper filtersして DeviceManager を使用して判断できます。
    • Device Interface プロパティは、 が pszDeviceInterfaceFromIdAsync に渡されるのと同じ文字列を呼び出CM_Get_Device_Interface_Propertyすことによって検査できます。
  • これらの制限は、ドライバー開発者と協力してハードウェア サポート アプリを作成することで、カスタム デバイスを作成するときにバイパスできます

クラス

UsbBulkInEndpointDescriptor

USB bulk IN エンドポイントのエンドポイント記述子。 記述子は、エンドポイントの種類、方向、数、およびエンドポイントから読み取ることができる最大バイト数を 1 回の転送で指定します。

UsbBulkInPipe

基になる USB ドライバーがデバイスの USB 一括 IN エンドポイントと通信するために開くパイプを表します。 アプリはパイプから入力ストリームを取得でき、アクセス データはエンドポイントから読み取られます。

UsbBulkOutEndpointDescriptor

USB 一括 OUT エンドポイントのエンドポイント記述子。 記述子は、エンドポイントの種類、方向、数、およびエンドポイントに書き込むことができる最大バイト数を 1 回の転送で指定します。

UsbBulkOutPipe

基になる USB ドライバーがデバイスの USB 一括 OUT エンドポイントと通信するために開くパイプを表します。 オブジェクトは、アプリがエンドポイントに送信するデータを書き込むことができる出力ストリームへのアクセスを提供します。

UsbConfiguration

USB 構成、その記述子、およびその構成内で定義されているインターフェイスに関する情報を提供します。 USB 構成の説明については、ユニバーサル シリアル バス (USB) 仕様のセクション 9.6.3 を参照してください。

UsbConfigurationDescriptor

USB 構成記述子の最初の 9 バイトから情報を派生します。 この情報には、構成がアクティブな場合のデバイスの電源機能と、その構成に含まれるインターフェイスの数が含まれます。 構成記述子の説明については、「セクション 9.6.3 ユニバーサル シリアル バス仕様」を参照してください。 記述子フィールドの詳細については、以下を参照してください。

  • ユニバーサル シリアル バス 3.0 仕様の表 9.15
  • ユニバーサル シリアル バス仕様 (バージョン 2.0) の表 9.10
UsbControlRequestType

USB コントロール転送、制御要求の種類、データがホストとの間で送信されるかどうか、およびデバイス内の要求の受信者に関する情報を提供します。

UsbDescriptor

記述子の種類、そのサイズ (バイト単位) に関する情報を提供し、記述子データを取得します。

UsbDevice

USB デバイスを表します。 オブジェクトには、WinUSB デバイスを列挙し、IN および OUT コントロール転送を送信するためにアプリで使用できるメソッドとプロパティが用意されています。

UsbDeviceClass

デバイスで定義されているクラス コード、サブクラス コード、プロトコル コードを指定して、アプリが高度なクエリ構文 (AQS) 文字列を取得する方法を提供します。 このクラスのプロパティは、 GetDeviceClassSelector の呼び出しで渡されます。

UsbDeviceClasses

デバイスの USB デバイス クラスに基づいて UsbDeviceClass オブジェクトを取得する方法を提供します。 このクラスで定義されているプロパティは、サポートされている USB デバイス クラスを表し、 UsbDeviceClass オブジェクトを返します。

USB デバイス クラスの詳細については、 承認済みクラス仕様ドキュメントの公式 USB Web サイトを参照してください。

UsbDeviceDescriptor

デバイスの USB デバイス記述子から情報を派生させます。 デバイス記述子の説明については、ユニバーサル シリアル バス仕様の表 9.8 を参照してください。

UsbEndpointDescriptor

エンドポイントの USB エンドポイント記述子から、型、方向、エンドポイント番号などの情報を派生させます。 このオブジェクトは、エンドポイントの種類に基づいて特定のエンドポイント記述子も取得します。 エンドポイント記述子の説明については、ユニバーサル シリアル バス仕様のセクション 9.6.5 を参照してください。

  • ユニバーサル シリアル バス 3.0 仕様の表 9.18
  • ユニバーサル シリアル バス仕様 (バージョン 2.0) の表 9.13
UsbInterface

エンドポイント、インターフェイスがサポートする代替設定の数など、USB インターフェイスに関する情報を提供し、それらの設定の記述子セット全体を取得します。 また、インターフェイスがサポートするエンドポイントに関連付けられているパイプも取得します。

UsbInterfaceDescriptor

インターフェイス記述子の (インターフェイスの) USB 代替設定について説明します。 インターフェイス記述子の説明については、ユニバーサル シリアル バス仕様のセクション 9.6.5 を参照してください。

  • ユニバーサル シリアル バス 3.0 仕様の表 9.15
  • ユニバーサル シリアル バス仕様 (バージョン 2.0) の表 9.12
UsbInterfaceSetting

代替設定に関する情報を提供し、その設定を選択します。 アプリは、設定とそのエンドポイントの USB インターフェイス記述子を取得し、この設定が現在選択されているかどうかを判断できます。

UsbInterruptInEndpointDescriptor

USB 割り込み IN エンドポイントのエンドポイント記述子。 記述子は、エンドポイントの種類、方向、数、およびエンドポイントから読み取ることができる最大バイト数を 1 回の転送で指定します。 また、アプリは、ホストがエンドポイントでデータをポーリングする頻度に関する情報を取得することもできます。

UsbInterruptInEventArgs

DataReceived イベントのイベント ハンドラーにパラメーターとして渡されるオブジェクトを表します。

UsbInterruptInPipe

基になる USB ドライバーがデバイスの USB 割り込み IN エンドポイントと通信するために開くパイプを表します。 オブジェクトを使用すると、アプリでイベント ハンドラーを指定することもできます。 エンドポイントからデータが読み取られるときに呼び出されるハンドラー。

UsbInterruptOutEndpointDescriptor

USB 割り込み OUT エンドポイントのエンドポイント記述子。 記述子は、エンドポイントの種類、方向、数、およびエンドポイントに書き込むことができる最大バイト数を 1 回の転送で指定します。 アプリは、ホストがエンドポイントをポーリングしてデータを送信する頻度に関する情報を取得することもできます。

UsbInterruptOutPipe

基になる USB ドライバーがデバイスの USB 割り込み OUT エンドポイントと通信するために開くパイプを表します。 オブジェクトは、アプリがエンドポイントに送信するデータを書き込むことができる出力ストリームへのアクセスを提供します。

UsbSetupPacket

USB コントロール転送のセットアップ パケットについて説明します。 セットアップ パケットの説明については、ユニバーサル シリアル バス (USB) 仕様の表 9.2 を参照してください。

列挙型

UsbControlRecipient

USB コントロール転送の受信者を示す定数を定義します。 受信者は、制御要求のセットアップ パケットで定義されます。 ユニバーサル シリアル バス (USB) 仕様 (www.usb.org) のセクション 9.3 の表 9.2 を参照してください。

UsbControlTransferType

USB コントロール転送の種類 (標準、クラス、ベンダー) を示す定数を定義します。

UsbEndpointType

USB エンドポイントの種類 (コントロール、一括、等時性、割り込み) を示す定数を定義します。

UsbReadOptions

ホストが USB bulk IN エンドポイント用に開く USB パイプに設定できる構成フラグの定数を定義します。

UsbTransferDirection

USB 転送の方向 (IN または OUT 転送) を示す定数を定義します。

UsbWriteOptions

ホストが USB OUT エンドポイント用に開く USB パイプに設定できる構成フラグの定数を定義します。

こちらもご覧ください