home *** CD-ROM | disk | FTP | other *** search
/ The Developer Connection…ice Driver Kit for OS/2 3 / DEV3-D1.ISO / devtools / os2tk21j / c / os2h / bsedev.h__ / bsedev.h
Encoding:
C/C++ Source or Header  |  1993-03-12  |  18.7 KB  |  564 lines

  1. /*static char *SCCSID = "@(#)bsedev.h    6.10 92/03/15";*/
  2. /**************************************************************************\
  3. *                                                                         *
  4. * Module Name: BSEDEV.H                                                   *
  5. *                                                                         *
  6. * OS/2 Structures and constants for use with DosDevIOCtl                  *
  7. *                                                                         *
  8. * Copyright (c) 1987-1992, IBM Corporation                                *
  9. *                                                                         *
  10. \**************************************************************************/
  11.  
  12. #ifdef __IBMC__
  13. #pragma checkout( suspend )
  14.    #ifndef __CHKHDR__
  15.       #pragma checkout( suspend )
  16.    #endif
  17. #pragma checkout( resume )
  18. #endif
  19.  
  20. #ifndef __BSEDEV__
  21. #define __BSEDEV__
  22.  
  23. #define BSEDEV_INCLUDED
  24.  
  25. /* Input and Output Control Categories */
  26.  
  27. #define IOCTL_ASYNC                        0x0001
  28. #define IOCTL_SCR_AND_PTRDRAW              0x0003
  29. #define IOCTL_KEYBOARD                     0x0004
  30. #define IOCTL_PRINTER                      0x0005
  31. #define IOCTL_LIGHTPEN                     0x0006
  32. #define IOCTL_POINTINGDEVICE               0x0007
  33. #define IOCTL_DISK                         0x0008
  34. #define IOCTL_PHYSICALDISK                 0x0009
  35. #define IOCTL_MONITOR                      0x000A
  36. #define IOCTL_GENERAL                      0x000B
  37.  
  38. /* Serial-Device Control */
  39.  
  40. #define ASYNC_SETBAUDRATE                  0x0041
  41. #define ASYNC_SETLINECTRL                  0x0042
  42. #define ASYNC_TRANSMITIMM                  0x0044
  43. #define ASYNC_SETBREAKOFF                  0x0045
  44. #define ASYNC_SETMODEMCTRL                 0x0046
  45. #define ASYNC_SETBREAKON                   0x004B
  46. #define ASYNC_STOPTRANSMIT                 0x0047
  47. #define ASYNC_STARTTRANSMIT                0x0048
  48. #define ASYNC_SETDCBINFO                   0x0053
  49. #define ASYNC_GETBAUDRATE                  0x0061
  50. #define ASYNC_GETLINECTRL                  0x0062
  51. #define ASYNC_GETCOMMSTATUS                0x0064
  52. #define ASYNC_GETLINESTATUS                0x0065
  53. #define ASYNC_GETMODEMOUTPUT               0x0066
  54. #define ASYNC_GETMODEMINPUT                0x0067
  55. #define ASYNC_GETINQUECOUNT                0x0068
  56. #define ASYNC_GETOUTQUECOUNT               0x0069
  57. #define ASYNC_GETCOMMERROR                 0x006D
  58. #define ASYNC_GETCOMMEVENT                 0x0072
  59. #define ASYNC_GETDCBINFO                   0x0073
  60.  
  61. /* Screen/Pointer-Draw Control */
  62.  
  63. #define SCR_ALLOCLDT                       0x0070
  64. #define SCR_DEALLOCLDT                     0x0071
  65. #define PTR_GETPTRDRAWADDRESS              0x0072
  66. #define SCR_ALLOCLDTOFF                    0x0075
  67.  
  68. /* Keyboard Control */
  69.  
  70. #define KBD_SETTRANSTABLE                  0x0050
  71. #define KBD_SETINPUTMODE                   0x0051
  72. #define KBD_SETINTERIMFLAG                 0x0052
  73. #define KBD_SETSHIFTSTATE                  0x0053
  74. #define KBD_SETTYPAMATICRATE               0x0054
  75. #define KBD_SETFGNDSCREENGRP               0x0055
  76. #define KBD_SETSESMGRHOTKEY                0x0056
  77. #define KBD_SETFOCUS                       0x0057
  78. #define KBD_SETKCB                         0x0058
  79. #define KBD_SETNLS                         0x005C
  80. #define KBD_CREATE                         0x005D
  81. #define KBD_DESTROY                        0x005E
  82. #define KBD_GETINPUTMODE                   0x0071
  83. #define KBD_GETINTERIMFLAG                 0x0072
  84. #define KBD_GETSHIFTSTATE                  0x0073
  85. #define KBD_READCHAR                       0x0074
  86. #define KBD_PEEKCHAR                       0x0075
  87. #define KBD_GETSESMGRHOTKEY                0x0076
  88. #define KBD_GETKEYBDTYPE                   0x0077
  89. #define KBD_GETCODEPAGEID                  0x0078
  90. #define KBD_XLATESCAN                      0x0079
  91.  
  92. /* Printer Control */
  93.  
  94. #define PRT_QUERYJOBHANDLE                 0x0021
  95. #define PRT_SETFRAMECTL                    0x0042
  96. #define PRT_SETINFINITERETRY               0x0044
  97. #define PRT_INITPRINTER                    0x0046
  98. #define PRT_ACTIVATEFONT                   0x0048
  99. #define PRT_GETFRAMECTL                    0x0062
  100. #define PRT_GETINFINITERETRY               0x0064
  101. #define PRT_GETPRINTERSTATUS               0x0066
  102. #define PRT_QUERYACTIVEFONT                0x0069
  103. #define PRT_VERIFYFONT                     0x006A
  104.  
  105. /* Pointing-Device (Mouse) Control */
  106.  
  107. #define MOU_ALLOWPTRDRAW                   0x0050
  108. #define MOU_UPDATEDISPLAYMODE              0x0051
  109. #define MOU_SCREENSWITCH                   0x0052
  110. #define MOU_SETSCALEFACTORS                0x0053
  111. #define MOU_SETEVENTMASK                   0x0054
  112. #define MOU_SETHOTKEYBUTTON                0x0055
  113. #define MOU_SETPTRSHAPE                    0x0056
  114. #define MOU_DRAWPTR                        0x0057
  115. #define MOU_REMOVEPTR                      0x0058
  116. #define MOU_SETPTRPOS                      0x0059
  117. #define MOU_SETPROTDRAWADDRESS             0x005A
  118. #define MOU_SETREALDRAWADDRESS             0x005B
  119. #define MOU_SETMOUSTATUS                   0x005C
  120. #define MOU_DISPLAYMODECHANGE              0x005D
  121. #define MOU_GETBUTTONCOUNT                 0x0060
  122. #define MOU_GETMICKEYCOUNT                 0x0061
  123. #define MOU_GETMOUSTATUS                   0x0062
  124. #define MOU_READEVENTQUE                   0x0063
  125. #define MOU_GETQUESTATUS                   0x0064
  126. #define MOU_GETEVENTMASK                   0x0065
  127. #define MOU_GETSCALEFACTORS                0x0066
  128. #define MOU_GETPTRPOS                      0x0067
  129. #define MOU_GETPTRSHAPE                    0x0068
  130. #define MOU_GETHOTKEYBUTTON                0x0069
  131. #define MOU_VER                            0x006A
  132.  
  133. /* Disk/Diskette Control */
  134.  
  135. #define DSK_LOCKDRIVE                      0x0000
  136. #define DSK_UNLOCKDRIVE                    0x0001
  137. #define DSK_REDETERMINEMEDIA               0x0002
  138. #define DSK_SETLOGICALMAP                  0x0003
  139. #define DSK_BLOCKREMOVABLE                 0x0020
  140. #define DSK_GETLOGICALMAP                  0x0021
  141. #define DSK_SETDEVICEPARAMS                0x0043
  142. #define DSK_WRITETRACK                     0x0044
  143. #define DSK_FORMATVERIFY                   0x0045
  144. #define DSK_GETDEVICEPARAMS                0x0063
  145. #define DSK_READTRACK                      0x0064
  146. #define DSK_VERIFYTRACK                    0x0065
  147.  
  148. /* Physical-Disk Control */
  149.  
  150. #define PDSK_LOCKPHYSDRIVE                 0x0000
  151. #define PDSK_UNLOCKPHYSDRIVE               0x0001
  152. #define PDSK_WRITEPHYSTRACK                0x0044
  153. #define PDSK_GETPHYSDEVICEPARAMS           0x0063
  154. #define PDSK_READPHYSTRACK                 0x0064
  155. #define PDSK_VERIFYPHYSTRACK               0x0065
  156.  
  157. /* Character-Monitor Control */
  158. #define MON_REGISTERMONITOR                0x0040
  159.  
  160. /* General Device Control */
  161. #define DEV_FLUSHINPUT                     0x0001
  162. #define DEV_FLUSHOUTPUT                    0x0002
  163. #define DEV_QUERYMONSUPPORT                0x0060
  164.  
  165.  
  166. /* ASYNC_GETCOMMERROR, ASYNC_SETBREAKOFF, ASYNC_SETBREAKON,
  167.  * ASYNC_SETMODEMCTRL
  168.  */
  169.  
  170. #define RX_QUE_OVERRUN                     0x0001
  171. #define RX_HARDWARE_OVERRUN                0x0002
  172. #define PARITY_ERROR                       0x0004
  173. #define FRAMING_ERROR                      0x0008
  174.  
  175. /* ASYNC_GETCOMMEVENT */
  176. #define CHAR_RECEIVED                      0x0001
  177. #define LAST_CHAR_SENT                     0x0004
  178. #define CTS_CHANGED                        0x0008
  179. #define DSR_CHANGED                        0x0010
  180. #define DCD_CHANGED                        0x0020
  181. #define BREAK_DETECTED                     0x0040
  182. #define ERROR_OCCURRED                     0x0080
  183. #define RI_DETECTED                        0x0100
  184.  
  185. /* ASYNC_GETCOMMSTATUS */
  186. #define TX_WAITING_FOR_CTS                 0x0001
  187. #define TX_WAITING_FOR_DSR                 0x0002
  188. #define TX_WAITING_FOR_DCD                 0x0004
  189. #define TX_WAITING_FOR_XON                 0x0008
  190. #define TX_WAITING_TO_SEND_XON             0x0010
  191. #define TX_WAITING_WHILE_BREAK_ON          0x0020
  192. #define TX_WAITING_TO_SEND_IMM             0x0040
  193. #define RX_WAITING_FOR_DSR                 0x0080
  194.  
  195. /* ASYNC_GETLINESTATUS */
  196. #define WRITE_REQUEST_QUEUED               0x0001
  197. #define DATA_IN_TX_QUE                     0x0002
  198. #define HARDWARE_TRANSMITTING              0x0004
  199. #define CHAR_READY_TO_SEND_IMM             0x0008
  200. #define WAITING_TO_SEND_XON                0x0010
  201. #define WAITING_TO_SEND_XOFF               0x0020
  202.  
  203. /* ASYNC_GETMODEMINPUT */
  204. #define CTS_ON                             0x10
  205. #define DSR_ON                             0x20
  206. #define RI_ON                              0x40
  207. #define DCD_ON                             0x80
  208.  
  209. /* DSK_SETDEVICEPARAMS */
  210. #define BUILD_BPB_FROM_MEDIUM              0x00
  211. #define REPLACE_BPB_FOR_DEVICE             0x01
  212. #define REPLACE_BPB_FOR_MEDIUM             0x02
  213.  
  214. /* KBD_GETINPUTMODE, KBD_PEEKCHAR, KBD_SETINPUTMODE*/
  215. #define ASCII_MODE                         0x00
  216. #define BINARY_MODE                        0x80
  217.  
  218. /* KBD_GETINTERIMFLAG */
  219. #define CONVERSION_REQUEST                 0x20
  220. #define INTERIM_CHAR                       0x80
  221.  
  222. /* KBD_GETSESMGRHOTKEY */
  223. #define HOTKEY_MAX_COUNT                   0x0000
  224. #define HOTKEY_CURRENT_COUNT               0x0001
  225.  
  226. /* KBD_PEEKCHAR */
  227. #define KBD_DATA_RECEIVED                  0x0001
  228. #define KBD_DATA_BINARY                    0x8000
  229.  
  230. /* KBD_READCHAR */
  231. #define KBD_READ_WAIT                      0x0000
  232. #define KBD_READ_NOWAIT                    0x8000
  233.  
  234. /* KBD_SETINPUTMODE */
  235. #define SHIFT_REPORT_MODE                  0x01
  236.  
  237. #ifndef INCL_MOU
  238.  
  239.    #define MOUSE_MOTION                    0x0001
  240.    #define MOUSE_MOTION_WITH_BN1_DOWN      0x0002
  241.    #define MOUSE_BN1_DOWN                  0x0004
  242.    #define MOUSE_MOTION_WITH_BN2_DOWN      0x0008
  243.    #define MOUSE_BN2_DOWN                  0x0010
  244.    #define MOUSE_MOTION_WITH_BN3_DOWN      0x0020
  245.    #define MOUSE_BN3_DOWN                  0x0040
  246.  
  247.    #define MHK_BUTTON1                     0x0001
  248.    #define MHK_BUTTON2                     0x0002
  249.    #define MHK_BUTTON3                     0x0004
  250.  
  251.    #define MOU_NOWAIT                      0x0000
  252.    #define MOU_WAIT                        0x0001
  253.  
  254. #endif /* #ifndef INCL_MOU */
  255.  
  256. /* MOU_GETHOTKEYBUTTON, MOU_SETHOTKEYBUTTON */
  257. #define MHK_NO_HOTKEY                      0x0000
  258.  
  259. /* MOU_GETMOUSTATUS */
  260. #define MOUSE_QUEUEBUSY                    0x0001
  261. #define MOUSE_BLOCKREAD                    0x0002
  262. #define MOUSE_FLUSH                        0x0004
  263. #define MOUSE_UNSUPPORTED_MODE             0x0008
  264. #define MOUSE_DISABLED                     0x0100
  265. #define MOUSE_MICKEYS                      0x0200
  266.  
  267. /* PRT_GETPRINTERSTATUS */
  268. #define PRINTER_TIMEOUT                    0x0001
  269. #define PRINTER_IO_ERROR                   0x0008
  270. #define PRINTER_SELECTED                   0x0010
  271. #define PRINTER_OUT_OF_PAPER               0x0020
  272. #define PRINTER_ACKNOWLEDGED               0x0040
  273. #define PRINTER_NOT_BUSY                   0x0080
  274.  
  275. /* fbCtlHndShake */
  276. #define MODE_DTR_CONTROL                   0x01
  277. #define MODE_DTR_HANDSHAKE                 0x02
  278. #define MODE_CTS_HANDSHAKE                 0x08
  279. #define MODE_DSR_HANDSHAKE                 0x10
  280. #define MODE_DCD_HANDSHAKE                 0x20
  281. #define MODE_DSR_SENSITIVITY               0x40
  282.  
  283. /* fbFlowReplace */
  284. #define MODE_AUTO_TRANSMIT                 0x01
  285. #define MODE_AUTO_RECEIVE                  0x02
  286. #define MODE_ERROR_CHAR                    0x04
  287. #define MODE_NULL_STRIPPING                0x08
  288. #define MODE_BREAK_CHAR                    0x10
  289. #define MODE_RTS_CONTROL                   0x40
  290. #define MODE_RTS_HANDSHAKE                 0x80
  291. #define MODE_TRANSMIT_TOGGLE               0xC0
  292.  
  293. /* fbTimeout */
  294. #define MODE_NO_WRITE_TIMEOUT              0x01
  295. #define MODE_READ_TIMEOUT                  0x02
  296. #define MODE_WAIT_READ_TIMEOUT             0x04
  297. #define MODE_NOWAIT_READ_TIMEOUT           0x06
  298.  
  299. typedef struct _DCBINFO         /* dcbinf */
  300.         {
  301.         USHORT usWriteTimeout;
  302.         USHORT usReadTimeout;
  303.         BYTE   fbCtlHndShake;
  304.         BYTE   fbFlowReplace;
  305.         BYTE   fbTimeout;
  306.         BYTE   bErrorReplacementChar;
  307.         BYTE   bBreakReplacementChar;
  308.         BYTE   bXONChar;
  309.         BYTE   bXOFFChar;
  310.         } DCBINFO, *PDCBINFO;
  311.  
  312. #pragma pack(1)
  313.  
  314. typedef struct _TRACKLAYOUT     /* trckl */
  315.         {
  316.         BYTE   bCommand;
  317.         USHORT usHead;
  318.         USHORT usCylinder;
  319.         USHORT usFirstSector;
  320.         USHORT cSectors;
  321.         struct {
  322.                USHORT usSectorNumber;
  323.                USHORT usSectorSize;
  324.                } TrackTable[1];
  325.         } TRACKLAYOUT, *PTRACKLAYOUT;
  326.  
  327.  
  328. #define DEVTYPE_48TPI                      0x0000
  329. #define DEVTYPE_96TPI                      0x0001
  330. #define DEVTYPE_35                         0x0002
  331. #define DEVTYPE_8SD                        0x0003
  332. #define DEVTYPE_8DD                        0x0004
  333. #define DEVTYPE_FIXED                      0x0005
  334. #define DEVTYPE_TAPE                       0x0006
  335. #define DEVTYPE_UNKNOWN                    0x0007
  336.  
  337.  
  338. #pragma pack(1)
  339.  
  340. typedef struct _BIOSPARAMETERBLOCK      /* bspblk */
  341.         {
  342.         USHORT usBytesPerSector;
  343.         BYTE   bSectorsPerCluster;
  344.         USHORT usReservedSectors;
  345.         BYTE   cFATs;
  346.         USHORT cRootEntries;
  347.         USHORT cSectors;
  348.         BYTE   bMedia;
  349.         USHORT usSectorsPerFAT;
  350.         USHORT usSectorsPerTrack;
  351.         USHORT cHeads;
  352.         ULONG  cHiddenSectors;
  353.         ULONG  cLargeSectors;
  354.         BYTE   abReserved[6];
  355.         USHORT cCylinders;
  356.         BYTE   bDeviceType;
  357.         USHORT fsDeviceAttr;
  358.         } BIOSPARAMETERBLOCK;
  359. typedef BIOSPARAMETERBLOCK *PBIOSPARAMETERBLOCK;
  360.  
  361. typedef struct _SCREENGROUP     /* scrgrp */
  362.         {
  363.         USHORT idScreenGrp;
  364.         USHORT fTerminate;
  365.         } SCREENGROUP;
  366. typedef  SCREENGROUP *PSCREENGROUP;
  367.  
  368. typedef struct _FRAME           /* frm */
  369.         {
  370.         BYTE bCharsPerLine;
  371.         BYTE bLinesPerInch;
  372.         } FRAME;
  373. typedef FRAME *PFRAME;
  374.  
  375. typedef struct _KBDTYPE         /* kbdtyp */
  376.         {
  377.         USHORT usType;
  378.         USHORT reserved1;
  379.         USHORT reserved2;
  380.         } KBDTYPE;
  381. typedef KBDTYPE *PKBDTYPE;
  382.  
  383. typedef struct _LINECONTROL     /* lnctl */
  384.         {
  385.         BYTE bDataBits;
  386.         BYTE bParity;
  387.         BYTE bStopBits;
  388.         BYTE fTransBreak;
  389.         } LINECONTROL;
  390. typedef LINECONTROL *PLINECONTROL;
  391.  
  392. /* MODEMSTATUS.fbModemOn, ASYNC_GETMODEMOUTPUT */
  393. #define DTR_ON                             0x01
  394. #define RTS_ON                             0x02
  395.  
  396. /* MODEMSTATUS.fbModemOff */
  397. #define DTR_OFF                            0xFE
  398. #define RTS_OFF                            0xFD
  399.  
  400. typedef struct _MODEMSTATUS     /* mdmst */
  401.         {
  402.         BYTE fbModemOn;
  403.         BYTE fbModemOff;
  404.         } MODEMSTATUS;
  405. typedef MODEMSTATUS *PMODEMSTATUS;
  406.  
  407. #pragma pack(1)
  408.  
  409. typedef struct _TRACKFORMAT     /* trckfmt */
  410.         {
  411.         BYTE bCommand;
  412.         USHORT usHead;
  413.         USHORT usCylinder;
  414.         USHORT usReserved;
  415.         USHORT cSectors;
  416.         struct {
  417.                BYTE bCylinder;
  418.                BYTE bHead;
  419.                BYTE idSector;
  420.                BYTE bBytesSector;
  421.                } FormatTable[1];
  422.         } TRACKFORMAT;
  423.  
  424. typedef TRACKFORMAT *PTRACKFORMAT;
  425.  
  426. typedef struct _RXQUEUE         /* rxq */
  427.         {
  428.         USHORT cch;
  429.         USHORT cb;
  430.         } RXQUEUE;
  431. typedef RXQUEUE *PRXQUEUE;
  432.  
  433. typedef struct _DEVICEPARAMETERBLOCK    /* dvpblck */
  434.         {
  435.         USHORT reserved1;
  436.         USHORT cCylinders;
  437.         USHORT cHeads;
  438.         USHORT cSectorsPerTrack;
  439.         USHORT reserved2;
  440.         USHORT reserved3;
  441.         USHORT reserved4;
  442.         USHORT reserved5;
  443.         } DEVICEPARAMETERBLOCK;
  444.  
  445. typedef DEVICEPARAMETERBLOCK     *PDEVICEPARAMETERBLOCK;
  446.  
  447. /* The following must be packed on 2 bytes boundary */
  448. #pragma pack(2)
  449.  
  450. typedef struct _PTRDRAWFUNCTION         /* ptrdfnc */
  451.         {
  452.         USHORT usReturnCode;
  453.         PFN pfnDraw;
  454.         PCH pchDataSeg;
  455.         } PTRDRAWFUNCTION;
  456.  
  457. typedef PTRDRAWFUNCTION *PPTRDRAWFUNCTION;
  458.  
  459. typedef struct _PTRDRAWADDRESS          /* ptrdaddr */
  460.         {
  461.         USHORT reserved;
  462.         PTRDRAWFUNCTION ptrdfnc;
  463.         } PTRDRAWADDRESS;
  464.  
  465. typedef PTRDRAWADDRESS  *PPTRDRAWADDRESS;
  466.  
  467. typedef struct _SHIFTSTATE      /* shftst */
  468.         {
  469.         USHORT fsState;
  470.         BYTE   fNLS;
  471.         } SHIFTSTATE;
  472.  
  473. typedef SHIFTSTATE  *PSHIFTSTATE;
  474.  
  475.  
  476.  
  477. /* HOTKEY.fsHotKey/SHIFTSTATE.fsState */
  478. #define RIGHTSHIFT                         0x0001
  479. #define LEFTSHIFT                          0x0002
  480. #define CONTROL                            0x0004
  481. #define ALT                                0x0008
  482. #define SCROLLLOCK_ON                      0x0010
  483. #define NUMLOCK_ON                         0x0020
  484. #define CAPSLOCK_ON                        0x0040
  485. #define INSERT_ON                          0x0080
  486. #define LEFTCONTROL                        0x0100
  487. #define LEFTALT                            0x0200
  488. #define RIGHTCONTROL                       0x0400
  489. #define RIGHTALT                           0x0800
  490. #define SCROLLLOCK                         0x1000
  491. #define NUMLOCK                            0x2000
  492. #define CAPSLOCK                           0x4000
  493. #define SYSREQ                             0x8000
  494.  
  495. typedef struct _HOTKEY          /* htky */
  496.         {
  497.         USHORT fsHotKey;
  498.         UCHAR  uchScancodeMake;
  499.         UCHAR  uchScancodeBreak;
  500.         USHORT idHotKey;
  501.         } HOTKEY;
  502.  
  503. typedef HOTKEY *PHOTKEY;
  504.  
  505. typedef struct _MONITORPOSITION         /* mnpos */
  506.         {
  507.         USHORT fPosition;
  508.         USHORT index;
  509.         ULONG  pbInBuf;
  510.         USHORT offOutBuf;
  511.         } MONITORPOSITION;
  512.  
  513. typedef MONITORPOSITION  *PMONITORPOSITION;
  514.  
  515. typedef struct _RATEDELAY       /* rtdly */
  516.         {
  517.         USHORT usDelay;
  518.         USHORT usRate;
  519.         } RATEDELAY;
  520. typedef RATEDELAY  *PRATEDELAY;
  521.  
  522. typedef struct _CODEPAGEINFO    /* cpi */
  523.         {
  524.         PBYTE pbTransTable;
  525.         USHORT idCodePage;
  526.         USHORT idTable;
  527.         } CODEPAGEINFO;
  528. typedef *PCODEPAGEINFO;
  529.  
  530. typedef struct _CPID    /* cpid */
  531.         {
  532.         USHORT idCodePage;
  533.         USHORT Reserved;
  534.         } CPID;
  535. typedef CPID *PCPID;
  536.  
  537. typedef struct _LDTADDRINFO     /* ldtaddr */
  538.         {
  539.         PULONG pulPhysAddr;
  540.         USHORT cb;
  541.         } LDTADDRINFO;
  542.  
  543. typedef LDTADDRINFO *PLDTADDRINFO;
  544.  
  545. typedef struct _PTRDRAWDATA     /* ptrdd */
  546.         {
  547.         USHORT cb;
  548.         USHORT usConfig;
  549.         USHORT usFlag;
  550.         } PTRDRAWDATA;
  551. #pragma pack()                           /*restore default packing */
  552.  
  553. typedef PTRDRAWDATA *PPTRDRAWDATA;
  554.  
  555. #endif /* __BSEDEV__ */
  556.  
  557. #ifdef __IBMC__
  558. #pragma checkout( suspend )
  559.    #ifndef __CHKHDR__
  560.       #pragma checkout( resume )
  561.    #endif
  562. #pragma checkout( resume )
  563. #endif
  564.