All Windows programs get in touch with the Windows kernel through a process often known as dynamic linking. Normally, with DOS programs, your programs are linked statically. Because of this your linker resolves all unresolved external function calls by attracting the necessary object code modules (.OBJs) to make an executable file (.EXE) made up of the executable code for those functions called in your program. The Windows environment, on the other hand, provides a lot of functions to get linked statically into one executable program. A statically linked program under Windows would probably be several megabytes in size and horribly inefficient. Instead, Windows makes extensive by using dynamic link libraries.