Leer en inglés

Compartir a través de


UsbInterface Clase

Definición

Proporciona información sobre la interfaz USB, incluidos sus puntos de conexión, el número de configuraciones alternativas que admite la interfaz y obtiene todo el conjunto de descriptores para esa configuración. También obtiene canalizaciones asociadas a los puntos de conexión que admite la interfaz.

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
Herencia
Object Platform::Object IInspectable UsbInterface
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

En este ejemplo de código se muestra cómo analizar descriptores y obtener objetos de canalización. En el ejemplo se supone que la aplicación ha obtenido previamente el 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];

}

Propiedades

BulkInPipes

Obtiene una matriz de objetos que representan canalizaciones que el host abrió para comunicarse con puntos de conexión IN masivos definidos en la configuración actual de la configuración de la interfaz USB.

BulkOutPipes

Obtiene una matriz de objetos que representan canalizaciones que el host abrió para comunicarse con puntos de conexión OUT masivos definidos en la configuración actual de la interfaz USB.

Descriptors

Obtiene una matriz de objetos que representan descriptores para todas las configuraciones alternativas que forman parte de esta interfaz USB.

InterfaceNumber

Obtiene el número de interfaz que identifica la interfaz USB. Este valor es el campo bInterfaceNumber de un descriptor de interfaz USB estándar.

InterfaceSettings

Obtiene una matriz de objetos que representan la configuración alternativa definida para la interfaz USB.

InterruptInPipes

Obtiene una matriz de objetos que representan las canalizaciones que el host abrió para comunicarse con los puntos de conexión IN de interrupción definidos en la configuración actual de la interfaz USB.

InterruptOutPipes

Obtiene una matriz de objetos que representan canalizaciones que el host abrió para comunicarse con puntos de conexión OUT de interrupción definidos en la configuración actual de la interfaz USB.

Se aplica a