Поделиться через


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
Наследование
Object Platform::Object IInspectable 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.

Применяется к