In order to develop hardened device drivers you must take responsibility for:
Correct use of the DDI functions
Handling devices with deviant interrupt logic
Detecting any corruption of device I/O
These responsibilities are elaborated in Chapter 13, Hardened Driver Requirements.