static void __DAMountWithArgumentsCallback( int status, void * parameter ) { /* * Process the mount request completion. */ __DAMountCallbackContext * context = parameter; ///w:start if ( context->automatic ) { if ( status == ___EDIRTY ) { DAMountWithArguments( context->disk, NULL, context->callback, context->callbackContext, kDAFileSystemMountArgumentForce, kDAFileSystemMountArgumentNoWrite, NULL ); context->callback = NULL; } } ///w:stop if ( context->callback ) { ( context->callback )( status, context->mountpoint, context->callbackContext ); } CFRelease( context->disk ); CFRelease( context->options ); if ( context->mountpoint ) CFRelease( context->mountpoint ); free( context ); }
void DAMount( DADiskRef disk, CFURLRef mountpoint, DAMountCallback callback, void * callbackContext ) { /* * Mount the specified volume. A status of 0 indicates success. */ return DAMountWithArguments( disk, mountpoint, callback, callbackContext, NULL ); }
static void __DAStageMount( DADiskRef disk ) { /* * We commence the "mount" stage if the conditions are right. */ if ( DAUnitGetState( disk, kDAUnitStateCommandActive ) == FALSE ) { /* * Commence the mount. */ CFRetain( disk ); DADiskSetState( disk, kDADiskStateStagedMount, TRUE ); DADiskSetState( disk, kDADiskStateCommandActive, TRUE ); DAUnitSetState( disk, kDAUnitStateCommandActive, TRUE ); DAMountWithArguments( disk, NULL, __DAStageMountCallback, disk, CFSTR( "automatic" ), NULL ); } }