MinWin este un termen folosit de Microsoft pentru a descrie nucleul și sistemul de operare ale căror componente principale au început să fie dezvoltate în același timp cu Windows Vista . Acest concept a fost folosit pentru prima dată în 2003 pentru a descrie aproximativ 95% din componentele sistemului de operare (deși acest procent a scăzut în timp). Acesta este cel mai popular ansamblu modular minimalist al componentelor Windows și a fost inițial planificat să fie nucleul Windows 7 .
La 4 noiembrie 2008, Mark Russinovich , membru al Consiliului Tehnic Microsoft Corporation, în webcast-ul său pe MSDN Channel 9 a anunțat că kernel-ul MinWin era încă implementat în Windows 7, dar principiul implementării sale se bazează pe împărțirea nucleului în straturi, unde stratul de bază ( KernelBase .dll , etc.) ocupă 30 MB în total, iar restul funcționalității rămâne în bibliotecile vechi (de exemplu, kernel32.dll , etc.). Această modificare este imperceptibilă pentru funcționarea aplicațiilor și a driverelor de dispozitiv datorită unei scheme atent gândite pentru separarea funcționalității.
Pentru ca MinWin să iasă în evidență, unele componente au trebuit să fie reproiectate (divizate sau îmbinate). De exemplu, biblioteca kernel32.dll s-a împărțit în kernel32.dll și kernelbase.dll . Și pentru ca aceste modificări să nu afecteze programele de nivel superior, apelurile către toate funcțiile „la distanță” din vechile DLL-uri sunt redirecționate către biblioteci din MinWin. De exemplu:
Pentru a reduce numărul de DLL-uri fizice care trebuie încărcate la pornire, multe DLL-uri din MinWin au început să conțină seturi de funcții de la diferite API-uri , iar acest lucru a complicat dezvoltarea ulterioară a sistemului. Pentru a evita această problemă, colecțiile de funcții din API-urile asociate au fost îmbinate în așa-numitele DLL-uri virtuale.
De exemplu: api-ms-win-core-errorhandling-l1-1-0.dll , unde numerele reprezintă nivelul de ierarhie din sistem, versiunile majore și minore. Schema pentru maparea DLL-urilor virtuale la cele fizice este stocată în Apisetschema.dll .
Toate DLL-urile virtuale există fizic, dar nu conțin implementări de funcții:
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-fibers-l1-1-0.dll api-ms-win-core-file-l1-1-0.dll api-ms-win-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-win-core-io-l1-1-0.dll api-ms-win-core-libraryloader-l1-1-0.dll api-ms-win-core-localization-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-win-core-processthreads-l1-1-0.dll api-ms-win-core-profile-l1-1-0.dll api-ms-win-core-rtlsupport-l1-1-0.dll api-ms-win-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-win-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-win-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-win-service-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-win-service-winsvc-l1-1-0.dll