Partager via


UsbInterface Classe

Définition

Fournit des informations sur l’interface USB, y compris ses points de terminaison, le nombre de paramètres secondaires pris en charge par l’interface et obtient l’ensemble du descripteur défini pour ces paramètres. Il obtient également des canaux associés aux points de terminaison pris en charge par l’interface.

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
Héritage
Object Platform::Object IInspectable UsbInterface
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

Exemples

Cet exemple de code montre comment analyser des descripteurs et obtenir des objets de canal. L’exemple suppose que l’application a déjà obtenu l’objet 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];

}

Propriétés

BulkInPipes

Obtient un tableau d’objets qui représentent des canaux que l’hôte a ouverts pour communiquer avec les points de terminaison IN en bloc définis dans le paramètre actuel du paramètre d’interface USB.

BulkOutPipes

Obtient un tableau d’objets qui représentent des canaux que l’hôte a ouverts pour communiquer avec les points de terminaison OUT en bloc définis dans le paramètre actuel de l’interface USB.

Descriptors

Obtient un tableau d’objets qui représentent des descripteurs pour tous les autres paramètres qui font partie de cette interface USB.

InterfaceNumber

Obtient le numéro d’interface qui identifie l’interface USB. Cette valeur est le champ bInterfaceNumber d’un descripteur d’interface USB standard.

InterfaceSettings

Obtient un tableau d’objets qui représentent d’autres paramètres définis pour l’interface USB.

InterruptInPipes

Obtient un tableau d’objets qui représentent des canaux que l’hôte a ouverts pour communiquer avec des points de terminaison IN d’interruption définis dans le paramètre actuel de l’interface USB.

InterruptOutPipes

Obtient un tableau d’objets qui représentent des canaux que l’hôte a ouverts pour communiquer avec des points de terminaison OUT d’interruption définis dans le paramètre actuel de l’interface USB.

S’applique à