Article # 57, added by Geoworks, historical record
| first | previous | index | next | last |

Setting up a callback routine for driver routines.




Here is how to set up the callback pointer for a driver routine:

passParams.dx = PtrToSegment( MemLockFixedOrMovable( &CallbackRoutine ) );
passParams.cx = PtrToOffset( &CallbackRoutine );

where CallbackRoutine is a routine that you want called by the given
driver routine. 

Here is an example:

void _pascal CallbackRoutine( void ) {
...
}

void YourInitRoutine( void ) {
    DriverPassParams   passParams;
    DriverReturnParams returnParams;

    passParams.dx = PtrToSegment( MemLockFixedOrMovable( &CallbackRoutine ) );
    passParams.cx = PtrToOffset( &CallbackRoutine );
    DriverCallEntryPoint( driverHandle,
                          DR_SOME_DRIVER_ENTRY_POINT,
                          &passParams, &returnParams );
    if ( CARRY_FLAG & returnParams.flags ) {
        UserStandardSound( SST_ERROR );
    }
}