UsbInterface Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет сведения об интерфейсе 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 |
Возвращает массив объектов , представляющих каналы, открытые узлом для взаимодействия с массовыми конечными точками IN, определенными в текущем параметре параметра интерфейса USB. |
BulkOutPipes |
Возвращает массив объектов , представляющих каналы, открытые узлом для взаимодействия с конечными точками массового выхода, определенными в текущем параметре ИНТЕРФЕЙСА USB. |
Descriptors |
Возвращает массив объектов, представляющих дескрипторы для всех альтернативных параметров, которые являются частью этого ИНТЕРФЕЙСА USB. |
InterfaceNumber |
Возвращает номер интерфейса, идентифицирующий ИНТЕРФЕЙС USB. Это значение является полем bInterfaceNumber дескриптора стандартного интерфейса USB. |
InterfaceSettings |
Возвращает массив объектов , представляющих альтернативные параметры, определенные для интерфейса USB. |
InterruptInPipes |
Возвращает массив объектов , представляющих каналы, открытые узлом для взаимодействия с конечными точками прерывания IN, определенными в текущем параметре ИНТЕРФЕЙСА USB. |
InterruptOutPipes |
Возвращает массив объектов , представляющих каналы, открытые узлом для связи с конечными точками прерывания OUT, определенными в текущем параметре ИНТЕРФЕЙСА USB. |