Freigeben über


UsbInterface Klasse

Definition

Stellt Informationen zur USB-Schnittstelle einschließlich ihrer Endpunkte, der Anzahl der von der Schnittstelle unterstützten alternativen Einstellungen bereit und ruft den gesamten Deskriptor ab, der für diese Einstellungen festgelegt ist. Außerdem werden Pipes abgerufen, die den Endpunkten zugeordnet sind, die von der Schnittstelle unterstützt werden.

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
Vererbung
Object Platform::Object IInspectable UsbInterface
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

In diesem Codebeispiel wird gezeigt, wie Deskriptoren analysiert und Pipeobjekte abgerufen werden. Im Beispiel wird davon ausgegangen, dass die App zuvor das UsbDevice-Objekt abgerufen hat.

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];

}

Eigenschaften

BulkInPipes

Ruft ein Array von -Objekten ab, die Pipes darstellen, die der Host für die Kommunikation mit Massen-IN-Endpunkten geöffnet hat, die in der aktuellen Einstellung der USB-Schnittstelleneinstellung definiert sind.

BulkOutPipes

Ruft ein Array von -Objekten ab, die Pipes darstellen, die der Host für die Kommunikation mit Bulk-OUT-Endpunkten geöffnet hat, die in der aktuellen Einstellung der USB-Schnittstelle definiert sind.

Descriptors

Ruft ein Array von -Objekten ab, die Deskriptoren für alle alternativen Einstellungen darstellen, die Teil dieser USB-Schnittstelle sind.

InterfaceNumber

Ruft die Schnittstellennummer ab, die die USB-Schnittstelle identifiziert. Dieser Wert ist das Feld bInterfaceNumber eines STANDARD-USB-Schnittstellendeskriptors.

InterfaceSettings

Ruft ein Array von -Objekten ab, die alternative Einstellungen darstellen, die für die USB-Schnittstelle definiert sind.

InterruptInPipes

Ruft ein Array von -Objekten ab, die Pipes darstellen, die der Host für die Kommunikation mit Interrupt-IN-Endpunkten geöffnet hat, die in der aktuellen Einstellung der USB-Schnittstelle definiert sind.

InterruptOutPipes

Ruft ein Array von -Objekten ab, die Pipes darstellen, die der Host für die Kommunikation mit Interrupt-OUT-Endpunkten geöffnet hat, die in der aktuellen Einstellung der USB-Schnittstelle definiert sind.

Gilt für: