[comp.sys.ibm.pc] How do you remove a device driver without a warm boot?

roth@macom1.UUCP (dennis paul roth) (07/24/87)

I have an image processing workstation built around a Zenith 248 running
under MS-DOS 3.1. The Device Drivers for the image capture board and
the laser printer are such memory hogs that if they are both installed
at the same time there isn't enough memory left over to run the image
processing software. So two versions of the config.sys file exist, one that
loads the laser printer driver with the DEVICE command, another that doesn't.
Now if I want to capture, process, and print images I've got to boot the
system with the config.sys file without the laser printer device driver 
capture and process the image, save the image, change the config.sys file to the
one with the laser printer driver, reboot, print the image, then change
the config.sys back again and reboot to capture the next image.

There must be an easier way. No?

My question is. Does anyone out there know how to uninstall a device
driver and release the memory it was using without doing a warm boot?
I will be eternally gratefull to anyone who can assist me with this problem.
-- 
Dennis Roth @ CENTEL Information Systems, Inc. 5515 Security Lane, Rockville, 
Maryland, 20852, (301) 984-3636          uucp: {decuac, grebyn}!macom1!roth 
internet: macom1!roth@{ decuac.DEC.COM, seismo.CSS.GOV }
backdoor: grebyn!macom1!roth@umd5.umd.edu

gwr@linus.UUCP (Gordon W. Ross) (07/24/87)

In article <238@macom1.UUCP> roth@macom1.UUCP (dennis paul roth) writes:
>
>I have an image processing workstation built around a Zenith 248 running
>under MS-DOS 3.1. The Device Drivers for the image capture board and
>the laser printer are such memory hogs that if they are both installed
>at the same time there isn't enough memory left over to run the image
>processing software. So two versions of the config.sys file exist, one that
>loads the laser printer driver with the DEVICE command, another that doesn't.

We have a similar situation here, using two config.sys versions.

>Now if I want to capture, process, and print images I've got to boot the
>system with the config.sys file without the laser printer device driver 
>capture and process the image, save the image, change the config.sys file
>to the one with the laser printer driver, reboot, print the image, then
>change the config.sys back again and reboot to capture the next image.
>
>There must be an easier way. No?

No.  Unfortunately, the DOS memory management system does not allow
for removal of device drivers once they are installed.  It is however
possible write a device driver which prompts the user during boot load
and allows the user to select whether the device driver should install
itself normally, or pass a zero length back to DOS causing its
installation to be skipped.  This is in the DOS Tech. Ref. manual.

>My question is. Does anyone out there know how to uninstall a device
>driver and release the memory it was using without doing a warm boot?
>I will be eternally gratefull to anyone who can assist me with this problem.

A device driver which asks whether it should install could save you
the trouble of boot loading twice if the the wrong copy of config.sys
is in use, but beyond that you're pretty much stuck.

There is probably much more in your device drivers than really needs
to be there.  A better design (at least from the memory usage
standpoint) is to put only low-level device interface code in the
device driver, and separate other functions into normal executable
files.  Some software vendors provide TSR (Terminate and Stay
Resident) versions of their "drivers" which can remove themselves if
they were the last installed.  If you're lucky you might convice the
people that wrote your software to provide such a version.  (Good Luck!)

It's too bad there's so much code that's not really device interface
dumped into DOS device drivers.  It is only slightly more complicated
to put that code in regular executable files, and provide the user
with batch files to set up the DOS piping if necessary.

>-- 
>Dennis Roth @ CENTEL Information Systems, Inc. 5515 Security Lane, Rockville, 
>Maryland, 20852, (301) 984-3636          uucp: {decuac, grebyn}!macom1!roth 
>internet: macom1!roth@{ decuac.DEC.COM, seismo.CSS.GOV }
>backdoor: grebyn!macom1!roth@umd5.umd.edu

-- 
    Gordon W. Ross              Phone: (617) 271-3205
    The MITRE Corporation       ARPA: linus!gwr@MITRE-BEDFORD
    Bedford, MA  01730		UUCP: decvax!linus!gwr

martyl@rocksvax.UUCP (Marty Leisner) (07/25/87)

In article <238@macom1.UUCP> roth@macom1.UUCP (dennis paul roth) writes:
>
>My question is. Does anyone out there know how to uninstall a device
>driver and release the memory it was using without doing a warm boot?
>I will be eternally gratefull to anyone who can assist me with this problem.
>-- 
Good question.

I'm not sure its worth the trouble -- agood way to do device driver work is
to use two machine -- ones for development and one for test.  On PCs running
without any protection, I have qualms about working on a machine where the
device drivers are changing without any hardware protection.

A few things to think about:
1) I don't think the memory could be released.  But if the new image fits
inside the old image, you could overwrite the image and rebuild the 
pointers and whatever else DOS did.
2) You could debug you device driver as an application program.  Then when
you're about done, you can install it.

Hope this helps.

marty leisner
xerox corp
leisner.henr@xerox.com
martyl@rocksvax.uucp