Compartilhar via


UsbInterface Classe

Definição

Fornece informações sobre a interface USB, incluindo seus pontos de extremidade, o número de configurações alternativas compatíveis com a interface e obtém todo o descritor definido para essas configurações. Ele também obtém pipes associados aos pontos de extremidade aos quais a interface dá suporte.

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
Herança
Object Platform::Object IInspectable UsbInterface
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Exemplos

Este exemplo de código mostra como analisar descritores e obter objetos de pipe. O exemplo pressupõe que o aplicativo tenha obtido anteriormente o objeto 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];

}

Propriedades

BulkInPipes

Obtém uma matriz de objetos que representam pipes que o host abriu para se comunicar com pontos de extremidade bulk IN definidos na configuração atual da configuração da interface USB.

BulkOutPipes

Obtém uma matriz de objetos que representam pipes que o host abriu para se comunicar com pontos de extremidade OUT em massa definidos na configuração atual da interface USB.

Descriptors

Obtém uma matriz de objetos que representam descritores para todas as configurações alternativas que fazem parte dessa interface USB.

InterfaceNumber

Obtém o número da interface que identifica a interface USB. Esse valor é o campo bInterfaceNumber de um descritor de interface USB padrão.

InterfaceSettings

Obtém uma matriz de objetos que representam configurações alternativas definidas para a interface USB.

InterruptInPipes

Obtém uma matriz de objetos que representam pipes que o host abriu para se comunicar com interrupção em pontos de extremidade definidos na configuração atual da interface USB.

InterruptOutPipes

Obtém uma matriz de objetos que representam pipes que o host abriu para se comunicar com pontos de extremidade OUT de interrupção definidos na configuração atual da interface USB.

Aplica-se a