11.1.1 Designing Device Drivers with DriverControl Routines

Most NT drivers of DMA devices must have an AdapterControl routine:

At the driver writer’s discretion, an NT device driver can have a ControllerControl routine in order to synchronize its operations to similar devices through a single physical controller or adapter.

The I/O Manager defines a single type (DRIVER_CONTROL) for AdapterControl and ControllerControl routines because each is called indirectly, usually from the StartIo routine, when a driver needs to synchronize access to a physical device that might already be busy:

For a ControllerControl routine, the input PVOID MapRegisterBase, shown in the DRIVER_CONTROL declaration, is a system-reserved value.