/* * Device driver header */ #ifdef __cplusplus extern "C" { #endif #if __WATCOMC__ >= 1000 #pragma pack(push,1); #else #pragma pack(1); #endif /* * Look at \WATCOM\H\OS2\DEVHDR.INC for a description * of the Device Driver Header */ typedef struct DEVHEADER DEVHEADER; typedef struct DEVHEADER { DEVHEADER FAR *next; // next driver in chain USHORT DAWFlags; // device attribute word NPVOID StrategyEntry; // offset to strategy routine NPVOID IDCEntry; // offset to IDC routine CHAR Name[8]; // driver name CHAR Reserved[8]; // Reserved ULONG Capabilities; // Capabilities bit strip }; /* * Marks end of DEVHEADER chain */ #define FENCE ((DEVHEADER FAR*)0xFFFFFFFFul) /* * Constants for device attribute word */ typedef enum{ DAW_CHARACTER = 0x8000, // Character device DAW_IDC = 0x4000, // IDC aware device DAW_NONIBM = 0x2000, // Non-IBM Block device DAW_SHARE = 0x1000, // Sharable device DAW_OPENCLOSE = 0x0800, // Requires open and close requests DAW_LEVEL3 = 0x0180, // Level 3 device DAW_LEVEL2 = 0x0100, // Level 2 device DAW_LEVEL1 = 0x0080, // Level 1 device DAW_CLOCK = 0x0008, // Clock device DAW_NUL = 0x0004, // Nul device DAW_STDOUT = 0x0002, // Standard output device DAW_STDIN = 0x0001, // Standard input device } DAW_flags; /* * Constants for capabilities bit strip (used by level 3 devices) */ typedef enum { CAP_COMPLETE = 0x00000010, // Supports Init Complete request CAP_ADD = 0x00000008, // Participates in ADD strategy CAP_PARALLEL = 0x00000004, // Supports parallel ports CAP_32BIT = 0x00000002, // Supports addressing above 16MB CAP_SHUTDOWN = 0x00000001, // Supports IOCtl2 and shutdown CAP_NULL = 0x00000000, // } CAP_flags; #if __WATCOMC__ >= 1000 #pragma pack(pop); #else #pragma pack(); #endif #ifdef __cplusplus }; #endif