The rDevAttr field of the DevHdrRec indicates properties of a device.  DOS
fn 32H returns a structure that contains a pointer to the DevHdrRec for a
specified block device driver.  And fn 52H obtain info that can let you
get attributes of character devices.

Bit-meanings vary depending on the driver type, so two layouts are given:

DevAttrChar     layout for character devices
1 1 1 1 1 1
 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 
 1     0   0 0 0 q g 0 s c n o i 
                                  bit  mask
                                  0: 0001H standard input device
                                  1: 0002H standard output device
                                  2: 0004H standard NUL device
                                  3: 0008H clock device
                                  4: 0010H special; fast output   INT 29H
                                  6: 0040H supports Generic IOCTL DvRq 13H
                                  7: 0080H supports Query IOCTL   DvRq 19H
                                 11: 0800H supports device open,  DvRq 0dH
                                           and device close       DvRq 0eH
                                 13: 2000H sprts output till busy DvRq 10H
                                 14: 4000H supports IOCTL Read    DvRq 03H
                                           and IOCTL Write        DvRq 0cH
                                 15: 8000H 1=character device

DevAttrBlock     layout for block devices
1 1 1 1 1 1
 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 
 0     0   0 0 0 q g 0 0 0 0 b 0 
                                  bit  mask
                                  1: 0002H supports >32M partitions
                                  6: 0040H supports Generic IOCTL DvRq 13H
                                           and Get Logical Device DvRq 17H
                                           and Set Logical Device DvRq 18H
                                  7: 0080H supports Query IOCTL   DvRq 19H
                                 11: 0800H supports device open   DvRq 0dH
                                           and device close       DvRq 0eH
                                           and Removable Media    DvRq 0fH
                                 13: 2000H 0=Needs FAT with BPB   DvRq 02H
                                 14: 4000H supports IOCTL Read    DvRq 03H
                                           and IOCTL Write        DvRq 0cH
                                 15: 8000H 0=block device

bit 15 This bit affects Device Input and Output requests and determines
the meaning of the abDevName field of the DevHdrRec.  If this bit
is 0, the device is a block device (usually a disk drive).

                                                Character Devices
bit 0 and...
bit 1 Set the standard I/O bits when you replace the CON driver.

bit 2 The standard NUL device cannot be reassigned.

bit 3 The clock device indicates replacement for the CLOCK$ device
driver.  CLOCK$ is a character device which handles device
requests to input and output exactly 6 bytes.  An input request
(DvRq 04H) should return 6 bytes indicating the current time/date
and an output request (DvRq 08H) should accept 6 bytes to set the
clock/calendar.  See ClockIORec for the layout.

bit 4 This is set if this is the CON device and it supports the INT 29H
"fast-output" function.

bits 7 11, and 14 indicates support for device utilities which use
fn 440cH and other fn 44H services.

                                                    Block Devices
bit 1 Indicates support for accessing the large disk partitions (4.0+).
On DvRq 04H and DvRq 08H, the wSectorNo field in the request
packet will be set to ffffH and the actual address will be a 32-
bit value in the lBigSectorNo field.  See INT 25H/26H for related
information.

bit 11 (DOS 3.0+) indicates support for Removable Media-related device
requests (DvRq 0dH and DvRq 0fH) so a block device driver can
optimize with local buffering.  When set, the driver must also
take special action on DvRq 02H.

bit 13 (once called the "non-IBM device" bit)
0: DvRq 02H (Build BPB) will receive a buffer containing the
first sector of the first FAT.  You can determine the media type
from the first byte of the FAT.
1: The buffer given in DvRq 02H is not important.

See Also: Device Drivers
- -

Device Attribute