Descriptores de so de Microsoft para dispositivos USB
Microsoft proporciona un conjunto de clases de dispositivos propietarios y descriptores USB, que se denominan Descriptores de sistema operativo de Microsoft (MOD).
- Especificación de descriptores de Microsoft OS 1.0
- Especificación de descriptores de Microsoft OS 2.0
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 actuales de dispositivo 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). Windows proporciona controladores de clase nativos para la mayoría de los dispositivos que pertenecen a clases de dispositivos 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 desarrolló un conjunto de clases de dispositivos propietarios y descriptores USB, que se denominan Descriptores de sistema operativo 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 del 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 ofrecer 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 admitir medios de almacenamiento como discos de disquete y CDs, lo que simplifica la entrega y el soporte técnico de las actualizaciones.
Compatibilidad con sistema operativo
Los descriptores de Microsoft OS 1.0 se admiten en:
- Windows 11
- Windows 10
- 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 se admiten en:
- Windows 11
- Windows 10
- Windows 8.1
¿Por qué Windows emite una solicitud de descriptor de cadena para indexar 0xEE?
Los dispositivos que admiten descriptores del sistema operativo de Microsoft deben almacenar un descriptor de cadena USB especial en el firmware en el índice fijo de cadena 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 revisiones futuras de descriptores de 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 está conectado a un equipo por primera vez, un sistema operativo que admite descriptores de sistema operativo de Microsoft solicita 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 el índice 0xEE. 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 de dispositivos, antes de que el controlador para el dispositivo se cargue, lo que podría provocar que algunos dispositivos no funcionen correctamente. Estos dispositivos no son compatibles con 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 universal de bus serie. Si el dispositivo no responde con un paquete de detención, el sistema emite un paquete de restablecimiento cero de un solo extremo al dispositivo, para ayudarle a recuperarse de su estado detenido (solo Windows XP).
Después de que el sistema operativo solicite 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 realiza más solicitudes para ese descriptor.
Para las entradas del Registro en esa clave, consulte Entradas del Registro de dispositivos USB.
Para obtener más información, consulte Especificación de descriptores de Microsoft OS 1.0.
¿Qué tipos de descriptores de características de sistema operativo admite 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 otros descriptores de características sin el consentimiento de Microsoft. Microsoft definió 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 IHD pueden eludir este problema almacenando la información en firmware como un descriptor de características del sistema operativo de identificador compatible extendido. A continuación, 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 más propiedades, como páginas de ayuda, direcciones URL e iconos en el firmware del dispositivo.