Compartir a través de


Información general sobre el desarrollo de aplicaciones windows para dispositivos USB

Resumen:

  • Directrices para elegir el modelo de programación adecuado
  • Experiencia para desarrolladores de aplicaciones para UWP y aplicaciones de escritorio

API importantes:

En este artículo se proporcionan instrucciones para decidir si debe escribir una aplicación para UWP o una aplicación de escritorio de Windows para comunicarse con un dispositivo USB.

Windows proporciona conjuntos de API que puede usar para escribir aplicaciones que se comuniquen con dispositivos USB personalizados. La API realiza tareas comunes relacionadas con USB, como buscar el dispositivo, transferencias de datos.

El dispositivo personalizado en este contexto significa que un dispositivo para el que Microsoft no proporciona un controlador de clase integrada. En su lugar, puede instalar WinUSB (Winusb.sys) como controlador de dispositivo.

Elección de un modelo de programación

Si instala Winusb.sys, estas son las opciones del modelo de programación:

La estrategia para elegir el mejor modelo de programación depende de varios factores.

  • ¿La aplicación se comunicará con un dispositivo USB interno?

    Las API están diseñadas principalmente para acceder a dispositivos periféricos. La API también puede acceder a dispositivos USB internos de PC. Sin embargo, el acceso a dispositivos USB internos de PC desde una aplicación para UWP se limita a una aplicación con privilegios declarada explícitamente en los metadatos del dispositivo por el OEM para ese equipo.

  • ¿La aplicación se comunicará con puntos de conexión isócronos USB?

    Si la aplicación transmite datos a o desde puntos de conexión isócronos del dispositivo, debe escribir una aplicación de escritorio de Windows. En Windows 8.1, se han agregado nuevas funciones de WinUSB al conjunto de API que permite que una aplicación de escritorio envíe datos y reciba datos de puntos de conexión isócronos.

  • ¿La aplicación es un tipo de aplicación "panel de control"?

    Las aplicaciones para UWP son aplicaciones por usuario y no tienen la capacidad de realizar cambios fuera del ámbito de cada aplicación. Para estos tipos de aplicaciones, debes escribir una aplicación de escritorio de Windows.

  • ¿Las aplicaciones para UWP admiten clases de clase de dispositivo USB?

    Escriba una aplicación para UWP si el dispositivo pertenece a una de estas clases de dispositivo.

    • name:cdcControl, classId:02 * *
    • name:physical, classId:05 * *
    • name:personalHealthcare, classId:0f 00 00
    • name:activeSync, classId:ef 01 01
    • name:palmSync, classId:ef 01 02
    • name:deviceFirmwareUpdate, classId:fe 01 01
    • name:irda, classId:fe 02 00
    • name:measurement, classId:fe 03 *
    • name:vendorSpecific, classId:ff * *

    Nota:

    Si el dispositivo pertenece a la clase DeviceFirmwareUpdate, la aplicación debe ser una aplicación con privilegios.

Si el dispositivo no pertenece a una de las clases de dispositivo anteriores, escriba una aplicación de escritorio de Windows.

Requisito del controlador

Requisito del controlador Aplicación para UWP Aplicación de escritorio de Windows
Controlador de función Winusb.sys proporcionados por Microsoft (controlador en modo kernel). Winusb.sys proporcionados por Microsoft (controlador en modo kernel).
Controlador de filtro Si los controladores de filtro están presentes, el acceso se limita a las aplicaciones con privilegios. El OEM declara la aplicación como aplicaciones con privilegios en los metadatos del dispositivo. El controlador de filtro puede estar presente en la pila de dispositivos en modo kernel, siempre y cuando no bloquee el acceso aWinusb.sys.

Ejemplos de código

Muestra Aplicación para UWP Aplicación de escritorio de Windows
Introducción a estos ejemplos

Herramientas de desarrollo

Herramientas de desarrollo Aplicación para UWP Aplicación de escritorio de Windows
Entorno del desarrollador Microsoft Visual Studio 2013

Kit de desarrollo de software (SDK) de Microsoft Windows para Windows 8.1
Use la plantilla aplicación WinUSB incluida con Visual Studio (Ultimate o Professional) y Windows Driver Kit (WDK) 8 o posterior.

Para transferencias isócrónicas, Visual Studio 2013 con Windows Driver Kit (WDK) 8.1 o posterior.
Lenguajes de programación C#, VB.NET, C++, JavaScript C/C++

Implementación de características

Escenario clave Aplicación para UWP Aplicación de escritorio de Windows
Detección de dispositivos Use el espacio de nombres Windows.Devices.Enumeration para obtener un dispositivo UsbDevice. Use SetupAPI y WinUsb_Initialize para obtener un WINUSB_INTERFACE_HANDLE.
Transferencia de control USB UsbSetupPacket
UsbControlRequestType
UsbDevice.SendControlInTransferAsync
UsbDevice.SendControlOutTransferAsync
WINUSB_SETUP_PACKET
WinUsb_ControlTransfer
Obtención de descriptores USB UsbDevice.DeviceDescriptor
UsbConfiguration.Descriptors
UsbInterface.Descriptors
UsbEndpointDescriptor
WinUsb_GetDescriptor
Envío de transferencia masiva USB UsbBulkInPipe
UsbBulkOutPipe
WinUsb_ReadPipe
WinUsb_WritePipe
Envío de transferencia de interrupciones USB UsbInterruptInPipe
UsbInterruptOutPipe
WinUsb_ReadPipe
WinUsb_WritePipe
Envío de transferencia isócrónica USB No compatible. WinUsb_ReadIsochPipe
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_WriteIsochPipeAsap
Cerrar el dispositivo UsbDevice.Close WinUsb_Free

Documentación

Documentación Aplicación para UWP Aplicación de escritorio de Windows
Guía de programación Hablar con dispositivos USB, empezar a finalizar Cómo acceder a un dispositivo USB mediante funciones winUSB
referencia de API Windows.Devices.Usb Funciones winUSB