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


  

Copying Data

To allow compatible driver development on the current version of Mac OS, future releases of Mac OS will give drivers that are managed by the Device Manager a restricted set of facilities for mapping address spaces and copying data from one space to another. Device families, such as video displays, will have additional family-specific facilities to address their data transfer needs. Hence, drivers that exchange data with applications via the Device Manager must do so via PBRead and PBWrite calls. Depending on the size of the data buffer, the Device Manager will copy or map the IOParamBlockRec data structure for these calls and will copy or map the associated ioBuffer up to ioReqCount bytes.

PBOpen, PBClose, PBControl, PBStatus, and PBKillIO calls will keep the IOParamBlockRec and CntrlParam data structures accessible; however, no referenced data will be copied or mapped. This means that the csParam fields of the CntrlParam block must not contain buffer pointers to additional data, and the ioBuffer field will be ignored for Device Manager calls (such as PBOpen and PBClose ) for which it is not a documented input parameter. The Device Manager will not copy or map data pointed to by either of these fields.

In the past, applications and device drivers have extended the size of the IOParamBlockRec and CntrlParam structures to tag additional information into a device driver request. This was possible because applications and device drivers shared a single address space. In future releases of Mac OS, the Device Manager will copy only the IOParamBlockRec and CntrlParam structures as defined in Inside Macintosh: Devices.


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