Рубрики NoticiasSuave

El entusiasta portó «miles de programas» a Windows 95 — portó el .NET Framework de Windows 98

Опубликовал
Андрей Русанов

El videoblogger MattKC, según sus propias palabras, ha migrado «miles de programas» a Windows 95 portando una importante característica de Windows 98 — el .NET Framework. La principal limitación de Windows 95 en comparación con Windows 98 es la falta de .NET Framework — en la mayoría de los demás aspectos, Windows 98 es muy parecido a su predecesor en diseño y funciones.

En este vídeo de 51 minutos, MattKC explica cómo conseguir que .NET Framework funcione correctamente en Windows 95. Faltan muchos archivos DLL, pero el uso de una herramienta de volcado permite identificar los nombres de los archivos que faltan para poder sustituirlos o ignorarlos. Incluso después de transferir todos los archivos que faltan, .NET sigue sin funcionar. Se necesitaron más claves de registro en Windows 95 que segundos en este vídeo — el número total de claves necesarias fue de 5409.

Incluso después de portar, .NET no puede depurar correctamente JIT (Just In Time) en Windows 95. La causa parece ser ndphlpr, un misterioso controlador heredado de Windows que no se utiliza en Windows 98 pero que es necesario para el correcto funcionamiento porque .NET se bloquea sin él. MattKC determina que engañar al PC haciéndole creer que ndphlpr está presente funciona, pero después de su investigación revela que nadie sabe lo que es el archivo.

Esto, a su vez, causa un error de excepción de código de máquina. La herramienta WinDebug no soporta .NET de forma nativa (porque todavía no existía), por lo que MattKC todavía tiene que lidiar con algunos problemas de compatibilidad al probar Windows 95 y 98 en paralelo. Ambos sistemas se ejecutaron en WinDebug durante varios días para encontrar el problema.

Finalmente MattKC encontró un bloque cerrado de código que WinDebug no podía leer. Una vez descifrado, el código era el siguiente:

F2 0F 10 44 24 08 F2 05 2C CO

Este código erróneo hacía referencia a la falta de APIs de Windows para algunas funciones. La excepción era que no encontraba «NotifyWinEvent en user32.dll», y SSE2 ofuscaba la instrucción en el código. Tuve que parchear .NET para eliminar la dependencia de SSE2, pero esto no arregló la compatibilidad, sólo el propio depurador .NET.

Después de una considerable depuración de Lego Island, MattKC finalmente escribió a mano el código del método para lanzar una excepción/mensaje de error para imprimir en la ventana en lugar de donde no puede verlo. Esto funciona y arregla la última parte de la compatibilidad DLL. Después de eso, el Rebuilder para Lego Island y el programa especial de capturas de pantalla, más modernizado, ahora funcionaban bien en Windows 95.

Fuente: Tom`s Hardware

Los comentarios de Disqus están cargando....