UsbDevice クラス

定義

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

public ref class UsbDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UsbDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UsbDevice : System.IDisposable
Public NotInheritable Class UsbDevice
Implements IDisposable
継承
Object Platform::Object IInspectable UsbDevice
属性
実装

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

このコード例では、ベンダー/製品 ID を指定して UsbDevice オブジェクトを取得する方法を示します。

protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
    UInt32 vid = 0x045E;
    UInt32 pid = 0x078F;

    string aqs = UsbDevice.GetDeviceSelector(vid, pid);

    var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(aqs, null);

    if (myDevices.Count == 0)
    {
        ShowError("Device not found!");
        return;
    }

    UsbDevice device = await UsbDevice.FromIdAsync(myDevices[0].Id);

    // Send a control transfer. 

    UsbSetupPacket initSetupPacket = new UsbSetupPacket() 
    { 
        Request = initRequest,
        RequestType = new UsbControlRequestType()
        {
            Recipient = UsbControlRecipient.DefaultInterface,

            ControlTransferType = UsbControlTransferType.Vendor 
        }
    };

   await device.SendOutControlTransferAsync(initSetupPacket);
}

注釈

UsbDevice オブジェクトへの参照を取得する前に、次のいずれかの識別子が必要です。

  • 物理デバイスのベンダーと製品の識別子。 これらの識別子は、ハードウェア ID 文字列の一部です。 または、デバイス マネージャーHardware Ids プロパティから識別子を派生させることができます。 たとえば、 ハードウェア ID が の場合、 USB\VID_045E&PID_078Eベンダー ID は で 0x045E 、製品 ID は です 0x078E
  • デバイス インターフェイス の GUID。 その GUID は、DeviceInterfaceGuids レジストリ エントリから取得できます。HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB\<Device Identifier Instance Identifier>\<>\Device Parameters
  • デバイスのクラス、サブクラス、プロトコル コード。 この情報は、デバイス パラメーター キーの下にある CompatibleIds レジストリ エントリから取得できます。

UsbDevice オブジェクトを取得するには:

  1. 列挙されたデバイス コレクション内のデバイスを検索するための検索条件を含む高度なクエリ構文 (AQS) 文字列を取得します。 ベンダー ID/製品 ID またはデバイス インターフェイス GUID で検索する場合は、 GetDeviceSelector を呼び出します。 デバイス クラスで検索する場合は、 GetDeviceClassSelector を呼び出します。 どちらの呼び出しも、書式設定された AQS 文字列を取得します。
  2. 取得した文字列を FindAllAsync に渡します。 呼び出しは、 DeviceInformationCollection オブジェクトを 取得します。
  3. コレクションをループします。 各イテレーションでは、 DeviceInformation オブジェクトを 取得します。
  4. DeviceInformation.Id プロパティの値を取得します。 文字列値は、デバイス インスタンスのパスです。 たとえば、「 \\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817} 」のように入力します。
  5. デバイス インスタンス文字列を渡して FromIdAsync を呼び出し、UsbDevice オブジェクトを取得します。 その後、UsbDevice オブジェクトを使用して、コントロール転送の送信などの他の操作を実行できます。 アプリで UsbDevice オブジェクトの使用が完了したら、 Close を呼び出してアプリを解放する必要があります。

プロパティ

Configuration

すべてのインターフェイスとそのエンドポイントを含む USB 構成を表す オブジェクトを取得します。

DefaultInterface

USB 構成の既定または最初のインターフェイスを表す オブジェクトを取得します。

DeviceDescriptor

USB デバイス記述子を表す オブジェクトを取得します。

メソッド

Close()

FromIdAsync を呼び出して以前に取得した UsbDevice オブジェクトへの参照を解放します。

Dispose()

アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。

FromIdAsync(String)

UsbDevice オブジェクトを作成する非同期操作を開始します。

GetDeviceClassSelector(UsbDeviceClass)

特定の種類の USB デバイスを検索するために、アプリが DeviceInformation.FindAllAsync に渡すことができる高度なクエリ構文 (AQS) 文字列を取得します。

GetDeviceSelector(Guid)

アプリで指定されたデバイス インターフェイス GUID 識別子に基づいて、高度なクエリ構文 (AQS) 文字列を取得します。 アプリは、特定の種類の USB デバイスを検索するために、 文字列を DeviceInformation.FindAllAsync に渡します。

GetDeviceSelector(UInt32, UInt32)

アプリで指定されたベンダーと製品の識別子に基づいて、高度なクエリ構文 (AQS) 文字列を取得します。 アプリは、特定の種類の USB デバイスを検索するために、 文字列を DeviceInformation.FindAllAsync に渡します。

GetDeviceSelector(UInt32, UInt32, Guid)

アプリで指定されたベンダー、製品、デバイス インターフェイス の GUID 識別子に基づいて、高度なクエリ構文 (AQS) 文字列を取得します。 アプリは、特定の種類の USB デバイスを検索するために、 文字列を DeviceInformation.FindAllAsync に渡します。

SendControlInTransferAsync(UsbSetupPacket)

デバイスの既定の制御エンドポイントから読み取る長さ 0 の USB コントロール転送を開始します。

SendControlInTransferAsync(UsbSetupPacket, IBuffer)

USB コントロール転送を開始して、デバイスの既定の制御エンドポイントからデータを受信します。

SendControlOutTransferAsync(UsbSetupPacket)

デバイスの既定の制御エンドポイントに書き込む長さ 0 の USB コントロール転送を開始します。

SendControlOutTransferAsync(UsbSetupPacket, IBuffer)

USB コントロール転送を開始して、デバイスの既定の制御エンドポイントにデータを送信します。

適用対象

こちらもご覧ください