home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / dosdevio.def < prev    next >
Text File  |  1994-05-03  |  43KB  |  1,009 lines

  1. DEFINITION MODULE DOSDEVIOCTL;
  2.  
  3. (************************************************************************
  4.   OS/2 2.1 Structures and constants for use with DosDevIOCtl.
  5.  
  6.   Copyright (c) 1992,1994 by Juergen Neuhoff
  7. *************************************************************************)
  8.  
  9. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  10. (*$CDECL+    C-style procedures                                         *)
  11. (*$A         default alignment for record fields                        *)
  12.  
  13. FROM   OS2DEF  IMPORT TYPEPREFIX, PFN, PCH, PVOID;
  14.  
  15. CONST (* Input and Output Control Categories *)
  16.   IOCTL_ASYNC                    = 0001H;
  17.   IOCTL_SCR_AND_PTRDRAW          = 0003H;
  18.   IOCTL_KEYBOARD                 = 0004H;
  19.   IOCTL_PRINTER                  = 0005H;
  20.   IOCTL_LIGHTPEN                 = 0006H;
  21.   IOCTL_POINTINGDEVICE           = 0007H;
  22.   IOCTL_DISK                     = 0008H;
  23.   IOCTL_PHYSICALDISK             = 0009H;
  24.   IOCTL_MONITOR                  = 000AH;
  25.   IOCTL_GENERAL                  = 000BH;
  26.   IOCTL_POWERMANAGEMENT          = 000CH;   (* new OS/2 2.1 Category *)
  27.   IOCTL_CDROM_DRIVE_AND_DISK     = 0080H;   (* new OS/2 2.1 Category *)
  28.   IOCTL_CDROM_AUDIO              = 0081H;   (* new OS/2 2.1 Category *)
  29.   IOCTL_CDROM_CHARDEVICE         = 0082H;   (* new OS/2 2.1 Category *)
  30.  
  31. CONST (* Serial-Device Control *)
  32.   ASYNC_SETBAUDRATE              = 0041H;
  33.   ASYNC_SETLINECTRL              = 0042H;
  34.   ASYNC_TRANSMITIMM              = 0044H;
  35.   ASYNC_SETBREAKOFF              = 0045H;
  36.   ASYNC_SETMODEMCTRL             = 0046H;
  37.   ASYNC_SETBREAKON               = 004BH;
  38.   ASYNC_STOPTRANSMIT             = 0047H;
  39.   ASYNC_STARTTRANSMIT            = 0048H;
  40.   ASYNC_SETDCBINFO               = 0053H;
  41.   ASYNC_GETBAUDRATE              = 0061H;
  42.   ASYNC_GETLINECTRL              = 0062H;
  43.   ASYNC_GETCOMMSTATUS            = 0064H;
  44.   ASYNC_GETLINESTATUS            = 0065H;
  45.   ASYNC_GETMODEMOUTPUT           = 0066H;
  46.   ASYNC_GETMODEMINPUT            = 0067H;
  47.   ASYNC_GETINQUECOUNT            = 0068H;
  48.   ASYNC_GETOUTQUECOUNT           = 0069H;
  49.   ASYNC_GETCOMMERROR             = 006DH;
  50.   ASYNC_GETCOMMEVENT             = 0072H;
  51.   ASYNC_GETDCBINFO               = 0073H;
  52.  
  53. CONST (* Screen/Pointer-Draw Control *)
  54.   SCR_ALLOCLDT                   = 0070H;
  55.   SCR_DEALLOCLDT                 = 0071H;
  56.   PTR_GETPTRDRAWADDRESS          = 0072H;
  57.   SCR_ALLOCLDTOFF                = 0075H;
  58.  
  59. CONST (* Keyboard Control *)
  60.   KBD_SETTRANSTABLE              = 0050H;
  61.   KBD_SETINPUTMODE               = 0051H;
  62.   KBD_SETINTERIMFLAG             = 0052H;
  63.   KBD_SETSHIFTSTATE              = 0053H;
  64.   KBD_SETTYPAMATICRATE           = 0054H;
  65.   KBD_SETFGNDSCREENGRP           = 0055H;
  66.   KBD_SETSESMGRHOTKEY            = 0056H;
  67.   KBD_SETFOCUS                   = 0057H;
  68.   KBD_SETKCB                     = 0058H;
  69.   KBD_SETNLS                     = 005CH;
  70.   KBD_CREATE                     = 005DH;
  71.   KBD_DESTROY                    = 005EH;
  72.   KBD_GETINPUTMODE               = 0071H;
  73.   KBD_GETINTERIMFLAG             = 0072H;
  74.   KBD_GETSHIFTSTATE              = 0073H;
  75.   KBD_READCHAR                   = 0074H;
  76.   KBD_PEEKCHAR                   = 0075H;
  77.   KBD_GETSESMGRHOTKEY            = 0076H;
  78.   KBD_GETKEYBDTYPE               = 0077H;
  79.   KBD_GETCODEPAGEID              = 0078H;
  80.   KBD_XLATESCAN                  = 0079H;
  81.  
  82. CONST (* Printer Control *)
  83.   PRT_QUERYJOBHANDLE             = 0021H;
  84.   PRT_SETFRAMECTL                = 0042H;
  85.   PRT_SETINFINITERETRY           = 0044H;
  86.   PRT_INITPRINTER                = 0046H;
  87.   PRT_ACTIVATEFONT               = 0048H;
  88.   PRT_GETFRAMECTL                = 0062H;
  89.   PRT_GETINFINITERETRY           = 0064H;
  90.   PRT_GETPRINTERSTATUS           = 0066H;
  91.   PRT_QUERYACTIVEFONT            = 0069H;
  92.   PRT_VERIFYFONT                 = 006AH;
  93.  
  94. CONST (* Pointing-Device (Mouse) Control *)
  95.   MOU_ALLOWPTRDRAW               = 0050H;
  96.   MOU_UPDATEDISPLAYMODE          = 0051H;
  97.   MOU_SCREENSWITCH               = 0052H;
  98.   MOU_SETSCALEFACTORS            = 0053H;
  99.   MOU_SETEVENTMASK               = 0054H;
  100.   MOU_SETHOTKEYBUTTON            = 0055H;
  101.   MOU_SETPTRSHAPE                = 0056H;
  102.   MOU_DRAWPTR                    = 0057H;
  103.   MOU_REMOVEPTR                  = 0058H;
  104.   MOU_SETPTRPOS                  = 0059H;
  105.   MOU_SETPROTDRAWADDRESS         = 005AH;
  106.   MOU_SETREALDRAWADDRESS         = 005BH;
  107.   MOU_SETMOUSTATUS               = 005CH;
  108.   MOU_DISPLAYMODECHANGE          = 005DH;
  109.   MOU_GETBUTTONCOUNT             = 0060H;
  110.   MOU_GETMICKEYCOUNT             = 0061H;
  111.   MOU_GETMOUSTATUS               = 0062H;
  112.   MOU_READEVENTQUE               = 0063H;
  113.   MOU_GETQUESTATUS               = 0064H;
  114.   MOU_GETEVENTMASK               = 0065H;
  115.   MOU_GETSCALEFACTORS            = 0066H;
  116.   MOU_GETPTRPOS                  = 0067H;
  117.   MOU_GETPTRSHAPE                = 0068H;
  118.   MOU_GETHOTKEYBUTTON            = 0069H;
  119.   MOU_VER                        = 006AH;
  120.  
  121. CONST (* Disk/Diskette Control *)
  122.   DSK_LOCKDRIVE                  = 0000H;
  123.   DSK_UNLOCKDRIVE                = 0001H;
  124.   DSK_REDETERMINEMEDIA           = 0002H;
  125.   DSK_SETLOGICALMAP              = 0003H;
  126.   DSK_BEGINFORMAT                = 0004H;
  127.   DSK_BLOCKREMOVABLE             = 0020H;
  128.   DSK_GETLOGICALMAP              = 0021H;
  129.   DSK_UNLOCKLOCKEJECT            = 0040H;  (* new OS/2 2.1 Lockable Drive *)
  130.   DSK_SETDEVICEPARAMS            = 0043H;
  131.   DSK_WRITETRACK                 = 0044H;
  132.   DSK_FORMATVERIFY               = 0045H;
  133.   DSK_DISKETTECONTROL            = 005DH;  (* new OS/2 2.1 Lockable Drive *)
  134.   DSK_QUERYMEDIASENSE            = 0060H;
  135.   DSK_GETDEVICEPARAMS            = 0063H;
  136.   DSK_READTRACK                  = 0064H;
  137.   DSK_VERIFYTRACK                = 0065H;
  138.   DSK_QUERYLOCKSTATUS            = 0066H;  (* new OS/2 2.1 Lockable Drive *)
  139.  
  140. CONST (* Physical-Disk Control *)
  141.   PDSK_LOCKPHYSDRIVE             = 0000H;
  142.   PDSK_UNLOCKPHYSDRIVE           = 0001H;
  143.   PDSK_WRITEPHYSTRACK            = 0044H;
  144.   PDSK_GETPHYSDEVICEPARAMS       = 0063H;
  145.   PDSK_READPHYSTRACK             = 0064H;
  146.   PDSK_VERIFYPHYSTRACK           = 0065H;
  147.  
  148. CONST (* Character-Monitor Control *)
  149.   MON_REGISTERMONITOR            = 0040H;
  150.  
  151. CONST (* General Device Control *)
  152.   DEV_FLUSHINPUT                 = 0001H;
  153.   DEV_FLUSHOUTPUT                = 0002H;
  154.   DEV_QUERYMONSUPPORT            = 0060H;
  155.  
  156.  
  157. CONST (* ASYNC_GETCOMMERROR, ASYNC_SETBREAKOFF, ASYNC_SETBREAKON, *)
  158.       (* ASYNC_SETMODEMCTRL                                       *)
  159.   RX_QUE_OVERRUN                 = 0001H;
  160.   RX_HARDWARE_OVERRUN            = 0002H;
  161.   PARITY_ERROR                   = 0004H;
  162.   FRAMING_ERROR                  = 0008H;
  163.  
  164. CONST (* ASYNC_GETCOMMEVENT *)
  165.   CHAR_RECEIVED                  = 0001H;
  166.   LAST_CHAR_SENT                 = 0004H;
  167.   CTS_CHANGED                    = 0008H;
  168.   DSR_CHANGED                    = 0010H;
  169.   DCD_CHANGED                    = 0020H;
  170.   BREAK_DETECTED                 = 0040H;
  171.   ERROR_OCCURRED                 = 0080H;
  172.   RI_DETECTED                    = 0100H;
  173.  
  174. CONST (* ASYNC_GETCOMMSTATUS *)
  175.   TX_WAITING_FOR_CTS             = 0001H;
  176.   TX_WAITING_FOR_DSR             = 0002H;
  177.   TX_WAITING_FOR_DCD             = 0004H;
  178.   TX_WAITING_FOR_XON             = 0008H;
  179.   TX_WAITING_TO_SEND_XON         = 0010H;
  180.   TX_WAITING_WHILE_BREAK_ON      = 0020H;
  181.   TX_WAITING_TO_SEND_IMM         = 0040H;
  182.   RX_WAITING_FOR_DSR             = 0080H;
  183.  
  184. CONST (* ASYNC_GETLINESTATUS *)
  185.   WRITE_REQUEST_QUEUED           = 0001H;
  186.   DATA_IN_TX_QUE                 = 0002H;
  187.   HARDWARE_TRANSMITTING          = 0004H;
  188.   CHAR_READY_TO_SEND_IMM         = 0008H;
  189.   WAITING_TO_SEND_XON            = 0010H;
  190.   WAITING_TO_SEND_XOFF           = 0020H;
  191.  
  192. CONST (* ASYNC_GETMODEMINPUT *)
  193.   CTS_ON                         = 10H;
  194.   DSR_ON                         = 20H;
  195.   RI_ON                          = 40H;
  196.   DCD_ON                         = 80H;
  197.  
  198. CONST (* DSK_SETDEVICEPARAMS *)
  199.   BUILD_BPB_FROM_MEDIUM          = 00H;
  200.   REPLACE_BPB_FOR_DEVICE         = 01H;
  201.   REPLACE_BPB_FOR_MEDIUM         = 02H;
  202.  
  203. CONST (* KBD_GETINPUTMODE, KBD_PEEKCHAR, KBD_SETINPUTMODE*)
  204.   ASCII_MODE                     = 00H;
  205.   BINARY_MODE                    = 80H;
  206.  
  207. CONST (* KBD_GETINTERIMFLAG *)
  208.   CONVERSION_REQUEST             = 20H;
  209.   INTERIM_CHAR                   = 80H;
  210.  
  211. CONST (* KBD_GETSESMGRHOTKEY *)
  212.   HOTKEY_MAX_COUNT               = 0000H;
  213.   HOTKEY_CURRENT_COUNT           = 0001H;
  214.  
  215. CONST (* KBD_PEEKCHAR *)
  216.   KBD_DATA_RECEIVED              = 0001H;
  217.   KBD_DATA_BINARY                = 8000H;
  218.  
  219. CONST (* KBD_READCHAR *)
  220.   KBD_READ_WAIT                  = 0000H;
  221.   KBD_READ_NOWAIT                = 8000H;
  222.  
  223. CONST (* KBD_SETINPUTMODE *)
  224.   SHIFT_REPORT_MODE              = 01H;
  225.  
  226. CONST
  227.   MOUSE_MOTION                   = 0001H;
  228.   MOUSE_MOTION_WITH_BN1_DOWN     = 0002H;
  229.   MOUSE_BN1_DOWN                 = 0004H;
  230.   MOUSE_MOTION_WITH_BN2_DOWN     = 0008H;
  231.   MOUSE_BN2_DOWN                 = 0010H;
  232.   MOUSE_MOTION_WITH_BN3_DOWN     = 0020H;
  233.   MOUSE_BN3_DOWN                 = 0040H;
  234.  
  235. CONST
  236.   MHK_BUTTON1                    = 0001H;
  237.   MHK_BUTTON2                    = 0002H;
  238.   MHK_BUTTON3                    = 0004H;
  239.  
  240. CONST
  241.   MOU_NOWAIT                     = 0000H;
  242.   MOU_WAIT                       = 0001H;
  243.  
  244. CONST (* MOU_GETHOTKEYBUTTON, MOU_SETHOTKEYBUTTON *)
  245.   MHK_NO_HOTKEY                  = 0000H;
  246.  
  247. CONST (* MOU_GETMOUSTATUS *)
  248.   MOUSE_QUEUEBUSY                = 0001H;
  249.   MOUSE_BLOCKREAD                = 0002H;
  250.   MOUSE_FLUSH                    = 0004H;
  251.   MOUSE_UNSUPPORTED_MODE         = 0008H;
  252.   MOUSE_DISABLED                 = 0100H;
  253.   MOUSE_MICKEYS                  = 0200H;
  254.  
  255. CONST (* PRT_GETPRINTERSTATUS *)
  256.   PRINTER_TIMEOUT                = 0001H;
  257.   PRINTER_IO_ERROR               = 0008H;
  258.   PRINTER_SELECTED               = 0010H;
  259.   PRINTER_OUT_OF_PAPER           = 0020H;
  260.   PRINTER_ACKNOWLEDGED           = 0040H;
  261.   PRINTER_NOT_BUSY               = 0080H;
  262.  
  263. CONST (* fbCtlHndShake *)
  264.   MODE_DTR_CONTROL               = 01H;
  265.   MODE_DTR_HANDSHAKE             = 02H;
  266.   MODE_CTS_HANDSHAKE             = 08H;
  267.   MODE_DSR_HANDSHAKE             = 10H;
  268.   MODE_DCD_HANDSHAKE             = 20H;
  269.   MODE_DSR_SENSITIVITY           = 40H;
  270.  
  271. CONST (* fbFlowReplace *)
  272.   MODE_AUTO_TRANSMIT             = 01H;
  273.   MODE_AUTO_RECEIVE              = 02H;
  274.   MODE_ERROR_CHAR                = 04H;
  275.   MODE_NULL_STRIPPING            = 08H;
  276.   MODE_BREAK_CHAR                = 10H;
  277.   MODE_RTS_CONTROL               = 40H;
  278.   MODE_RTS_HANDSHAKE             = 80H;
  279.   MODE_TRANSMIT_TOGGLE           = 0C0H;
  280.  
  281. CONST (* fbTimeout *)
  282.   MODE_NO_WRITE_TIMEOUT          = 01H;
  283.   MODE_READ_TIMEOUT              = 02H;
  284.   MODE_WAIT_READ_TIMEOUT         = 04H;
  285.   MODE_NOWAIT_READ_TIMEOUT       = 06H;
  286.  
  287. TYPE
  288.   DCBINFO                        = RECORD (* dcbinf *)
  289.     CASE                           : TYPEPREFIX OF
  290.     | TRUE                         :
  291.       usWriteTimeout               : CARDINAL;
  292.       usReadTimeout                : CARDINAL;
  293.       fbCtlHndShake                : SHORTCARD;
  294.       fbFlowReplace                : SHORTCARD;
  295.       fbTimeout                    : SHORTCARD;
  296.       bErrorReplacementChar        : SHORTCARD;
  297.       bBreakReplacementChar        : SHORTCARD;
  298.       bXONChar                     : SHORTCARD;
  299.       bXOFFChar                    : SHORTCARD;
  300.     | FALSE                        :
  301.       WriteTimeout                 : CARDINAL;
  302.       ReadTimeout                  : CARDINAL;
  303.       CtlHndShake                  : SHORTCARD;
  304.       FlowReplace                  : SHORTCARD;
  305.       Timeout                      : SHORTCARD;
  306.       ErrorReplacementChar         : SHORTCARD;
  307.       BreakReplacementChar         : SHORTCARD;
  308.       XONChar                      : SHORTCARD;
  309.       XOFFChar                     : SHORTCARD;
  310.     END                            END;
  311.   PDCBINFO                       = POINTER TO DCBINFO;
  312.  
  313. TYPE
  314.   (*$A1 Byte alignment for record fields *)
  315.   TRACKLAYOUT                    = RECORD (* trckl *)
  316.     CASE                           : TYPEPREFIX OF
  317.     | TRUE                         :
  318.       bCommand                     : SHORTCARD;
  319.       usHead                       : CARDINAL;
  320.       usCylinder                   : CARDINAL;
  321.       usFirstSector                : CARDINAL;
  322.       cSectors                     : CARDINAL;
  323.       TrackTable                   : ARRAY [0..0] OF RECORD
  324.         usSectorNumber               : CARDINAL;
  325.         usSectorSize                 : CARDINAL;
  326.                                      END;
  327.     | FALSE                        :
  328.       Command                      : SHORTCARD;
  329.       Head                         : CARDINAL;
  330.       Cylinder                     : CARDINAL;
  331.       FirstSector                  : CARDINAL;
  332.       Sectors                      : CARDINAL;
  333.       TrackTableArray              : ARRAY [0..0] OF RECORD
  334.         SectorNumber                 : CARDINAL;
  335.         SectorSize                   : CARDINAL;
  336.                                      END;
  337.     END;                           END;
  338.   PTRACKLAYOUT                   = POINTER TO TRACKLAYOUT;
  339.   (*$A Default alignment for record fields *)
  340.  
  341. CONST
  342.   DEVTYPE_48TPI                   = 0000H;
  343.   DEVTYPE_96TPI                   = 0001H;
  344.   DEVTYPE_35                      = 0002H;
  345.   DEVTYPE_8SD                     = 0003H;
  346.   DEVTYPE_8DD                     = 0004H;
  347.   DEVTYPE_FIXED                   = 0005H;
  348.   DEVTYPE_TAPE                    = 0006H;
  349.   DEVTYPE_UNKNOWN                 = 0007H;
  350.  
  351.  
  352. TYPE (*$A1 Byte alignment for record fields *)
  353.   BIOSPARAMETERBLOCK              = RECORD (* bspblk *)
  354.     CASE                            : TYPEPREFIX OF
  355.     | TRUE                          :
  356.       usBytesPerSector              : CARDINAL;
  357.       bSectorsPerCluster            : SHORTCARD;
  358.       usReservedSectors             : CARDINAL;
  359.       cFATs                         : SHORTCARD;
  360.       cRootEntries                  : CARDINAL;
  361.       cSectors                      : CARDINAL;
  362.       bMedia                        : SHORTCARD;
  363.       usSectorsPerFAT               : CARDINAL;
  364.       usSectorsPerTrack             : CARDINAL;
  365.       cHeads                        : CARDINAL;
  366.       cHiddenSectors                : LONGCARD;
  367.       cLargeSectors                 : LONGCARD;
  368.       abReserved                    : ARRAY [0..5] OF SHORTCARD;
  369.       cCylinders                    : CARDINAL;
  370.       bDeviceType                   : SHORTCARD;
  371.       fsDeviceAttr                  : CARDINAL;
  372.     | FALSE                         :
  373.       BytesPerSector                : CARDINAL;
  374.       SectorsPerCluster             : SHORTCARD;
  375.       ReservedSectors               : CARDINAL;
  376.       FATs                          : SHORTCARD;
  377.       RootEntries                   : CARDINAL;
  378.       Sectors                       : CARDINAL;
  379.       Media                         : SHORTCARD;
  380.       SectorsPerFAT                 : CARDINAL;
  381.       SectorsPerTrack               : CARDINAL;
  382.       Heads                         : CARDINAL;
  383.       HiddenSectors                 : LONGCARD;
  384.       LargeSectors                  : LONGCARD;
  385.       Reserved                      : ARRAY [0..5] OF SHORTCARD;
  386.       Cylinders                     : CARDINAL;
  387.       DeviceType                    : SHORTCARD;
  388.       DeviceAttr                    : CARDINAL;
  389.     END;                            END;
  390.   PBIOSPARAMETERBLOCK             = POINTER TO BIOSPARAMETERBLOCK;
  391.  
  392. TYPE
  393.   SCREENGROUP                     = RECORD (* scrgrp *)
  394.     CASE                            : TYPEPREFIX OF
  395.     | TRUE                          :
  396.       idScreenGrp                   : CARDINAL;
  397.       fTerminate                    : CARDINAL;
  398.     | FALSE                         :
  399.       ScreenGrpId                   : CARDINAL;
  400.       TerminateFlag                 : CARDINAL;
  401.     END;                            END;
  402.   PSCREENGROUP                    = POINTER TO SCREENGROUP;
  403.  
  404. TYPE
  405.   FRAME                           = RECORD (* frm *)
  406.     CASE                            : TYPEPREFIX OF
  407.     | TRUE                          :
  408.       bCharsPerLine                 : SHORTCARD;
  409.       bLinesPerInch                 : SHORTCARD;
  410.     | FALSE                         :
  411.       CharsPerLine                  : SHORTCARD;
  412.       LinesPerInch                  : SHORTCARD;
  413.     END;                            END;
  414.   PFRAME                          = POINTER TO FRAME;
  415.  
  416. TYPE
  417.   KBDTYPE                         = RECORD (* kbdtyp *)
  418.     CASE                            : TYPEPREFIX OF
  419.     | TRUE                          :
  420.       usType                        : CARDINAL;
  421.       reserved1                     : CARDINAL;
  422.       reserved2                     : CARDINAL;
  423.     | FALSE                         :
  424.       Type                          : CARDINAL;
  425.       Reserved1                     : CARDINAL;
  426.       Reserved2                     : CARDINAL;
  427.     END;                            END;
  428.   PKBDTYPE                        = POINTER TO KBDTYPE;
  429.  
  430. TYPE
  431.   LINECONTROL                     = RECORD (* lnctl *)
  432.     CASE                            : TYPEPREFIX OF
  433.     | TRUE                          :
  434.       bDataBits                     : SHORTCARD;
  435.       bParity                       : SHORTCARD;
  436.       bStopBits                     : SHORTCARD;
  437.       fTransBreak                   : SHORTCARD;
  438.     | FALSE                         :
  439.       DataBits                      : SHORTCARD;
  440.       Parity                        : SHORTCARD;
  441.       StopBits                      : SHORTCARD;
  442.       TransBreakFlag                : SHORTCARD;
  443.     END;                            END;
  444.   PLINECONTROL                    = POINTER TO LINECONTROL;
  445.  
  446. CONST (* MODEMSTATUS.fbModemOn, ASYNC_GETMODEMOUTPUT *)
  447.   DTR_ON                          = 01H;
  448.   RTS_ON                          = 02H;
  449.  
  450. CONST (* MODEMSTATUS.fbModemOff *)
  451.   DTR_OFF                         = 0FEH;
  452.   RTS_OFF                         = 0FDH;
  453.  
  454. TYPE
  455.   MODEMSTATUS                     = RECORD (* mdmst *)
  456.     CASE                            : TYPEPREFIX OF
  457.     | TRUE                          :
  458.       fbModemOn                     : SHORTCARD;
  459.       fbModemOff                    : SHORTCARD;
  460.     | FALSE                         :
  461.       ModemOnFlag                   : SHORTCARD;
  462.       ModemOffFlag                  : SHORTCARD;
  463.     END;                            END;
  464.   PMODEMSTATUS                    = POINTER TO MODEMSTATUS;
  465.  
  466. TYPE (*$A1 Byte alignent for record fields *)
  467.   TRACKFORMAT                     = RECORD (* trckfmt *)
  468.     CASE                            : TYPEPREFIX OF
  469.     | TRUE                          :
  470.       bCommand                      : SHORTCARD;
  471.       usHead                        : CARDINAL;
  472.       usCylinder                    : CARDINAL;
  473.       usReserved                    : CARDINAL;
  474.       cSectors                      : CARDINAL;
  475.       FormatTable                   : ARRAY [0..0] OF RECORD
  476.         bCylinder                     : SHORTCARD;
  477.         bHead                         : SHORTCARD;
  478.         idSector                      : SHORTCARD;
  479.         bBytesSector                  : SHORTCARD;
  480.                                       END;
  481.     | FALSE                         :
  482.       Command                       : SHORTCARD;
  483.       Head                          : CARDINAL;
  484.       Cylinder                      : CARDINAL;
  485.       Reserved                      : CARDINAL;
  486.       Sectors                       : CARDINAL;
  487.       FormatTableArray              : ARRAY [0..0] OF RECORD
  488.         Cylinder                      : SHORTCARD;
  489.         Head                          : SHORTCARD;
  490.         SectorId                      : SHORTCARD;
  491.         BytesSector                   : SHORTCARD;
  492.                                       END;
  493.     END;                            END;
  494.   PTRACKFORMAT                    = POINTER TO TRACKFORMAT;
  495.  
  496. TYPE
  497.   RXQUEUE                         = RECORD (* rxq *)
  498.     CASE                            : TYPEPREFIX OF
  499.     | TRUE                          :
  500.       cch                           : CARDINAL;
  501.       cb                            : CARDINAL;
  502.     | FALSE                         :
  503.       ChCount                       : CARDINAL;
  504.       BCount                        : CARDINAL;
  505.     END;                            END;
  506.   PRXQUEUE                        = POINTER TO RXQUEUE;
  507.  
  508. TYPE
  509.   DEVICEPARAMETERBLOCK            = RECORD (* dvpblck *)
  510.     CASE                            : TYPEPREFIX OF
  511.     | TRUE                          :
  512.       reserved1                     : CARDINAL;
  513.       cCylinders                    : CARDINAL;
  514.       cHeads                        : CARDINAL;
  515.       cSectorsPerTrack              : CARDINAL;
  516.       reserved2                     : CARDINAL;
  517.       reserved3                     : CARDINAL;
  518.       reserved4                     : CARDINAL;
  519.       reserved5                     : CARDINAL;
  520.     | FALSE                         :
  521.       Reserved1                     : CARDINAL;
  522.       Cylinders                     : CARDINAL;
  523.       Heads                         : CARDINAL;
  524.       SectorsPerTrack               : CARDINAL;
  525.       Reserved2                     : CARDINAL;
  526.       Reserved3                     : CARDINAL;
  527.       Reserved4                     : CARDINAL;
  528.       Reserved5                     : CARDINAL;
  529.     END;                            END;
  530.   PDEVICEPARAMETERBLOCK           = POINTER TO DEVICEPARAMETERBLOCK;
  531.  
  532. TYPE (*$A2 Word alignment for record fields >= 2 bytes *)
  533.   PTRDRAWFUNCTION                 = RECORD (* ptrdfnc *)
  534.     CASE                            : TYPEPREFIX OF
  535.     | TRUE                          :
  536.       usReturnCode                  : CARDINAL;
  537.       pfnDraw                       : PFN;
  538.       pchDataSeg                    : PCH;
  539.     | FALSE                         :
  540.       ReturnCode                    : CARDINAL;
  541.       Draw                          : PFN;
  542.       DataSeg                       : PCH;
  543.     END;                            END;
  544.   PPTRDRAWFUNCTION                = POINTER TO PTRDRAWFUNCTION;
  545.  
  546. TYPE
  547.   PTRDRAWADDRESS                  = RECORD (* ptrdaddr *)
  548.     CASE                            : TYPEPREFIX OF
  549.     | TRUE                          :
  550.       reserved                      : CARDINAL;
  551.       ptrdfnc                       : PTRDRAWFUNCTION;
  552.     | FALSE                         :
  553.       Reserved                      : CARDINAL;
  554.       PtrDFnc                       : PTRDRAWFUNCTION;
  555.     END;                            END;
  556.   PPTRDRAWADDRESS                 = POINTER TO PTRDRAWADDRESS;
  557.  
  558. TYPE
  559.   SHIFTSTATE                      = RECORD (* shftst *)
  560.     CASE                            : TYPEPREFIX OF
  561.     | TRUE                          :
  562.       fsState                       : CARDINAL;
  563.       fNLS                          : SHORTCARD;
  564.     | FALSE                         :
  565.       State                         : CARDINAL;
  566.       NLSFlag                       : SHORTCARD;
  567.     END;                            END;
  568.   PSHIFTSTATE                     = POINTER TO SHIFTSTATE;
  569.  
  570. CONST (* HOTKEY.fsHotKey/SHIFTSTATE.fsState *)
  571.   RIGHTSHIFT                      = 0001H;
  572.   LEFTSHIFT                       = 0002H;
  573.   CONTROL                         = 0004H;
  574.   ALT                             = 0008H;
  575.   SCROLLLOCK_ON                   = 0010H;
  576.   NUMLOCK_ON                      = 0020H;
  577.   CAPSLOCK_ON                     = 0040H;
  578.   INSERT_ON                       = 0080H;
  579.   LEFTCONTROL                     = 0100H;
  580.   LEFTALT                         = 0200H;
  581.   RIGHTCONTROL                    = 0400H;
  582.   RIGHTALT                        = 0800H;
  583.   SCROLLLOCK                      = 1000H;
  584.   NUMLOCK                         = 2000H;
  585.   CAPSLOCK                        = 4000H;
  586.   SYSREQ                          = 8000H;
  587.  
  588. TYPE
  589.   HOTKEY                          = RECORD (* htky *)
  590.     CASE                            : TYPEPREFIX OF
  591.     | TRUE                          :
  592.       fsHotKey                      : CARDINAL;
  593.       uchScancodeMake               : SHORTCARD;
  594.       uchScancodeBreak              : SHORTCARD;
  595.       idHotKey                      : CARDINAL;
  596.     | FALSE                         :
  597.       HotKeyFlag                    : CARDINAL;
  598.       ScancodeMake                  : SHORTCARD;
  599.       ScancodeBreak                 : SHORTCARD;
  600.       HotKeyId                      : CARDINAL;
  601.     END;                            END;
  602.   PHOTKEY                         = POINTER TO HOTKEY;
  603.  
  604. TYPE
  605.   MONITORPOSITION                 = RECORD (* mnpos *)
  606.     CASE                            : TYPEPREFIX OF
  607.     | TRUE                          :
  608.       fPosition                     : CARDINAL;
  609.       index                         : CARDINAL;
  610.       pbInBuf                       : LONGCARD;
  611.       offOutBuf                     : CARDINAL;
  612.     | FALSE                         :
  613.       Position                      : CARDINAL;
  614.       Index                         : CARDINAL;
  615.       InBuf                         : LONGCARD;
  616.       OutBufOff                     : CARDINAL;
  617.     END;                            END;
  618.   PMONITORPOSITION                = POINTER TO MONITORPOSITION;
  619.  
  620. TYPE
  621.   RATEDELAY                       = RECORD (* rtdly *)
  622.     CASE                            : TYPEPREFIX OF
  623.     | TRUE                          :
  624.       usDelay                       : CARDINAL;
  625.       usRate                        : CARDINAL;
  626.     | FALSE                         :
  627.       Delay                         : CARDINAL;
  628.       Rate                          : CARDINAL;
  629.     END;                            END;
  630.   PRATEDELAY                      = POINTER TO RATEDELAY;
  631.  
  632. TYPE
  633.   CODEPAGEINFO                    = RECORD (* cpi *)
  634.     CASE                            : TYPEPREFIX OF
  635.     | TRUE                          :
  636.       pbTransTable                  : PVOID;
  637.       idCodePage                    : CARDINAL;
  638.       idTable                       : CARDINAL;
  639.     | FALSE                         :
  640.       TransTable                    : PVOID;
  641.       CodePageId                    : CARDINAL;
  642.       TableId                       : CARDINAL;
  643.     END;                            END;
  644.   PCODEPAGEINFO                   = POINTER TO CODEPAGEINFO;
  645.  
  646. TYPE
  647.   CPID                            = RECORD (* cpid *)
  648.     CASE                            : TYPEPREFIX OF
  649.     | TRUE                          :
  650.       idCodePage                    : CARDINAL;
  651.       Reserved                      : CARDINAL;
  652.     | FALSE                         :
  653.       CodePageId                    : CARDINAL;
  654.       reserved                      : CARDINAL;
  655.     END;                            END;
  656.   PCPID                           = POINTER TO CPID;
  657.  
  658. TYPE
  659.   LDTADDRINFO                     = RECORD (* ldtaddr *)
  660.     CASE                            : TYPEPREFIX OF
  661.     | TRUE                          :
  662.       pulPhysAddr                   : POINTER TO LONGCARD;
  663.       cb                            : CARDINAL;
  664.     | FALSE                         :
  665.       PhysAddr                      : POINTER TO LONGCARD;
  666.       Count                         : CARDINAL;
  667.     END;                            END;
  668.   PLDTADDRINFO                    = POINTER TO LDTADDRINFO;
  669.  
  670. TYPE
  671.   PTRDRAWDATA                     = RECORD (* ptrdd *)
  672.     CASE                            : TYPEPREFIX OF
  673.     | TRUE                          :
  674.       cb                            : CARDINAL;
  675.       usConfig                      : CARDINAL;
  676.       usFlag                        : CARDINAL;
  677.     | FALSE                         :
  678.       Count                         : CARDINAL;
  679.       Config                        : CARDINAL;
  680.       Flag                          : CARDINAL;
  681.     END;                            END;
  682.   PPTRDRAWDATA                    = POINTER TO PTRDRAWDATA;
  683.  
  684. (*$A restore default alignment for record fields *)
  685.  
  686.  
  687. (***********************************************************************)
  688. (* New OS/2 2.1 structures for Lockable Drive IOCtls                   *)
  689. (***********************************************************************)
  690.  
  691. (*$A1 Byte alignment for record fields *)
  692.  
  693. TYPE (* for Category 8, Lockable Drive IOCtls, Functions 40H, 5DH, 66H *)
  694.   DRIVEPARAM                      = RECORD
  695.     Command                         : SHORTCARD;
  696.     Drive                           : SHORTCARD;
  697.                                     END;
  698.   PDRIVEPARAM                     = POINTER TO DRIVEPARAM;
  699.  
  700. CONST (* values for Category 8, Function 40H, DRIVEPARAM.Command *)
  701.   COMMAND_UNLOCK                  = 0;
  702.   COMMAND_LOCK                    = 1;
  703.   COMMAND_EJECT                   = 2;
  704.  
  705. CONST (* values for Category 8, Function 5DH, DRIVEPARAM.Command *)
  706.   COMMAND_RETURN_EXCL_OWNERSHIP   = 0;  (* for Categroy 8, Function 5DH *)
  707.   COMMAND_REQUEST_EXCL_OWNERSHIP  = 1;
  708.  
  709. CONST (* values for Category 8, Function 66H, DRIVEPARAM.Command *)
  710.   COMMAND_NOTHING                 = 0;
  711.  
  712. TYPE (* for Category 8, Function 5DH, Diskette Control Data Packet *)
  713.   DISKETTECONTROLDATA             = RECORD
  714.     Reserved                        : SHORTCARD;
  715.                                     END;
  716.   PDISKETTECONTROLDATA            = POINTER TO DISKETTECONTROLDATA;
  717.  
  718. TYPE (* for Categroy 8, Function 66H, Data Packet for Query Lock Status *)
  719.   QUERYLOCKDATA                   = RECORD
  720.     LockStatus                      : LONGCARD;
  721.     Reserved                        : SHORTCARD;
  722.                                     END;
  723.   PQUERYLOCKDATA                  = POINTER TO QUERYLOCKDATA;
  724.  
  725. CONST (* for QUERYLOCKDATA.LockStatus *)
  726.   LOCKSTATUS_UNSUPPORTED          = 0;         (* .... ..00 *)
  727.   LOCKSTATUS_DRIVE_LOCKED         = 1;         (* .... ..01 *)
  728.   LOCKSTATUS_DRIVE_UNLOCKED       = 2;         (* .... ..10 *)
  729.   LOCKSTATUS_QUERY_UNSUPPORTED    = 3;         (* .... ..11 *)
  730.   LOCKSTATUS_NOMEDIA_IN_DRIVE     = 0 SHL 2;   (* .... 00.. *)
  731.   LOCKSTATUS_MEDIA_IN_DRIVE       = 1 SHL 2;   (* .... 01.. *)
  732.  
  733. (*$A restore default alignment for record fields *)
  734.  
  735.  
  736. (***********************************************************************)
  737. (* New OS/2 2.1 structures for Power Management IOCtls                 *)
  738. (***********************************************************************)
  739.  
  740. (*$A1 Byte alignment for record fields *)
  741.  
  742. CONST (* Power Management (Category 12) function codes *)
  743.   POWER_SEND_EVENT                = 0040H;
  744.   POWER_SET_EVENT_RESOURCE        = 0041H;
  745.   POWER_QUERY_STATUS              = 0060H;
  746.   POWER_EVENT                     = 0061H;
  747.   POWER_QUERY_INFO                = 0062H;
  748.  
  749. CONST (* Power Management return codes from a CARDINAL output data packet *)
  750.   PowerNoError                    = 0000H;
  751.   PowerBadSubId                   = 0001H;
  752.   PowerBadReserved                = 0002H;
  753.   PowerBadDevId                   = 0003H;
  754.   PowerBadPwrState                = 0004H;
  755.   PowerSemAlreadySetup            = 0005H;
  756.   PowerBadFlags                   = 0006H;
  757.   PowerBadSemHandle               = 0007H;
  758.   PowerBadLength                  = 0008H;
  759.   PowerDisabled                   = 0009H;
  760.   PowerRAMSemaphore               = 000DH;
  761.  
  762. TYPE (* for Category 12, Function 40H, Send Power Event *)
  763.   POWEREVENTPARAM                 = RECORD
  764.     Parm1                           : LONGCARD;
  765.     Parm2                           : LONGCARD;
  766.                                     END;
  767.   PPOWEREVENTPARAM                = POINTER TO POWEREVENTPARAM;
  768.  
  769. CONST (* values for POWEREVENTPARAM.Parm1 *)
  770.   POWER_MANAGEMENT_ENABLE         = 0003H;
  771.   POWER_MANAGEMENT_DISABLE        = 0004H;
  772.   POWER_MANAGEMENT_RESTORE_BIOS   = 0005H;
  773.   POWER_MANAGEMENT_SET_STATE      = 0006H;
  774.   POWER_EVENT_BATTERY_LOW         = 0007H;
  775.   POWER_EVENT_NORMAL_RESUME       = 0008H;
  776.   POWER_EVENT_CRITICAL_RESUME     = 0009H;
  777.  
  778. TYPE (* for Category 12, Function 41H, Set Power Event Resource *)
  779.   POWERRESPARAM                   = RECORD
  780.     ReqFlags                        : CARDINAL;
  781.     SemHandle                       : LONGCARD;
  782.     EventMask                       : LONGCARD;
  783.                                     END;
  784.   PPOWERRESPARAM                  = POINTER TO POWERRESPARAM;
  785.  
  786. CONST (* bits for POWERRESPARAM.ReqFlags *)
  787.   SEMSETUP                        = 1 SHL 0;  (* .... .... .... ...1 *)
  788.   SEMREMOVAL                      = 1 SHL 1;  (* .... .... .... ..1. *)
  789.   SEM16BIT                        = 1 SHL 2;  (* .... .... .... .1.. *)
  790.   SEM32BIT                        = 1 SHL 3;  (* .... .... .... 1... *)
  791.   SEMNO                           = 1 SHL 4;  (* .... .... ...1 .... *)
  792.  
  793. CONST (* bits for POWERRESPARAM.EventMask *)
  794.   EVENTMASK_ENABLE                = 1 SHL POWER_MANAGEMENT_ENABLE;
  795.   EVENTMASK_DISABLE               = 1 SHL POWER_MANAGEMENT_DISABLE;
  796.   EVENTMASK_RESTORE_BIOS          = 1 SHL POWER_MANAGEMENT_RESTORE_BIOS;
  797.   EVENTMASK_SET_STATE             = 1 SHL POWER_MANAGEMENT_SET_STATE;
  798.   EVENTMASK_BATTERY_LOW           = 1 SHL POWER_EVENT_BATTERY_LOW;
  799.   EVENTMASK_NORMAL_RESUME         = 1 SHL POWER_EVENT_NORMAL_RESUME;
  800.   EVENTMASK_CRITICAL_RESUME       = 1 SHL POWER_EVENT_CRITICAL_RESUME;
  801.  
  802. TYPE (* for Category 12, Function 60H, Query Power State *)
  803.   POWERSTATEPARAM                 = RECORD
  804.     ParmLength                      : CARDINAL;
  805.     PowerFlags                      : CARDINAL;
  806.     ACStatus                        : SHORTCARD;
  807.     BatteryStatus                   : SHORTCARD;
  808.     BatteryLife                     : SHORTCARD;  (* percentage value *)
  809.                                     END;
  810.   PPOWERSTATEPARAM                = POINTER TO POWERSTATEPARAM;
  811.  
  812. CONST (* bits for POWERSTATEPARAM.PowerFlags *)
  813.   POWER_MANAGEMENT_ENABLED        = 1;  (* .... .... .... ...1 *)
  814.  
  815. CONST (* values for POWERSTATEPARAM.ACStatus *)
  816.   AC_ONLINE                       = 0;
  817.   AC_OFFLINE                      = 1;
  818.   AC_UNKNOWN                      = 255;
  819.  
  820. CONST (* values for POWERSTATEPARAM.BatteryStatus *)
  821.   BATTERY_HIGH                    = 0;
  822.   BATTERY_LOW                     = 1;
  823.   BATTERY_CRITICAL                = 2;
  824.   BATTERY_CHARGING                = 3;
  825.   BATTERY_UNKNOWN                 = 255;
  826.  
  827. CONST (* values for POWERSTATEPARAM.BatteryLife *)
  828.   BATTERY_LIFE_UNKNOWN            = 255;
  829.  
  830. TYPE (* for Category 12, Function 61H, Query Power Event *)
  831.   QUERYPOWEREVENTPARAM            = RECORD
  832.     ParmLength                      : CARDINAL; (* 12 for input *)
  833.     MsgCount                        : CARDINAL;
  834.     Event                           : POWEREVENTPARAM;
  835.                                     END;
  836.   PQUERYPOWEREVENTPARAM           = POINTER TO QUERYPOWEREVENTPARAM;
  837.  
  838. TYPE (* for Category 12, Function 61H, Query Power Info *)
  839.   POWERINFOPARAM                  = RECORD
  840.     ParmLength                      : CARDINAL; (* 8 bytes always *)
  841.     BIOSFlags                       : CARDINAL;
  842.     BIOSVersion                     : CARDINAL;
  843.     SubsysVersion                   : CARDINAL;
  844.                                     END;
  845.   PPOWERINFOPARAM                 = POINTER TO POWERINFOPARAM;
  846.  
  847. (*$A restore default alignment for record fields *)
  848.  
  849.  
  850. (***********************************************************************)
  851. (* New OS/2 2.1 structures for CD-ROM IOCtls                           *)
  852. (***********************************************************************)
  853.  
  854. (*$A1 Byte alignment for record fields *)
  855.  
  856. TYPE (* for Category 8, Function 63H, Data Packet Get Device Parameters *)
  857.   DEVICEPARAM                     = RECORD
  858.     ExtendedDeviceBPB               : ARRAY [0..31] OF SHORTCARD;
  859.     Cylinders                       : CARDINAL;
  860.     DeviceType                      : SHORTCARD;
  861.     DeviceAttributes                : CARDINAL;
  862.                                     END;
  863.   PDEVICEPARAM                    = POINTER TO DEVICEPARAM;
  864.  
  865. CONST (* for DEVICEPARAM.DeviceType *)
  866.   DEVTYPE_OTHER                   = 7;  (* other, e.g. 3.5 1.44MB drive *)
  867.   DEVTYPE_RWOPTDISK               = 8;  (* R/W optical Disk *)
  868.   DEVTYPE_288                     = 9;  (* 3.5 inch 2.88MB Drive *)
  869.  
  870. CONST (* for DEVICEPARAM.DeviceAttributes *)
  871.   DEVATTR_UNREMOVABLE             = 1 SHL 0;  (* .... ...x *)
  872.   DEVATTR_CHANGELINE              = 1 SHL 1;  (* .... ..x. *)
  873.   DEVATTR_GT16MB                  = 1 SHL 2;  (* .... .x.. *)
  874.  
  875. TYPE (* for Category 80H, Functions for Drive and Disk IOCtls *)
  876.   SUBFUNCTION                     = SHORTCARD;
  877.   CDROMDRIVERNAME                 = ARRAY [0..3] OF CHAR; (* usually "CD01" *)
  878.   CDROMDRIVEDISKPARAM             = RECORD
  879.     Name                            : CDROMDRIVERNAME;
  880.     CASE                            : SUBFUNCTION OF
  881.     | 46H (* Lock/Unlock Door *)    :
  882.       DoorLock                      : BOOLEAN; (* TRUE=lock FALSE=unlock *)
  883.     | 50H (* Seek *)                :
  884.       MinSecFrameFormat50H          : BOOLEAN;  (* FALSE=logical format *)
  885.       StartingSectorNumber50H       : LONGCARD;
  886.     | 70H (* Drive Head Location *) :
  887.       MinSecFrameFormat70H          : BOOLEAN;
  888.     | 72H (* Read Long *)           :
  889.       SectorCount                   : CARDINAL;
  890.       StartingSectorNumber72H       : LONGCARD;
  891.       Reserved72H                   : SHORTCARD;
  892.       InterleaveSize                : SHORTCARD;
  893.       InterleaveSkipFactor          : SHORTCARD;
  894.     ELSE
  895.     END;                            END;
  896.   PCDROMDRIVEDISKPARAM            = POINTER TO CDROMDRIVEDISKPARAM;
  897.  
  898. CONST (* bit values for Function 60H Device Status, returned in a LONGCARD *)
  899.   DEVSTATUS_AUDIO_PLAYING         = 1 SHL 12; (* ...1 .... .... .... *)
  900.   DEVSTATUS_DISK_NOT_PRESENT      = 1 SHL 11; (* .... 1... .... .... *)
  901.   DEVSTATUS_MINSECFRAME           = 1 SHL 9;  (* .... ..1. .... .... *)
  902.   DEVSTATUS_AUDIOCHANNEL          = 1 SHL 8;  (* .... ...1 .... .... *)
  903.   DEVSTATUS_PREFETCHING           = 1 SHL 7;  (* .... .... 1... .... *)
  904.   DEVSTATUS_ISO9660_INTERLEAVE    = 1 SHL 5;  (* .... .... ..1. .... *)
  905.   DEVSTATUS_AUDIO_VIDEO_READ      = 1 SHL 4;  (* .... .... ...1 .... *)
  906.   DEVSTATUS_READ_AND_WRITE        = 1 SHL 3;  (* .... .... .... 1... *)
  907.   DEVSTATUS_COOKED_AND_RAW        = 1 SHL 2;  (* .... .... .... .1.. *)
  908.   DEVSTATUS_DOOR_UNLOCKED         = 1 SHL 1;  (* .... .... .... ..1. *)
  909.   DEVSTATUS_DOOR_OPEN             = 1 SHL 0;  (* .... .... .... ...1 *)
  910.  
  911. TYPE (* for Category 80H, Function 72H, CD-ROM Data Read *)
  912.   CDROMDATA                       = RECORD
  913.     Sync                            : ARRAY [0..11] OF CHAR;
  914.     Header                          : LONGCARD;
  915.     DataArea                        : ARRAY [0..2047] OF CHAR;
  916.     EdcEccArea                      : ARRAY [0..287] OF CHAR;
  917.                                     END;
  918.   PCDROMDATA                      = POINTER TO CDROMDATA;
  919.  
  920. TYPE (* for Category 80H, Function 79H, CD-ROM Get UPC Data *)
  921.   UPCDATA                         = RECORD
  922.     ControlAdr                      : SHORTCARD;
  923.     ProductCode                     : ARRAY [0..6] OF CHAR;
  924.     Reserved                        : SHORTCARD;
  925.     Frame                           : SHORTCARD;
  926.                                     END;
  927.   PUPCDATA                        = POINTER TO UPCDATA;
  928.  
  929. TYPE (* for Category 81H, Audio IOCtls Parameter *)
  930.   CDROMAUDIOPARAM                 = RECORD
  931.     Name                            : CDROMDRIVERNAME;
  932.     CASE                            : SUBFUNCTION OF
  933.     | 50H (* Play Audio *)          :
  934.       MinSecFrameFormat50H          : BOOLEAN;  (* FALSE=logical format *)
  935.       StartingSectorNumber50H       : LONGCARD;
  936.       EndSectorNumber50H            : LONGCARD;
  937.     | 62H (* Audio Track Info *)    :
  938.       TrackNumber                   : SHORTCARD;
  939.     ELSE
  940.     END;                            END;
  941.   PCDROMAUDIOPARAM                = POINTER TO CDROMAUDIOPARAM;
  942.  
  943. TYPE (* for Category 81H, Function 40H + 60H, Audio Channel Data *)
  944.   AUDIOCONTROLDATA                = ARRAY [0..3] OF RECORD
  945.     InputChannel                    : SHORTCARD;
  946.     OutputVolumeControl             : SHORTCARD;
  947.                                     END;
  948.   PAUDIOCONTROLDATA               = POINTER TO AUDIOCONTROLDATA;
  949.  
  950. TYPE (* for Category 81H, Function 61H, Audio Disk Information *)
  951.   AUDIODISKINFODATA               = RECORD
  952.     LowestTrack                     : SHORTCARD;
  953.     HighestTrack                    : SHORTCARD;
  954.     StartingPointLeadOutTrack       : LONGCARD;
  955.                                     END;
  956.   PAUDIODISKINFODATA              = POINTER TO AUDIODISKINFODATA;
  957.  
  958. TYPE (* for Category 81H, Function 62H, Audio Track Information *)
  959.   AUDIOTRACKINFODATA              = RECORD
  960.     StartingPointTrack              : LONGCARD;
  961.     TrackControlInfo                : SHORTCARD;
  962.                                     END;
  963.   PAUDIOTRACKINFODATA             = POINTER TO AUDIOTRACKINFODATA;
  964.  
  965. CONST (* bit values for AUDIOTRACKINFODATA.TrackControlInfo *)
  966.   TRACKCONTROL_4CHANNELS          = 1 SHL 7;  (* 1... .... *)
  967.   TRACKCONTROL_DATATRACK          = 1 SHL 6;  (* .1.. .... *)
  968.   TRACKCONTROL_COPY_PERMITTED     = 1 SHL 5;  (* ..1. .... *)
  969.   TRACKCONTROL_AUDIO_PREEMPHASIS  = 1 SHL 4;  (* ...1 .... *)
  970.   TRACKCONTROL_ADRDATA            = 07H;      (* .... .xxx *)
  971.  
  972. TYPE (* for Category 81H, Function 63H, Audio-Subchannel Q Info *)
  973.   RUNNINGTIME                     = RECORD
  974.     Min                             : SHORTCARD;
  975.     Sec                             : SHORTCARD;
  976.     Frame                           : SHORTCARD;
  977.                                     END;
  978.   AUDIOSUBCHANNELQINFODATA        = RECORD
  979.     ControlADR                      : SHORTCARD;
  980.     TrackNumber                     : SHORTCARD;
  981.     Index                           : SHORTCARD;
  982.     RunningTimeTrack                : RUNNINGTIME;
  983.     Reserved                        : SHORTCARD;
  984.     RunningTimeDisk                 : RUNNINGTIME;
  985.                                     END;
  986.   PAUDIOSUBCHANNELQINFODATA       = POINTER TO AUDIOSUBCHANNELQINFODATA;
  987.  
  988. TYPE (* for Category 81H, Function 65H, Audio-Status Information *)
  989.   AUDIOSTATUSINFODATA             = RECORD
  990.     Status                          : CARDINAL;
  991.     LastStartingLoc                 : LONGCARD;
  992.     LastEndingLoc                   : LONGCARD;
  993.                                     END;
  994.   PAUDIOSTATUSINFODATA            = POINTER TO AUDIOSTATUSINFODATA;
  995.  
  996. CONST (* bit values for AUDIOSTATUSINFODATA.Status *)
  997.   AUDIOSTATUS_PAUSED              = 0001H;  (* .... .... .... ...1 *)
  998.  
  999. TYPE (* for Category 82H, Function 60H, Get Drive Letter Info *)
  1000.   DRIVELETTERINFODATA             = RECORD
  1001.     CDROMCount                      : CARDINAL;
  1002.     FirstDrive                      : CARDINAL;
  1003.                                     END;
  1004.   PDRIVELETTERINFODATA            = POINTER TO DRIVELETTERINFODATA;
  1005.  
  1006. (*$A restore default alignment for record fields *)
  1007.  
  1008. END DOSDEVIOCTL.
  1009.