UsbInterface Clase
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- Atributos
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)
|
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];
}
Bulk |
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. |
Bulk |
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. |
Interface |
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. |
Interface |
Obtiene una matriz de objetos que representan la configuración alternativa definida para la interfaz USB. |
Interrupt |
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. |
Interrupt |
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. |