Every device driver must have one main entry point, like the
main() function in a C console application. This entry point is
called DriverEntry() in Windows and init_module() in
Linux. When the operating system loads the device driver, this driver entry
procedure is called.
There is some global initialization that every driver needs to perform only
once when it is loaded for the first time. This global initialization is the
responsibility of the
DriverEntry()/init_module() routine. The entry
function also registers which driver callbacks will be called by the operating
system. These driver callbacks are operating system requests for services from
the driver. In Windows, these callbacks are called dispatch routines,
and in Linux they are called file operations. Each registered callback
is called by the operating system as a result of some criteria, such as
disconnection of hardware, for example.