UsbInterface 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供 USB 介面的相關資訊,包括其端點、介面支援的替代設定數目,以及取得這些設定的整個描述項集。 它也會取得與介面所支援端點相關聯的管道。
public ref class UsbInterface sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UsbInterface final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UsbInterface
Public NotInheritable Class UsbInterface
- 繼承
- 屬性
Windows 需求
裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
|
範例
此程式碼範例示範如何剖析描述元和取得管道物件。 此範例假設應用程式先前已取得 UsbDevice 物件。
using Windows.Devices.Usb;
using Windows.Storage.Streams;
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
UsbDevice device;
UInt32 readLen = 8;
// Get the UsbDevice object. Not shown.
...
UsbInterface myInterface = null;
//
// Need to find this descriptor after an interface descriptor:
//
// ===>Class-Specific Video Control Interface Header Descriptor<===
// bLength: 0x0D
// bDescriptorType: 0x24
// bDescriptorSubtype:0x01
// bcdVDC: 0x0100
// wTotalLength: 0x00D9 -> Validated
// dwClockFreq: 0x02DC6C00 = (48000000) Hz
// bInCollection: 0x01
// baInterfaceNr[1]: 0x01
// USB Video Class device: spec version 1.0
//
foreach (var interf in device.Configuration.UsbInterfaces)
{
foreach (var setting in interf.InterfaceSettings)
{
var descriptors = setting.Descriptors;
// First descriptor in the setting must be the interface descriptor
if (descriptors.Count >= 2 &&
UsbInterfaceDescriptor.TryParse(descriptors[0], null) ==
true &&
descriptors[1].Length == 0x0D &&
descriptors[1].DescriptorType == 0x24)
{
Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer(readLen);
descriptors[1].readDescriptorBuffer(buffer);
Windows.Storage.Streams.DataReader reader = Windows.Storage.Streams.DataReader.FromBuffer(buffer);
reader.ReadByte(); // bLength
reader.ReadByte(); // bDescriptorType
byte bDescriptorSubType = reader.ReadByte();
if (bDescriptorSubType == 0x01)
{
// This is our interface.
myInterface = interf;
ushort bcdVDC = reader.ReadUInt16();
ushort wTotalLength = reader.ReadUInt16();
byte lsb = reader.ReadByte();
uint dwClockFreq = (reader.ReadUInt16() << 8) + lsb;
byte bInCollection = reader.ReadByte();
byte baInterfaceNr1 = reader.ReadByte();
await setting.SelectSettingAsync();
}
break;
}
}
if (myInterface != null)
{
break;
}
}
if (myInterface == null)
{
ShowError("Video Control Interface descriptor not found");
return;
}
// Pipes are now available to communicate with endpoints
UsbInterruptInPipe interruptIn = myInterface.InterruptInPipes[0];
UsbBulkOutPipe bulkOut = myInterface.BulkOutPipes[0];
}
屬性
BulkInPipes |
取得 物件的陣列,此陣列表示主機開啟以與 USB 介面設定目前設定中定義的大量 IN 端點通訊的管道。 |
BulkOutPipes |
取得 物件的陣列,此陣列表示主機開啟以與 USB 介面目前設定中定義的大量 OUT 端點通訊的管道。 |
Descriptors |
取得 物件的陣列,這些物件表示屬於這個 USB 介面之所有替代設定的描述項。 |
InterfaceNumber |
取得識別 USB 介面的介面編號。 此值是標準 USB 介面描述元的 bInterfaceNumber 欄位。 |
InterfaceSettings |
取得 物件的陣列,表示為 USB 介面定義的替代設定。 |
InterruptInPipes |
取得 物件的陣列,此陣列表示主機開啟以與 USB 介面目前設定中定義的中斷 IN 端點通訊的管道。 |
InterruptOutPipes |
取得 物件的陣列,表示主機開啟以與 USB 介面目前設定中定義的中斷 OUT 端點通訊的管道。 |