Skip to main content

Monolithic Storage Drivers and Windows

Updated: December 4, 2001

Monolithic drivers are drivers that are structured to handle all storage command processing from the driver class to the host bus attachment, residing in the code path either alongside Microsoft-supplied monolithic drivers, or alongside a Microsoft-supplied port driver and vendor-supplied miniport drivers.

Monolithic drivers, by their nature, are exceedingly complex and difficult to manage in areas like power management, hibernation, and compatibility. This is why Microsoft attempts to deliver the best possible solution by implementing mini-port architectures and supplying full-feature monolithic drivers for specific classes of storage attachments and devices. The Windows SCSI Port model and mini-IDE driver models employ the ability for device manufacturers to enhance and engage their hardware for specific tasks not covered in the standard interface. These models are constantly undergoing review and improvement, and our hardware partner input on these models is the best path to key enhancements the developer may need.

It is possible to develop and implement monolithic drivers in the Windows product, but currently there is little development help available through resources such as the Windows DDK sample code or documentation. In addition, the nature of these proprietary drivers and their test matrices are so complex that there is little or no chance that Microsoft can assist in these development efforts.

Issues that could challenge existing monolithic storage drivers include:

  • Changes to published interfaces in Plug and Play, ACPI, or storage IOCTLs

  • Inclusion of new features that overlap with the implementation, forcing contentions

  • New models for port drivers, or miniport drivers that affect I/O routing or physical device enumeration

To avoid problems, miniport storage drivers should observe the following:

  • Do not bypass the port driver.

  • Do not call directly into any unpublished (non-operating-system implemented) application programming interface (API) or structure.

  • Do not make calls right into the kernel or hardware abstraction layer (HAL). Miniport drivers that do this may fail logo tests administered by Windows Hardware Quality Labs (WHQL).

Further, monolithic storage drivers that make calls directly into any unpublished (non-operating-system implemented) API or structure may fail logo tests administered by WHQL.

If you must write monolithic drivers, stay involved with Microsoft. Good communication helps us better understand your issues and prepare for and work with you on potential compatibility issues.

Call to action for writing storage drivers:

Rate: