PATH 
ADC Home > Documentation > Hardware > Device Managers and Drivers > PCI Card Services > Designing PCI Cards and Drivers for Power Macintosh Computers


  

Generic and Family Drivers

The Macintosh native driver model defines a new driver packaging format, described in Driver Package later in this chapter. The driver package may contain a generic driver or a driver that is specific to a family of devices. Generic drivers have a family type of 'ndrv' and are controlled by the Device Manager (described in Inside Macintosh: Devices). Family drivers have other type designations and do not act as Device Manager clients. They are not installed in the Device Manager unit table and do not export the generic driver call interface. The generic driver call interface and runtime framework are described in Generic Driver Framework.

Currently most drivers are generic, but this will not be true in future versions of the Mac OS. Some drivers belong to device families with special characteristics that do not fit into the generic driver model; they are drivers controlled by family experts. Examples of this type of driver are FireWire SBP-2 drivers, USB drivers, and networking device drivers for the Open Transport environment. Networking device drivers under Open Transport are STREAMS drivers that provide industry standard STREAMS/DLPI interfaces to Mac OS. Open Transport drivers are discussed in Network Drivers USB drivers are discussed in the documentation included in the Mac OS USB DDK.

Drivers controlled by family experts use family programming interfaces (FPIs), which are defined for each family and are not accessible to Macintosh applications.

All drivers with driver family service interfaces must export well-defined driver family service names for both family expert data and family expert functions. Clients of family drivers load the CFM-based driver and call the exported names. The CFM connects the driver client to the CFM device driver exports. Native device drivers that provide private family interfaces need not provide an additional generic driver interface to Mac OS.

As an example of a family interface, Open Transport requires a family data structure called install_info and a driver family service function whose name is GetOTInstallInfo. The install_info structure is used by Open Transport to create stream to STREAMS device drivers. The Open Transport family expert calls the device driver family expert GetOTInstallInfo function as part of the installation process for native drivers of the 'otan' service category. See Network Drivers for more details on Open Transport driver requirements.

Other family drivers are described in Graphics Drivers and SCSI Drivers.

Note

Device drivers need to provide only one family interface. If a device driver chooses to provide more than one service category programming interface, however, it must conform to the standards of each interface.


© 1999 Apple Computer, Inc. – (Last Updated 26 March 99)