public void Start(VFSProvider data, MountOptions opts) { this.data = data; base.MountPoint = opts.MountPoint; logger.Debug ("Unmounting previous..."); Process p = new Process { StartInfo = new ProcessStartInfo { FileName = "fusermount", Arguments = "-u " + base.MountPoint } }; p.Start (); p.WaitForExit (); logger.Debug ("Done. Mounting..."); base.Start (); }
public void Start(VFSProvider data, MountOptions opts) { this.data = data; DokanOptions dokanOpts = new DokanOptions () { DebugMode = true, UseStdErr = true, MountPoint = opts.MountPoint, VolumeLabel = opts.VolumeLabel, FileSystemName = opts.FileSystemName }; int status = DokanNet.DokanMain (dokanOpts, this); switch (status) { case DokanNet.DOKAN_SUCCESS: logger.Debug ("Clean shutdown"); break; case DokanNet.DOKAN_DRIVE_LETTER_ERROR: logger.Fatal ("Drive letter error"); break; case DokanNet.DOKAN_DRIVER_INSTALL_ERROR: logger.Fatal ("Driver install error"); break; case DokanNet.DOKAN_MOUNT_ERROR: logger.Fatal ("Mount error"); break; case DokanNet.DOKAN_START_ERROR: logger.Fatal ("Start error"); break; case DokanNet.DOKAN_ERROR: logger.Fatal ("Unknown error"); break; default: logger.Fatal ("Unknown status: %d", status); break; } }