Libreria io
Resumen
IO.DLL permite separar las operaciones sobre puertos de E/S en Windows 95/98/2000/XP utilizando la misma librería.
Introducción
Antes de la aparición de Windows, era relativamente simple acceder a los puertos de E/S en un PC típico. En efecto, casi cada lenguaje soportaba un comando especial para hacerlo. A medida que Windows emergía y se desarrollaba gradualmente, estecomportamiento no se podía tolerar por la habilidad del sistema operativo para virtualizar el hardware. Virtualizar el hardware significa que una aplicación (la típica ventana DOS de Windows) cree que está tratando directamente con el dispositivo físico, pero en realidad está tratando con un driver que simula al hardware, pasando los datos hacia atrás y hacia delante según proceda. Así es como puedeabrir docenas de ventanas DOS en su sesión Windows, cada una con la extraña sensación de tener acceso exclusivo a periféricos como el adaptador de video, teclado, tarjeta de sonido e impresora. Si alguien fuera a volcar datos de forma rudimentaria en un puerto de E/S que Windows pensase que tuviese bajo control total, podría ocurrir la "mala cosa oficial", que es toparse con la severidad delhardware dependiendo del dispositivo exacto al que se está accediendo. En realidad, con la virtualización que se acaba de comentar, es bastante improbable que Windows permita que ocurra algo desagradable. En realidad Windows 95/98 permite la ejecución de operaciones de E/S a nivel de la aplicación, aunque tendría que encontrar un lenguaje que soportara esto directamente. Tipicamente el programador tendráque recurrir al lenguaje ensamblador para estos controles a bajo nivel. Si sabe lo que está haciendo, esto puede ser una forma rápida y fácil de acceder a los puertos de E/S. Por supuesto, no todo el mundo sabe, o quiere aprender a programar en ensamblador 80x86 solo porque quieren encender una bombilla desde su ordenador. Sin embargo, la desgana para aprender lenguaje ensamblador llega a seralgo trivial cuando se afronta con su hermano mayor 9x’s. Siendo Windows NT/2000/XP el sistema operativo seguro que es, no permite de ningún modo realizar operaciones en los puertos de E/S a nivel de la aplicación. Un programa que contenga instrucciones ensamblador IN y OUT que funciona perfectamente en Windows 95/98, fallará estrepitósamente cuando se pruebe en Windows NT/2000/XP. Sin embargo,Windows NT/2000/XP permite instrucciones de E/S en con sus drivers modo kernel. Un driver modo kernel ejecuta en el nivel más privilegiado del procesador, y puede hacer lo que se le pida, incluyendo el cierre del sistema después de repararlo, así que escribir un driver modo kernel no es algo sencillo. Si fuera a hacerlo por sí mismo leyendo la documentación del ddk (driver developer kit) de WindowsNT/2000/XP y reconstruye un driver que pudiera llamar por su aplicación para hacer las instrucciones de E/S en nombre de su aplicación, probablemente notaría algo no muy agradable—este tipo de acceso es lamentablemente lento. La llamada desde el nivel de apliación al nivel de sistema, aproximadamente requiere un milisegundo. Compare esto con el microsegundo que suele requerir un acceso E/S normal.Para aumentar la ofensa, está al antojo del sistema operativo. Si tiene tareas que cree que son de mayor prioridad que su modesta llamada al driver, la ejecutará, pero asignándole unos tiempos de ejecución casi imposibles.
Obviamente, escribir un driver que actue como proxy para las llamadas de E/S no es la solución más ideal. Sin embargo hay una solución para NT/2000/XP que hace lo mismo que ellenguaje ensamblador contenido en 95/98. Como se dijo, un driver modo kernell puede hacer lo que quiera. El problema aquí es que si otro driver modo kernell quita el acceso de aplicaciones a los puertos de E/S, debería ser posible que otro driver modo kernell volviera a ponerlo. Aquí es donde IO.DLL introduce la imaginación.
Licencia
IO.DLL es completamente libre! No obstante, no podría: •...
Regístrate para leer el documento completo.