The asynchronous I/O model requires that a generic driver's responses to its Read, Write, Control, and Status entry points comply with the requirements of hardware interrupt level execution. This is because the Device Manager initiates requests that have been queued for the driver only after previously queued requests finish. Routine initiation and completion are both possible at the hardware interrupt level.
A driver's Open, Close, Initialize, Finalize, Replace, and Superseded entry points are always invoked at task level. This is the only opportunity that a driver has to allocate memory or use other services that are only available at the task level. For memory allocation guidelines, see Memory Management Services.
Service Limitations indicates which Mac OS services are available to drivers at hardware interrupt level and at secondary interrupt level. It is the responsibility of the driver writer to conform to these limitations. Drivers that violate the limitations will not work with future releases of Mac OS.