Descriptores de so de Microsoft para dispositivos USB

Resumen

Microsoft proporciona un conjunto de clases de dispositivo propietarias y descriptores USB, que se denominan Descriptores de so de Microsoft (MOD).

Debido a la rápida aparición de dispositivos que contienen varias funciones de hardware, muchos fabricantes encuentran que sus dispositivos no encajan cómodamente en ninguna de las clases de dispositivos actuales de bus serie universal (USB). Esto priva a estos fabricantes de una de las características más atractivas de la tecnología USB: la estandarización del software de controlador (según la clase del dispositivo). Microsoft Windows proporciona controladores de clase nativa para la mayoría de los dispositivos que pertenecen a clases de dispositivo USB estándar y estos controladores permiten a los usuarios finales conectar fácilmente estos dispositivos al equipo sin necesidad de instalar software especial.

Para dar cabida a los fabricantes cuyos dispositivos no caben en el conjunto actual de clases de dispositivos USB, Microsoft Corporation ha desarrollado un conjunto de clases de dispositivo propietarias y descriptores USB, que se denominan Descriptores de so de Microsoft (MOD). Tanto las aplicaciones como el software del sistema pueden identificar los dispositivos que pertenecen a las clases de dispositivo definidas por Microsoft consultando los dispositivos para determinar si admiten MOD.

Los descriptores de sistema operativo de Microsoft tienen usos importantes que no son compatibles con las clases de dispositivo propietarias. En concreto, proporcionan un mecanismo para derivar la máxima ventaja del firmware del dispositivo. Con la ayuda de los descriptores del sistema operativo de Microsoft, puede usar el firmware para entregar archivos de ayuda, iconos especiales, localizadores uniformes de recursos (direcciones URL), configuración del Registro y otros datos necesarios para facilitar la instalación y mejorar la satisfacción del cliente. En algunos casos, puede forgo los medios de almacenamiento, como discos de disquete y CDs, lo que simplifica la entrega y el soporte técnico de las actualizaciones.

compatibilidad con Operating-System

Los descriptores de Microsoft OS 1.0 son compatibles con:

  • Windows 8.1
  • Windows 8
  • Windows 7
  • Windows Vista, Windows Server 2008
  • Windows XP con Service Pack 1 (SP1), Windows Server 2003

Los descriptores de Microsoft OS 2.0 son compatibles con:

  • Windows 8.1

¿Por qué Windows emite una solicitud de descriptor de cadena para indexar 0xEE?

Los dispositivos que admiten descriptores de sistema operativo de Microsoft deben almacenar un descriptor de cadena USB especial en el firmware en el índice de cadena fijo de 0xEE. Este descriptor de cadena se denomina descriptor de cadena del sistema operativo de Microsoft.

  • Su presencia indica que el dispositivo contiene uno o varios descriptores de características del sistema operativo.
  • Contiene los datos necesarios para recuperar los descriptores de características del sistema operativo asociados.
  • Contiene un campo de firma que diferencia el descriptor de cadena del sistema operativo de otras cadenas que los IHD pueden elegir almacenar en 0xEE.
  • Contiene un número de versión que permite futuras revisiones de descriptores del sistema operativo de Microsoft.

Si no hay ningún descriptor de cadena en 0xEE o el descriptor de cadena de ese índice no es un descriptor de cadena de sistema operativo válido, Windows asume que el dispositivo no contiene ningún descriptor de características del sistema operativo.

Cuando un nuevo dispositivo se conecta a un equipo por primera vez, un sistema operativo que admita descriptores de sistema operativo de Microsoft solicitará el descriptor de cadena que se encuentra en el índice 0xEE. El descriptor de cadena del sistema operativo de Microsoft contiene un campo de firma incrustado que el sistema operativo usa para diferenciarlo de otras cadenas que podrían estar en 0xEE de índice. La presencia de un descriptor de cadena que contiene el campo de firma adecuado en el índice 0xEE indica al sistema operativo que el dispositivo admite descriptores de sistema operativo de Microsoft. El descriptor de cadena del sistema operativo de Microsoft también proporciona al sistema operativo información de versión.

El sistema operativo consulta el descriptor de cadena en el índice 0xEE durante la enumeración del dispositivo, antes de que el controlador del dispositivo se haya cargado, lo que podría provocar que algunos dispositivos no funcionen correctamente. Estos dispositivos no son compatibles con las versiones del sistema operativo Windows que admiten descriptores de sistema operativo De Microsoft.

Si un dispositivo no contiene un descriptor de cadena válido en el índice 0xEE, debe responder con un paquete de detención (es decir, un paquete que contiene un identificador de paquete de tipo STALL), que se describe en la sección "Errores de solicitud" de la Especificación de bus serie universal. Si el dispositivo no responde con un paquete de detención, el sistema emitirá un paquete de restablecimiento cero de un solo fin al dispositivo, para ayudarle a recuperarse de su estado detenido (solo Windows XP).

Una vez que el sistema operativo solicita un descriptor de cadena del sistema operativo de Microsoft desde un dispositivo, crea la siguiente clave del Registro:

HLKM\SYSTEM\CurrentControlSet\Control\UsbFlags\vvvvpppprrrrr

El sistema operativo crea una entrada del Registro, denominada osvc, en esta clave del Registro que indica si el dispositivo admite descriptores de sistema operativo de Microsoft. Si el dispositivo no proporciona una respuesta válida la primera vez que el sistema operativo lo consulta para un descriptor de cadena del sistema operativo de Microsoft, el sistema operativo no realizará más solicitudes para ese descriptor.

Para ver las entradas del Registro en esa clave, consulte Entradas del Registro de dispositivos USB.

Para obtener más información, consulte Descriptores de sistema operativo de Microsoft.

¿Qué tipos de descriptores de características del sistema operativo son compatibles con Windows?

Cualquier información que se va a almacenar como descriptor de características debe cumplir uno de los formatos estándar definidos por Microsoft. No se pueden definir ni implementar descriptores de características adicionales sin el consentimiento de Microsoft. Microsoft ha definido los siguientes descriptores de características:

  • Id. de compatibilidad extendida. Windows usa códigos de clase y subclase para ayudar a localizar el controlador predeterminado adecuado para un dispositivo USB. Sin embargo, el grupo de trabajo de dispositivos USB debe asignar estos códigos. Esto significa que los dispositivos que implementan nuevos tipos de características a menudo no tienen códigos de clase y subclase adecuados, por lo que Windows no puede usar los códigos para seleccionar un controlador predeterminado. Los IHV pueden eludir este problema almacenando la información en firmware como un descriptor de características del sistema operativo de compatibilidad extendida. Después, Windows puede recuperar esta información cuando el dispositivo está conectado y usarlo para ayudar a determinar qué controlador predeterminado se va a cargar.
  • Propiedades extendidas. Actualmente, hay dos niveles en los que se pueden declarar propiedades para un dispositivo USB: nivel de clase o nivel de nodo de desarrollo. El descriptor de características del sistema operativo de propiedades extendidas permite a un proveedor almacenar propiedades adicionales, como páginas de ayuda, direcciones URL e iconos en el firmware del dispositivo.

Especificación de descriptores de Microsoft OS 1.0
Especificación de descriptores de Microsoft OS 2.0
Creación de dispositivos USB para Windows