Реферат: Making Utilities For MSDOS Essay Research Paper
have made me think about the use of DOS internals in the first place and it has
inspired me to write this paper.
Utilities like SteelBox, Stacker, DoubleSpace, new versions of SmartDrive, etc.
need to do the following trick: register with DOS as device drivers, get request
packets from it, handle them in a certain way, and sometimes forward them to the
driver for another DOS logical drive. The first three steps are rather
straightforward and do not involve any “illicit” mingling with MS-DOS internals.
The problems begin in the last step. MS-DOS doesn’t provide any documented
“legal” way to find and to call the driver for a logical drive. However, MS-DOS
does have internal structures, called Disk Parameter Blocks (DPBs) which contain
all information about all logical drives, including the pointers to their
respective drivers. If you think of it, it becomes obvious that MS-DOS must have
some internal structures like DPBs. Otherwise how would it be able to service
the INT 21h API requests? How would it be able to locate the driver for a
logical drive it needs to access?
Many people have found out about DPBs in some way (possibly through disassembly
of DOS code). In the online community there is a very popular place for
information obtained through reverse engineering, called The MS-DOS Interrupt
List, maintained by Ralf Brown. This list is for everyone’s input, and the
people who reverse engineer Microsoft’s operating systems often send their
discoveries to Ralf Brown, who includes them into his list. The DPB format and
the INT 21h call used to get pointers to DPBs are also in Interrupt List. As a
result, many programmers, including me, have used this information in their
utilities without much thinking.
However, this is not a good thing to do. DPBs exist since the first release of
MS-DOS as IBM PC-DOS version 1.00, but the DPB format has changed three times
throughout the history. The first change occured in MS-DOS version 2.00, when
the hard disk support, the installable device drivers and the UNIX-like nested
directories were introduced. The second change occured in MS-DOS version 3.00,