The binary image file of a device driver begins with this structure and this data remains in memory after installation of the driver. DevHdrRec Offset Size Contents ▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +0 4 pfNextDev FAR address of next device in chain. (offset=ffffH if this the last/only driver) +4 2 rDevAttr bit fields that make up the Device Attribute +6 2 pnStrategy offset address of device STRATEGY routine +8 2 pnInterrupt offset address of device INTERRUPT routine +0aH 8 abDevName blank-padded device (or 10-byte block device sub-unit number) 18 size of this structure ───────────────────── Extra fields for CD ROM +12H 2 wRes (reserved) +14H 1 wDrvLtr CD-ROM drive letter; often 53H ('S') +15H 1 wUnits number of CD-ROM units +16H 6 abCdrSig signature "MSCDnn") 28 size of CD-ROM version of device header pfNextDev In the device driver file, this should start out as ffff:ffff. During installation it is updated to fit in with device chain. The last driver in the chain will contain ffffH in the first two bytes of this field. DOS actually inserts drivers into the chain just after the NUL device (which cannot be replaced). The address of the start of the device driver chain may be found via the undocumented DOS fn 52H (get List of Lists). rDevAttr But flags describing the device. See Device Attribute. pnStrategy Near address (in same segment as this structure) of the code to process Device STRATEGY calls. See Device Driver Basics. pnInterrupt Near address of the code to process Device INTERRUPT calls. abDevName Character devices: blank-padded name of the device, for instance, "LPT1 ". Block Devices: First byte is the number of block devices supported by this driver; other bytes are reserved. Notes: Fields starting at offset 12H are present only in CD-ROM device drivers. See Also: Device Drivers Device Attribute Device Requests fn 52H (get DOS vars address) fn 32H (get DPB; obtain addr of a DeviceHdrRec) -♦-