El driver que se pasó de listo

Siguiendo con el libro de Raymond Chen de la entrada anterior, no puedo contenerme de contaros esto, que me ha hecho soltar sonoras carcajadas cuando lo he leído.

Estamos en los tiempos de Windows 95 y las primeras versiones de DirectX, y una de las funciones internas entre DirectX y los drivers de bajo nivel de los fabricantes de tarjetas con este soporte, es una función que pasa un GUIID que indica una característica. Si la función devuelve TRUE, el driver la soporta. Chen no nos da el nombre real de la misma, pero una de las primeras acciones que se negocian entre ambas partes es determinar qué cosas soporta el driver del fabricante y cuáles no, por lo que la función se usa repetidas veces sobre el driver.

Pues bien, había un fabricante (no dice quién) que devolvía a todo que sí, pero que luego, al ejecutar las pruebas, petaba miserablemente.

Un análisis de bajo nivel del driver determinó que la función debía haber sido implementada por el departamento comercial, porque la función era nada más y nada menos que esto (escrito en pseudocódigo):

BOOL SoportasEstaCaracteristica(GUIID característica)
{
     return TRUE;
}

Vamos, que dicho driver lo soportaba absolutamente todo.

Entonces un programador de DirectX cogió una tarjeta de red y miró su UIID, anotándolo. Luego la destrozó a martillazos y la tiró a la basura. De todos es conocido que dichos UIID han de ser únicos de forma global, así que dicho número no iba a ser utilizado nunca jamás.

A partir de entonces, una de las pruebas entre DirectX y los drivers de los fabricantes, es hacer la siguiente llamada:

if(SoportasEstaCaracteristica(UIID_que_no_existe)==TRUE)
{
        //¡Te pillé!
}

Si alguien quiere leer la versión original, que difiere por completo en la forma de contar el tema pero no en el contenido en sí, está entre las páginas 322 y 323 del libro.

Un comentario sobre “El driver que se pasó de listo”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *