UsbDevice Clase

Definición

Representa un dispositivo USB. El objeto proporciona métodos y propiedades que una aplicación puede usar para enumerar dispositivos WinUSB y enviar transferencias de control IN y OUT.

public ref class UsbDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UsbDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UsbDevice : System.IDisposable
Public NotInheritable Class UsbDevice
Implements IDisposable
Herencia
Object Platform::Object IInspectable UsbDevice
Atributos
Implementaciones

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 código de ejemplo se muestra cómo obtener el objeto UsbDevice especificando el identificador de proveedor o producto.

protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
    UInt32 vid = 0x045E;
    UInt32 pid = 0x078F;

    string aqs = UsbDevice.GetDeviceSelector(vid, pid);

    var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(aqs, null);

    if (myDevices.Count == 0)
    {
        ShowError("Device not found!");
        return;
    }

    UsbDevice device = await UsbDevice.FromIdAsync(myDevices[0].Id);

    // Send a control transfer. 

    UsbSetupPacket initSetupPacket = new UsbSetupPacket() 
    { 
        Request = initRequest,
        RequestType = new UsbControlRequestType()
        {
            Recipient = UsbControlRecipient.DefaultInterface,

            ControlTransferType = UsbControlTransferType.Vendor 
        }
    };

   await device.SendOutControlTransferAsync(initSetupPacket);
}

Comentarios

Antes de obtener una referencia al objeto UsbDevice, debe tener uno de estos identificadores:

  • Identificadores de proveedor y producto del dispositivo físico. Esos identificadores forman parte de la cadena de identificador de hardware. Como alternativa, puede derivar los identificadores de la propiedad Ids de hardware en Administrador de dispositivos. Por ejemplo, si el identificador de hardware es USB\VID_045E&PID_078E, el identificador de proveedor es 0x045E y el identificador de producto es 0x078E.
  • GUID de la interfaz del dispositivo. Puede obtener ese GUID de la entrada del Registro DeviceInterfaceGuids en: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB\<Device Identifier>\<Instance Identifier>\Device Parameters
  • Códigos de protocolo, subclase y clase del dispositivo. Puede obtener esa información de la entrada del Registro CompatibleIds , que se encuentra en la clave Parámetros del dispositivo .

Para obtener el objeto UsbDevice:

  1. Obtenga la cadena de sintaxis de consulta avanzada (AQS) que contiene criterios de búsqueda para buscar el dispositivo en la colección de dispositivos enumerada. Si desea buscar por el identificador de proveedor o el identificador de producto o el GUID de la interfaz de dispositivo, llame a GetDeviceSelector. Si quiere buscar por la clase de dispositivo, llame a GetDeviceClassSelector. Ambas llamadas recuperan cadenas de AQS con formato.
  2. Pase la cadena recuperada a FindAllAsync. La llamada recupera un objeto DeviceInformationCollection .
  3. Recorra en bucle la colección. Cada iteración obtiene un objeto DeviceInformation .
  4. Obtiene el valor de la propiedad DeviceInformation.Id . El valor de cadena es la ruta de acceso de la instancia del dispositivo. Por ejemplo, \\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}.
  5. Llame a FromIdAsync pasando la cadena de instancia del dispositivo y obtenga el objeto UsbDevice. A continuación, puede usar el objeto UsbDevice para realizar otras operaciones, como enviar una transferencia de control. Cuando la aplicación haya terminado de usar el objeto UsbDevice, la aplicación debe liberarla llamando a Close.

Propiedades

Configuration

Obtiene un objeto que representa una configuración USB, incluidas todas las interfaces y sus puntos de conexión.

DefaultInterface

Obtiene el objeto que representa el valor predeterminado o la primera interfaz de una configuración USB.

DeviceDescriptor

Obtiene el objeto que representa el descriptor del dispositivo USB.

Métodos

Close()

Libera la referencia al objeto UsbDevice que se obtuvo anteriormente llamando a FromIdAsync.

Dispose()

Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados.

FromIdAsync(String)

Inicia una operación asincrónica que crea un objeto UsbDevice .

GetDeviceClassSelector(UsbDeviceClass)

Obtiene una cadena de sintaxis de consulta avanzada (AQS) que la aplicación puede pasar a DeviceInformation.FindAllAsync para encontrar un tipo específico de dispositivo USB.

GetDeviceSelector(Guid)

Obtiene una cadena de sintaxis de consulta avanzada (AQS), basada en el identificador GUID de la interfaz de dispositivo, especificado por la aplicación. La aplicación pasa la cadena a DeviceInformation.FindAllAsync para encontrar un tipo específico de dispositivo USB.

GetDeviceSelector(UInt32, UInt32)

Obtiene una cadena de sintaxis de consulta avanzada (AQS), basada en identificadores de proveedor y producto, especificados por la aplicación. La aplicación pasa la cadena a DeviceInformation.FindAllAsync para encontrar un tipo específico de dispositivo USB.

GetDeviceSelector(UInt32, UInt32, Guid)

Obtiene una cadena de sintaxis de consulta avanzada (AQS), basada en identificadores GUID de proveedor, producto y interfaz de dispositivo, especificados por la aplicación. La aplicación pasa la cadena a DeviceInformation.FindAllAsync para encontrar un tipo específico de dispositivo USB.

SendControlInTransferAsync(UsbSetupPacket)

Inicia una transferencia de control USB de longitud cero que lee desde el punto de conexión de control predeterminado del dispositivo.

SendControlInTransferAsync(UsbSetupPacket, IBuffer)

Inicia una transferencia de control USB para recibir datos del punto de conexión de control predeterminado del dispositivo.

SendControlOutTransferAsync(UsbSetupPacket)

Inicia una transferencia de control USB de longitud cero que escribe en el punto de conexión de control predeterminado del dispositivo.

SendControlOutTransferAsync(UsbSetupPacket, IBuffer)

Inicia una transferencia de control USB para enviar datos al punto de conexión de control predeterminado del dispositivo.

Se aplica a

Consulte también