What is Device Driver?
Device driver gives a user-side application access to peripheral resources without exposing the operation of the underlying hardware, and in such a manner that new classes of devices may be introduced without modification of that user-side code. Since access to hardware is usually restricted to supervisor-mode code, the device driver (which runs kernel-side) is the means of access to these resources for user-mode client threads. Device drivers are dynamically loaded kernel DLLs that are loaded into the kernel process after the kernel has booted. They may be execute-in-place or RAM loaded, and like other kernel-side code may use writeable static data.