Pointers
SFT field sf_devptr points to the associated Physical Device Driver Header.
┌────────────────┬──────┬──────┬────┬────────────────────────────────────────┐│Field Name │Offset│Length│Type│Description │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevNext │+0 │4 │D │Pointer to next device header │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevAtt │+4 │2 │W │Attributes of the device │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevStrat │+6 │2 │W │Strategy entry point │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevInt │+8 │2 │W │IDC entry point │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevName │+a │8 │A │name (block uses only 1st byte) │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevProtCS │+12 │2 │W │Protect-mode CS of strategy entry pt │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevProtDS │+14 │2 │W │Protect-mode DS │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevRealCS │+16 │2 │W │Real-mode CS of strategy entry pt │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevRealDS │+18 │2 │W │Real-mode DS │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │SDevCaps │+20 │4 │D │bit map of DD /MM restrictions │ └────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
SDevCaps flag definitions
┌────────────────┬────────┬───────────────────────────────────┐ │Name │Bit Mask│Description │ ├────────────────┼────────┼───────────────────────────────────┤ │DEV_IOCTL2 │0x0001 │DD can handle dev ioctl2 │ ├────────────────┼────────┼───────────────────────────────────┤ │DEV_16MB │0x0002 │DD can handle phys.addresses >16MB │ ├────────────────┼────────┼───────────────────────────────────┤ │DEV_PARALLEL │0x0004 │DD handles parallel port │ ├────────────────┼────────┼───────────────────────────────────┤ │DEV_ADAPTER_DD │0x0008 │DD supports Adapter Dev Driver Intf│ ├────────────────┼────────┼───────────────────────────────────┤ │DEV_INITCOMPLETE│0x0010 │DD can handle CMDInitComplete │ └────────────────┴────────┴───────────────────────────────────┘
Device Driver Type defininitions
┌────────────┬────────┬────────────────────────────────────────┐ │Name │Bit Mask│Description │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_CIN │0x0001 │0 2 5 Device is console in │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_COUT │0x0002 │1 2 5 Device is console out │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_NULL │0x0004 │2 2 5 Device is the Null device │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_CLOCK │0x0008 │3 2 5 Device is the clock device │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_SPEC │0x0010 │4 2 Devices can support INT 29h │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_ADD_ON │0x0020 │5 Device is add-on driver (BWS) │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_GIOCTL │0x0040 │6 3 Device supports generic ioctl │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_FCNLEV │0x0380 │9-7 5 Device function level │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_30 │0x0800 │11 2 5 Accepts Open/Close/Removable │ │ │ │Media │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_SHARE │0x1000 │12 Device wants FS sharing checking │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_NON_IBM │0x2000 │13 2 5 Device is a non IBM device. │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_IOCTL │0x4000 │14 2 Device accepts IOCTL request │ ├────────────┼────────┼────────────────────────────────────────┤ │DEV_CHAR_DEV│0x8000 │15 2 5 Device is a character device │ └────────────┴────────┴────────────────────────────────────────┘
Level definitions for devices
┌────────┬────────┬────────────────────────────────────────┐ │Name │Bit Mask│Description │ ├────────┼────────┼────────────────────────────────────────┤ │DEVLEV_0│0x0000 │DOS 3.0 and before │ ├────────┼────────┼────────────────────────────────────────┤ │DEVLEV_1│0x0080 │DOS 5.0 │ ├────────┼────────┼────────────────────────────────────────┤ │DEVLEV_2│0x0100 │OS/2 v1.2 (new gen ioctl iface) │ ├────────┼────────┼────────────────────────────────────────┤ │DEVLEV_3│0x0180 │OS/2 v2.0 (support of memory above 16MB)│ └────────┴────────┴────────────────────────────────────────┘