共用方式為


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 引進)

範例

此範例程式碼示範如何藉由指定廠商/產品識別碼來取得 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 物件的參考之前,您必須擁有下列其中一個識別碼:

  • 實體裝置的廠商和產品識別碼。 這些識別碼是硬體識別碼字串的一部分。 或者,您可以從裝置管理員中的 Hardware Ids屬性衍生識別碼。 例如,如果 硬體識別碼USB\VID_045E&PID_078E ,則廠商識別碼為 0x045E ,而產品識別碼為 0x078E
  • 裝置介面 GUID。 您可以從DeviceInterfaceGuids登錄專案取得該 GUID:HKEY_LOCAL_MACHINE\System\CurrentControlSet\列舉\USB\< 裝置識別碼 >\< 實例識別碼 >\裝置參數
  • 裝置的類別、子類別和通訊協定代碼。 您可以從 [裝置參數] 機碼下找到的CompatibleIds登錄專案取得該資訊。

若要取得 UsbDevice 物件:

  1. 取得進階查詢語法 (AQS) 字串,其中包含在列舉裝置集合中尋找裝置的搜尋準則。 如果您想要依廠商識別碼/產品識別碼或裝置介面 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. 傳遞裝置實例字串並取得 UsbDevice 物件,以呼叫 FromIdAsync 。 然後,您可以使用 UsbDevice 物件來執行其他作業,例如傳送控制項傳輸。 當應用程式使用 UsbDevice 物件完成時,應用程式必須呼叫 Close來釋放它。

屬性

Configuration

取得 物件,表示包含所有介面及其端點的 USB 組態。

DefaultInterface

取得 物件,表示 USB 組態中的預設或第一個介面。

DeviceDescriptor

取得 物件,表示 USB 裝置描述項。

方法

Close()

釋放先前透過呼叫FromIdAsync取得之UsbDevice物件的參考。

Dispose()

執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之應用程式定義的工作。

FromIdAsync(String)

啟動建立 UsbDevice 物件的非同步作業。

GetDeviceClassSelector(UsbDeviceClass)

取得進階查詢語法 (AQS) 字串,應用程式可以傳遞至 DeviceInformation.FindAllAsync ,以尋找特定類型的 USB 裝置。

GetDeviceSelector(Guid)

根據應用程式指定的裝置介面 GUID 識別碼,取得 AQS) 字串 (進階查詢語法。 應用程式會將字串傳遞至 DeviceInformation.FindAllAsync ,以尋找特定類型的 USB 裝置。

GetDeviceSelector(UInt32, UInt32)

根據應用程式指定的廠商和產品識別碼,取得 AQS) 字串 (進階查詢語法。 應用程式會將字串傳遞至 DeviceInformation.FindAllAsync ,以尋找特定類型的 USB 裝置。

GetDeviceSelector(UInt32, UInt32, Guid)

根據應用程式指定的廠商、產品和裝置介面 GUID 識別碼,取得 AQS) 字串 (進階查詢語法。 應用程式會將字串傳遞至 DeviceInformation.FindAllAsync ,以尋找特定類型的 USB 裝置。

SendControlInTransferAsync(UsbSetupPacket)

啟動從裝置的預設控制端點讀取的零長度 USB 控制項傳輸。

SendControlInTransferAsync(UsbSetupPacket, IBuffer)

啟動 USB 控制傳輸,以從裝置的預設控制端點接收資料。

SendControlOutTransferAsync(UsbSetupPacket)

啟動長度為零的 USB 控制項傳輸,以寫入裝置的預設控制端點。

SendControlOutTransferAsync(UsbSetupPacket, IBuffer)

啟動 USB 控制項傳輸,以將資料傳送至裝置的預設控制端點。

適用於

另請參閱