MinWin es un término utilizado por Microsoft para describir el kernel y el sistema operativo , cuyos componentes principales comenzaron a desarrollarse al mismo tiempo que Windows Vista . Este concepto se utilizó por primera vez en 2003 para describir aproximadamente el 95% de los componentes del sistema operativo (aunque este porcentaje ha disminuido con el tiempo). Este es el ensamblaje modular minimalista más popular de los componentes de Windows y originalmente se planeó para ser el núcleo de Windows 7 .
El 4 de noviembre de 2008, Mark Russinovich , miembro del Consejo Técnico de Microsoft Corporation, en su webcast en MSDN Channel 9 anunció que el kernel MinWin todavía estaba implementado en Windows 7, pero el principio de su implementación se basa en dividir el kernel en capas, donde la capa base ( KernelBase .dll , etc.) ocupa 30 MB en total, y el resto de la funcionalidad permanece en las bibliotecas antiguas (por ejemplo, kernel32.dll , etc.). Este cambio es imperceptible para el funcionamiento de las aplicaciones y los controladores de dispositivos debido a un esquema cuidadosamente pensado para separar la funcionalidad.
Para que MinWin se destacara, algunos componentes tuvieron que volver a trabajarse (dividirse o fusionarse). Por ejemplo, la biblioteca kernel32.dll se dividió en kernel32.dll y kernelbase.dll . Y para que estos cambios no afecten a los programas de nivel superior, las llamadas a todas las funciones "remotas" en las DLL antiguas se redirigen a las bibliotecas de MinWin. Por ejemplo:
Para reducir la cantidad de archivos DLL físicos que deben cargarse al inicio, muchos archivos DLL en MinWin comenzaron a contener conjuntos de funciones de diferentes API , y esto complicó el desarrollo posterior del sistema. Para evitar este problema, las colecciones de funciones de las API relacionadas se han fusionado en las denominadas DLL virtuales.
Por ejemplo: api-ms-win-core-errorhandling-l1-1-0.dll , donde los números representan el nivel de jerarquía en el sistema, versiones principales y secundarias. El esquema para asignar archivos DLL virtuales a archivos físicos se almacena en Apisetschema.dll .
Todas las DLL virtuales existen físicamente, pero no contienen implementaciones de funciones:
C:\Windows\System32>dir /api* /B api-ms-win-core-console-l1-1-0.dll api-ms-win-core-datetime-l1-1-0.dll api-ms-win-core-debug-l1-1-0.dll api-ms-win-core-delayload-l1-1-0.dll api-ms-win-core-errorhandling-l1-1-0.dll api-ms-win-core-fibras-l1-1-0.dll api-ms-win-core-archivo-l1-1-0.dll api-ms-ganar-core-handle-l1-1-0.dll api-ms-win-core-heap-l1-1-0.dll api-ms-win-core-interlocked-l1-1-0.dll api-ms-ganar-core-io-l1-1-0.dll api-ms-win-core-libraryloader-l1-1-0.dll api-ms-win-core-localización-l1-1-0.dll api-ms-win-core-localregistry-l1-1-0.dll api-ms-win-core-memory-l1-1-0.dll api-ms-win-core-misc-l1-1-0.dll api-ms-win-core-namedpipe-l1-1-0.dll api-ms-win-core-processenvironment-l1-1-0.dll api-ms-ganar-core-processthreads-l1-1-0.dll api-ms-win-core-perfil-l1-1-0.dll api-ms-win-core-rtlsupport-l1-1-0.dll api-ms-ganar-core-string-l1-1-0.dll api-ms-win-core-synch-l1-1-0.dll api-ms-win-core-sysinfo-l1-1-0.dll api-ms-ganar-core-threadpool-l1-1-0.dll api-ms-win-core-ums-l1-1-0.dll api-ms-win-core-util-l1-1-0.dll api-ms-ganar-core-xstate-l1-1-0.dll api-ms-win-security-base-l1-1-0.dll api-ms-win-security-lsalookup-l1-1-0.dll api-ms-win-security-sddl-l1-1-0.dll api-ms-ganar-servicio-core-l1-1-0.dll api-ms-win-service-management-l1-1-0.dll api-ms-win-service-management-l2-1-0.dll api-ms-ganar-servicio-winsvc-l1-1-0.dll