|
|
The most striking difference between a kernel-level driver and a user-level program is the structure. An application program is compiled into a single executable image whose top-level structure is determined by a main( ) routine. Subordinate routines are called in the sequence controlled by the ( ) main routine.
A driver, on the other hand, has no main( ) routine. Rather, it is a collection of routines installed as part of the kernel. Instead of a main( ) routine to impose structure, drivers are accessed through entry point routines whose starting address is known to the kernel.