home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / header45.zip / bsedev.h < prev    next >
C/C++ Source or Header  |  1999-04-30  |  31KB  |  862 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. /* NOINC */
  13. #if __IBMC__ || __IBMCPP__
  14.    #pragma info( none )
  15.       #ifndef __CHKHDR__
  16.          #pragma info( none )
  17.       #endif
  18.    #pragma info( restore )
  19. #endif
  20. #ifdef __cplusplus
  21.       extern "C" {
  22. #endif
  23. /* INC */
  24.  
  25. #ifndef __BSEDEV__
  26. /* NOINC */
  27. #define __BSEDEV__
  28. /* INC */
  29.  
  30. #define BSEDEV_INCLUDED
  31.  
  32. /* Input and Output Control Categories */
  33.  
  34. #define IOCTL_ASYNC                        0x0001
  35. #define IOCTL_SCR_AND_PTRDRAW              0x0003
  36. #define IOCTL_KEYBOARD                     0x0004
  37. #define IOCTL_PRINTER                      0x0005
  38. #define IOCTL_LIGHTPEN                     0x0006
  39. #define IOCTL_POINTINGDEVICE               0x0007
  40. #define IOCTL_DISK                         0x0008
  41. #define IOCTL_PHYSICALDISK                 0x0009
  42. #define IOCTL_MONITOR                      0x000A
  43. #define IOCTL_GENERAL                      0x000B
  44. #define IOCTL_POWER                        0x000C
  45. #define IOCTL_OEMHLP                       0x0080
  46. #define IOCTL_TESTCFG_SYS                  0x0080
  47. #define IOCTL_CDROMDISK                    0x0080
  48. #define IOCTL_CDROMAUDIO                   0x0081
  49. #define IOCTL_TOUCH_DEVDEP                 0x0081
  50. #define IOCTL_TOUCH_DEVINDEP               0x0081
  51.  
  52. /* Serial-Device Control */
  53.  
  54. #define ASYNC_SETBAUDRATE                  0x0041
  55. #define ASYNC_SETLINECTRL                  0x0042
  56. #define ASYNC_EXTSETBAUDRATE               0x0043
  57. #define ASYNC_TRANSMITIMM                  0x0044
  58. #define ASYNC_SETBREAKOFF                  0x0045
  59. #define ASYNC_SETMODEMCTRL                 0x0046
  60. #define ASYNC_SETBREAKON                   0x004B
  61. #define ASYNC_STOPTRANSMIT                 0x0047
  62. #define ASYNC_STARTTRANSMIT                0x0048
  63. #define ASYNC_SETDCBINFO                   0x0053
  64. #define ASYNC_SETENHANCEDMODEPARMS         0x0054
  65. #define ASYNC_GETBAUDRATE                  0x0061
  66. #define ASYNC_GETLINECTRL                  0x0062
  67. #define ASYNC_EXTGETBAUDRATE               0X0063
  68. #define ASYNC_GETCOMMSTATUS                0x0064
  69. #define ASYNC_GETLINESTATUS                0x0065
  70. #define ASYNC_GETMODEMOUTPUT               0x0066
  71. #define ASYNC_GETMODEMINPUT                0x0067
  72. #define ASYNC_GETINQUECOUNT                0x0068
  73. #define ASYNC_GETOUTQUECOUNT               0x0069
  74. #define ASYNC_GETCOMMERROR                 0x006D
  75. #define ASYNC_GETCOMMEVENT                 0x0072
  76. #define ASYNC_GETDCBINFO                   0x0073
  77. #define ASYNC_GETENHANCEDMODEPARMS         0x0074
  78.  
  79. /* Screen/Pointer-Draw Control */
  80.  
  81. #define SCR_ALLOCLDT                       0x0070
  82. #define SCR_DEALLOCLDT                     0x0071
  83. #define PTR_GETPTRDRAWADDRESS              0x0072
  84. #define VID_INITCALLVECTOR                 0X0073
  85. #define SCR_ABIOSPASSTHRU                  0X0074
  86. #define SCR_ALLOCLDTOFF                    0x0075
  87. #define SCR_ALLOCLDTBGVAL                  0X0076
  88. #define SCR_ALLOCVIDEOBUFFER               0X007E
  89. #define SCR_GETROMFONTADDR                 0X007F
  90.  
  91. /* Keyboard Control */
  92.  
  93. #define KBD_SETTRANSTABLE                  0x0050
  94. #define KBD_SETINPUTMODE                   0x0051
  95. #define KBD_SETINTERIMFLAG                 0x0052
  96. #define KBD_SETSHIFTSTATE                  0x0053
  97. #define KBD_SETTYPAMATICRATE               0x0054
  98. #define KBD_SETFGNDSCREENGRP               0x0055
  99. #define KBD_SETSESMGRHOTKEY                0x0056
  100. #define KBD_SETFOCUS                       0x0057
  101. #define KBD_SETKCB                         0x0058
  102. #define KBD_SETREADNOTIFICATION            0X0059
  103. #define KBD_ALTERKBDLED                    0X005A
  104. #define KBD_SETNLS                         0x005C
  105. #define KBD_CREATE                         0x005D
  106. #define KBD_DESTROY                        0x005E
  107. #define KBD_GETINPUTMODE                   0x0071
  108. #define KBD_GETINTERIMFLAG                 0x0072
  109. #define KBD_GETSHIFTSTATE                  0x0073
  110. #define KBD_READCHAR                       0x0074
  111. #define KBD_PEEKCHAR                       0x0075
  112. #define KBD_GETSESMGRHOTKEY                0x0076
  113. #define KBD_GETKEYBDTYPE                   0x0077
  114. #define KBD_GETCODEPAGEID                  0x0078
  115. #define KBD_XLATESCAN                      0x0079
  116. #define KBD_QUERYKBDHARDWAREID             0X007A
  117. #define KBD_QUERYKBDCODEPAGESUPPORT        0X007B
  118.  
  119. /* Printer Control */
  120.  
  121. #define PRT_QUERYJOBHANDLE                 0x0021
  122. #define PRT_SETFRAMECTL                    0x0042
  123. #define PRT_SETINFINITERETRY               0x0044
  124. #define PRT_INITPRINTER                    0x0046
  125. #define PRT_ACTIVATEFONT                   0x0048
  126. #define PRT_SETPRINTJOBTITLE               0x004D
  127. #define PRT_SETIRQTIMEOUT                  0x004E
  128. #define PRT_SETCOMMMODE                    0x0052
  129. #define PRT_SETDATAXFERMODE                0x0053
  130. #define PRT_GETFRAMECTL                    0x0062
  131. #define PRT_GETINFINITERETRY               0x0064
  132. #define PRT_GETPRINTERSTATUS               0x0066
  133. #define PRT_QUERYACTIVEFONT                0x0069
  134. #define PRT_VERIFYFONT                     0x006A
  135. #define PRT_QUERYIRQTIMEOUT                0x006E
  136. #define PRT_QUERYCOMMMODE                  0x0072
  137. #define PRT_QUERYDATAXFERMODE              0x0073
  138. #define PRT_QUERDEVICEID                   0x0074
  139.  
  140. /* Pointing-Device (Mouse) Control */
  141.  
  142. #define MOU_ALLOWPTRDRAW                   0x0050
  143. #define MOU_UPDATEDISPLAYMODE              0x0051
  144. #define MOU_SCREENSWITCH                   0x0052
  145. #define MOU_SETSCALEFACTORS                0x0053
  146. #define MOU_SETEVENTMASK                   0x0054
  147. #define MOU_SETHOTKEYBUTTON                0x0055
  148. #define MOU_REASSIGNTHRESHOLDVALUES        0X0055
  149. #define MOU_SETPTRSHAPE                    0x0056
  150. #define MOU_DRAWPTR                        0x0057
  151. #define MOU_UNMARKCOLLISIONAREA            0X0057
  152. #define MOU_REMOVEPTR                      0x0058
  153. #define MOU_MARKCOLLISIONAREA              0X0058
  154. #define MOU_SETPTRPOS                      0x0059
  155. #define MOU_SETPROTDRAWADDRESS             0x005A
  156. #define MOU_SETREALDRAWADDRESS             0x005B
  157. #define MOU_SETMOUSTATUS                   0x005C
  158. #define MOU_DISPLAYMODECHANGE              0x005D
  159. #define MOU_GETBUTTONCOUNT                 0x0060
  160. #define MOU_GETMICKEYCOUNT                 0x0061
  161. #define MOU_GETMOUSTATUS                   0x0062
  162. #define MOU_READEVENTQUE                   0x0063
  163. #define MOU_GETQUESTATUS                   0x0064
  164. #define MOU_GETEVENTMASK                   0x0065
  165. #define MOU_GETSCALEFACTORS                0x0066
  166. #define MOU_GETPTRPOS                      0x0067
  167. #define MOU_GETPTRSHAPE                    0x0068
  168. #define MOU_GETHOTKEYBUTTON                0x0069
  169. #define MOU_QUERYTHRESHOLDVALUES           0x0069
  170. #define MOU_VER                            0x006A
  171. #define MOU_QUERYPOINTERID                 0X006B
  172.  
  173. /* Disk/Diskette Control */
  174.  
  175. #define DSK_LOCKDRIVE                      0x0000
  176. #define DSK_UNLOCKDRIVE                    0x0001
  177. #define DSK_REDETERMINEMEDIA               0x0002
  178. #define DSK_SETLOGICALMAP                  0x0003
  179. #define DSK_BEGINFORMAT                    0X0004
  180. #define DSK_BLOCKREMOVABLE                 0x0020
  181. #define DSK_GETLOGICALMAP                  0x0021
  182. #define DSK_UNLOCKEJECTMEDIA               0X0040
  183. #define DSK_SETDEVICEPARAMS                0x0043
  184. #define DSK_WRITETRACK                     0x0044
  185. #define DSK_FORMATVERIFY                   0x0045
  186. #define DSK_DISKETTECONTROL                0X005D
  187. #define DSK_QUERYMEDIASENSE                0X0060
  188. #define DSK_GETDEVICEPARAMS                0x0063
  189. #define DSK_READTRACK                      0x0064
  190. #define DSK_VERIFYTRACK                    0x0065
  191. #define DSK_GETLOCKSTATUS                  0X0066
  192.  
  193. /* Physical-Disk Control */
  194.  
  195. #define PDSK_LOCKPHYSDRIVE                 0x0000
  196. #define PDSK_UNLOCKPHYSDRIVE               0x0001
  197. #define PDSK_WRITEPHYSTRACK                0x0044
  198. #define PDSK_GETPHYSDEVICEPARAMS           0x0063
  199. #define PDSK_READPHYSTRACK                 0x0064
  200. #define PDSK_VERIFYPHYSTRACK               0x0065
  201.  
  202. /* Character-Monitor Control */
  203. #define MON_REGISTERMONITOR                0x0040
  204.  
  205. /* General Device Control */
  206.  
  207. #define DEV_FLUSHINPUT                     0x0001
  208. #define DEV_FLUSHOUTPUT                    0x0002
  209. #define DEV_SYSTEMNOTIFYPDD                0X0041
  210. #define DEV_QUERYMONSUPPORT                0x0060
  211.  
  212. /* Advanced Power Management */
  213.  
  214. #define POWER_SENDPOWEREVENT               0X0040
  215. #define POWER_SETPOWEREVENTRES             0X0041
  216. #define POWER_GETPOWERSTATUS               0X0060
  217. #define POWER_GETPOWEREVENT                0X0061
  218. #define POWER_GETPOWERINFO                 0X0062
  219.  
  220. /* OEMHlp */
  221.  
  222. #define OEMHLP_GETOEMADAPTIONINFO          0X0000
  223. #define OEMHLP_GETMACHINEINFO              0X0001
  224. #define OEMHLP_GETDISPLAYCOMBCODE          0X0002
  225. #define OEMHLP_GETVIDEOFONTS               0X0003
  226. #define OEMHLP_READEISACONFIGINFO          0X0004
  227. #define OEMHLP_GETROMBIOSINFO              0X0005
  228. #define OEMHLP_GETMISCVIDEOINFO            0X0006
  229. #define OEMHLP_GETVIDEOADAPTER             0X0007
  230. #define OEMHLP_GETSVGAINFO                 0X0008
  231. #define OEMHLP_GETMEMINFO                  0X0009
  232. #define OEMHLP_GETDMQSINFO                 0X000A
  233. #define OEMHLP_PCI                         0x000B
  234. #define OEMHLP_QUERYDISKINFO               0x000E
  235.  
  236.  /* Test System Config */
  237.  
  238. #define TESTCFG_SYS_GETBIOSADAPTER         0x0040
  239. #define TESTCFG_SYS_ISSUEINIOINSTR         0x0041
  240. #define TESTCFG_SYS_ISSUEOUTIOINSTR        0x0042
  241. #define TESTCFG_SYS_GETBUSARCH             0x0060
  242. #define TESTCFG_SYS_GETALLPOSIDS           0x0061
  243. #define TESTCFG_SYS_GETALLEISAIDS          0x0062
  244.  
  245. /* CDROM Drive and Disk */
  246.  
  247. #define CDROMDISK_RESETDRIVE               0X0040
  248. #define CDROMDISK_EJECTDISK                0X0044
  249. #define CDROMDISK_LOCKUNLOCKDOOR           0X0046
  250. #define CDROMDISK_SEEK                     0X0050
  251. #define CDROMDISK_DEVICESTATUS             0X0060
  252. #define CDROMDISK_GETDRIVER                0X0061
  253. #define CDROMDISK_GETSECTORSIZE            0X0063
  254. #define CDROMDISK_GETHEADLOC               0X0070
  255. #define CDROMDISK_READLONG                 0X0072
  256. #define CDROMDISK_GETVOLUMESIZE            0X0078
  257. #define CDROMDISK_GETUPC                   0X0079
  258.  
  259. /* CDROM Audio */
  260.  
  261. #define CDROMAUDIO_SETCHANNELCTRL          0X0040
  262. #define CDROMAUDIO_PLAYAUDIO               0X0050
  263. #define CDROMAUDIO_STOPAUDIO               0X0051
  264. #define CDROMAUDIO_RESUMEAUDIO             0X0052
  265. #define CDROMAUDIO_GETCHANNEL              0X0060
  266. #define CDROMAUDIO_GETAUDIODISK            0X0061
  267. #define CDROMAUDIO_GETAUDIOTRACK           0X0062
  268. #define CDROMAUDIO_GETSUBCHANNELQ          0X0063
  269. #define CDROMAUDIO_GETAUDIOSTATUS          0X0065
  270.  
  271. /* Touch device-dependent IOCtls */
  272.  
  273. #define TOUCH_DEVDEP_SETCALIBCONST         0X0052
  274. #define TOUCH_DEVDEP_READDATA              0X0053
  275. #define TOUCH_DEVDEP_SETDATAMODE           0X0054
  276. #define TOUCH_DEVDEP_SETCLICKLOCK          0X0055
  277. #define TOUCH_DEVDEP_SETTOUCHTHRESHOLD     0X0056
  278. #define TOUCH_DEVDEP_SETEMULXY             0X0057
  279. #define TOUCH_DEVDEP_SETDATAREPORTRATE     0X0058
  280. #define TOUCH_DEVDEP_SETLOWPASSFILTER      0X0059
  281. #define TOUCH_DEVDEP_WRITEMEMLOC           0X005A
  282. #define TOUCH_DEVDEP_GETCALIBCONST         0X0060
  283. #define TOUCH_DEVDEP_GETDATAMODE           0X0061
  284. #define TOUCH_DEVDEP_GETCLICKLOCK          0X0062
  285. #define TOUCH_DEVDEP_GETTOUCHTHRESHOLD     0X0063
  286. #define TOUCH_DEVDEP_GETEMULXY             0X0064
  287. #define TOUCH_DEVDEP_GETDATAREPORTRATE     0X0065
  288. #define TOUCH_DEVDEP_GETLOWPASSFILTER      0X0066
  289. #define TOUCH_DEVDEP_READMEMLOC            0X0067
  290.  
  291. /* Touch device-INdependent IOCtls */
  292.  
  293. #define TOUCH_DEVINDEP_SETCOORDSYS         0X0050
  294. #define TOUCH_DEVINDEP_SETSELECTMECH       0X0052
  295. #define TOUCH_DEVINDEP_SETEVENTMASK        0X0053
  296. #define TOUCH_DEVINDEP_SETQUEUESIZE        0X0054
  297. #define TOUCH_DEVINDEP_SETEMULSTATE        0X0055
  298. #define TOUCH_DEVINDEP_GETCOORDSYS         0X0060
  299. #define TOUCH_DEVINDEP_GETSELECTMECH       0X0062
  300. #define TOUCH_DEVINDEP_GETEVENTMASK        0X0063
  301. #define TOUCH_DEVINDEP_GETQUEUESIZE        0X0064
  302. #define TOUCH_DEVINDEP_GETEMULSTATE        0X0065
  303. #define TOUCH_DEVINDEP_GETREADEVENTQUEUE   0X0066
  304.  
  305. /* ASYNC_GETCOMMERROR, ASYNC_SETBREAKOFF, ASYNC_SETBREAKON,
  306.  * ASYNC_SETMODEMCTRL
  307.  */
  308.  
  309. #define RX_QUE_OVERRUN                     0x0001
  310. #define RX_HARDWARE_OVERRUN                0x0002
  311. #define PARITY_ERROR                       0x0004
  312. #define FRAMING_ERROR                      0x0008
  313.  
  314. /* ASYNC_GETCOMMEVENT */
  315. #define CHAR_RECEIVED                      0x0001
  316. #define LAST_CHAR_SENT                     0x0004
  317. #define CTS_CHANGED                        0x0008
  318. #define DSR_CHANGED                        0x0010
  319. #define DCD_CHANGED                        0x0020
  320. #define BREAK_DETECTED                     0x0040
  321. #define ERROR_OCCURRED                     0x0080
  322. #define RI_DETECTED                        0x0100
  323.  
  324. /* ASYNC_GETCOMMSTATUS */
  325. #define TX_WAITING_FOR_CTS                 0x0001
  326. #define TX_WAITING_FOR_DSR                 0x0002
  327. #define TX_WAITING_FOR_DCD                 0x0004
  328. #define TX_WAITING_FOR_XON                 0x0008
  329. #define TX_WAITING_TO_SEND_XON             0x0010
  330. #define TX_WAITING_WHILE_BREAK_ON          0x0020
  331. #define TX_WAITING_TO_SEND_IMM             0x0040
  332. #define RX_WAITING_FOR_DSR                 0x0080
  333.  
  334. /* ASYNC_GETLINESTATUS */
  335. #define WRITE_REQUEST_QUEUED               0x0001
  336. #define DATA_IN_TX_QUE                     0x0002
  337. #define HARDWARE_TRANSMITTING              0x0004
  338. #define CHAR_READY_TO_SEND_IMM             0x0008
  339. #define WAITING_TO_SEND_XON                0x0010
  340. #define WAITING_TO_SEND_XOFF               0x0020
  341.  
  342. /* ASYNC_GETMODEMINPUT */
  343. #define CTS_ON                             0x10
  344. #define DSR_ON                             0x20
  345. #define RI_ON                              0x40
  346. #define DCD_ON                             0x80
  347.  
  348. /* DSK_SETDEVICEPARAMS */
  349. #define BUILD_BPB_FROM_MEDIUM              0x00
  350. #define REPLACE_BPB_FOR_DEVICE             0x01
  351. #define REPLACE_BPB_FOR_MEDIUM             0x02
  352.  
  353. /* DSK_GETDEVICEPARAMS */
  354. #define GET_BPB_FROM_DEVICE                0x00
  355. #define GET_BPB_FROM_MEDIUM                0x01
  356.  
  357. /* KBD_GETINPUTMODE, KBD_PEEKCHAR, KBD_SETINPUTMODE*/
  358. #define ASCII_MODE                         0x00
  359. #define BINARY_MODE                        0x80
  360.  
  361. /* KBD_GETINTERIMFLAG */
  362. #define CONVERSION_REQUEST                 0x20
  363. #define INTERIM_CHAR                       0x80
  364.  
  365. /* KBD_GETSESMGRHOTKEY */
  366. #define HOTKEY_MAX_COUNT                   0x0000
  367. #define HOTKEY_CURRENT_COUNT               0x0001
  368.  
  369. /* KBD_PEEKCHAR */
  370. #define KBD_DATA_RECEIVED                  0x0001
  371. #define KBD_DATA_BINARY                    0x8000
  372.  
  373. /* KBD_READCHAR */
  374. #define KBD_READ_WAIT                      0x0000
  375. #define KBD_READ_NOWAIT                    0x8000
  376.  
  377. /* KBD_SETINPUTMODE */
  378. #define SHIFT_REPORT_MODE                  0x01
  379.  
  380. #ifndef INCL_MOU
  381.  
  382.    #define MOUSE_MOTION                    0x0001
  383.    #define MOUSE_MOTION_WITH_BN1_DOWN      0x0002
  384.    #define MOUSE_BN1_DOWN                  0x0004
  385.    #define MOUSE_MOTION_WITH_BN2_DOWN      0x0008
  386.    #define MOUSE_BN2_DOWN                  0x0010
  387.    #define MOUSE_MOTION_WITH_BN3_DOWN      0x0020
  388.    #define MOUSE_BN3_DOWN                  0x0040
  389.  
  390.    #define MHK_BUTTON1                     0x0001
  391.    #define MHK_BUTTON2                     0x0002
  392.    #define MHK_BUTTON3                     0x0004
  393.  
  394.    #define MOU_NOWAIT                      0x0000
  395.    #define MOU_WAIT                        0x0001
  396.  
  397. #endif /* #ifndef INCL_MOU */
  398.  
  399. /* MOU_GETHOTKEYBUTTON, MOU_SETHOTKEYBUTTON */
  400. #define MHK_NO_HOTKEY                      0x0000
  401.  
  402. /* MOU_GETMOUSTATUS */
  403. #define MOUSE_QUEUEBUSY                    0x0001
  404. #define MOUSE_BLOCKREAD                    0x0002
  405. #define MOUSE_FLUSH                        0x0004
  406. #define MOUSE_UNSUPPORTED_MODE             0x0008
  407. #define MOUSE_DISABLED                     0x0100
  408. #define MOUSE_MICKEYS                      0x0200
  409.  
  410. /* PRT_GETPRINTERSTATUS */
  411. #define PRINTER_TIMEOUT                    0x0001
  412. #define PRINTER_IO_ERROR                   0x0008
  413. #define PRINTER_SELECTED                   0x0010
  414. #define PRINTER_OUT_OF_PAPER               0x0020
  415. #define PRINTER_ACKNOWLEDGED               0x0040
  416. #define PRINTER_NOT_BUSY                   0x0080
  417.  
  418. /* fbCtlHndShake */
  419. #define MODE_DTR_CONTROL                   0x01
  420. #define MODE_DTR_HANDSHAKE                 0x02
  421. #define MODE_CTS_HANDSHAKE                 0x08
  422. #define MODE_DSR_HANDSHAKE                 0x10
  423. #define MODE_DCD_HANDSHAKE                 0x20
  424. #define MODE_DSR_SENSITIVITY               0x40
  425.  
  426. /* fbFlowReplace */
  427. #define MODE_AUTO_TRANSMIT                 0x01
  428. #define MODE_AUTO_RECEIVE                  0x02
  429. #define MODE_ERROR_CHAR                    0x04
  430. #define MODE_NULL_STRIPPING                0x08
  431. #define MODE_BREAK_CHAR                    0x10
  432. #define MODE_RTS_CONTROL                   0x40
  433. #define MODE_RTS_HANDSHAKE                 0x80
  434. #define MODE_TRANSMIT_TOGGLE               0xC0
  435.  
  436. /* fbTimeout */
  437. #define MODE_NO_WRITE_TIMEOUT              0x01
  438. #define MODE_READ_TIMEOUT                  0x02
  439. #define MODE_WAIT_READ_TIMEOUT             0x04
  440. #define MODE_NOWAIT_READ_TIMEOUT           0x06
  441.  
  442. typedef struct _DCBINFO         /* dcbinf */
  443.         {
  444.         USHORT usWriteTimeout;
  445.         USHORT usReadTimeout;
  446.         BYTE   fbCtlHndShake;
  447.         BYTE   fbFlowReplace;
  448.         BYTE   fbTimeout;
  449.         BYTE   bErrorReplacementChar;
  450.         BYTE   bBreakReplacementChar;
  451.         BYTE   bXONChar;
  452.         BYTE   bXOFFChar;
  453.         } DCBINFO, *PDCBINFO;
  454.  
  455. /* NOINC */
  456. #pragma pack(1)
  457. /* INC */
  458.  
  459. typedef struct _TRACKLAYOUT     /* trckl */
  460.         {
  461.         BYTE   bCommand;
  462.         USHORT usHead;
  463.         USHORT usCylinder;
  464.         USHORT usFirstSector;
  465.         USHORT cSectors;
  466.         struct {
  467.                USHORT usSectorNumber;
  468.                USHORT usSectorSize;
  469.                } TrackTable[1];
  470.         } TRACKLAYOUT, *PTRACKLAYOUT;
  471.  
  472. /* NOINC */
  473. #pragma pack()
  474. /* INC */
  475.  
  476. #define DEVTYPE_48TPI                      0x0000
  477. #define DEVTYPE_96TPI                      0x0001
  478. #define DEVTYPE_35                         0x0002
  479. #define DEVTYPE_8SD                        0x0003
  480. #define DEVTYPE_8DD                        0x0004
  481. #define DEVTYPE_FIXED                      0x0005
  482. #define DEVTYPE_TAPE                       0x0006
  483. #define DEVTYPE_UNKNOWN                    0x0007
  484.  
  485.  
  486. /* NOINC */
  487. #pragma pack(1)
  488. /* INC */
  489.  
  490. typedef struct _BIOSPARAMETERBLOCK      /* bspblk */
  491.         {
  492.         USHORT usBytesPerSector;
  493.         BYTE   bSectorsPerCluster;
  494.         USHORT usReservedSectors;
  495.         BYTE   cFATs;
  496.         USHORT cRootEntries;
  497.         USHORT cSectors;
  498.         BYTE   bMedia;
  499.         USHORT usSectorsPerFAT;
  500.         USHORT usSectorsPerTrack;
  501.         USHORT cHeads;
  502.         ULONG  cHiddenSectors;
  503.         ULONG  cLargeSectors;
  504.         BYTE   abReserved[6];
  505.         USHORT cCylinders;
  506.         BYTE   bDeviceType;
  507.         USHORT fsDeviceAttr;
  508.         } BIOSPARAMETERBLOCK;
  509. typedef BIOSPARAMETERBLOCK *PBIOSPARAMETERBLOCK;
  510.  
  511. /* NOINC */
  512. #pragma pack()
  513. /* INC */
  514.  
  515. typedef struct _SCREENGROUP     /* scrgrp */
  516.         {
  517.         USHORT idScreenGrp;
  518.         USHORT fTerminate;
  519.         } SCREENGROUP;
  520. typedef  SCREENGROUP *PSCREENGROUP;
  521.  
  522. typedef struct _FRAME           /* frm */
  523.         {
  524.         BYTE bCharsPerLine;
  525.         BYTE bLinesPerInch;
  526.         } FRAME;
  527. typedef FRAME *PFRAME;
  528.  
  529. typedef struct _KBDTYPE         /* kbdtyp */
  530.         {
  531.         USHORT usType;
  532.         USHORT reserved1;
  533.         USHORT reserved2;
  534.         } KBDTYPE;
  535. typedef KBDTYPE *PKBDTYPE;
  536.  
  537. typedef struct _LINECONTROL     /* lnctl */
  538.         {
  539.         BYTE bDataBits;
  540.         BYTE bParity;
  541.         BYTE bStopBits;
  542.         BYTE fTransBreak;
  543.         } LINECONTROL;
  544. typedef LINECONTROL *PLINECONTROL;
  545.  
  546. /* MODEMSTATUS.fbModemOn, ASYNC_GETMODEMOUTPUT */
  547. #define DTR_ON                             0x01
  548. #define RTS_ON                             0x02
  549.  
  550. /* MODEMSTATUS.fbModemOff */
  551. #define DTR_OFF                            0xFE
  552. #define RTS_OFF                            0xFD
  553.  
  554. typedef struct _MODEMSTATUS     /* mdmst */
  555.         {
  556.         BYTE fbModemOn;
  557.         BYTE fbModemOff;
  558.         } MODEMSTATUS;
  559. typedef MODEMSTATUS *PMODEMSTATUS;
  560.  
  561. /* NOINC */
  562. #pragma pack(1)
  563. /* INC */
  564.  
  565. typedef struct _TRACKFORMAT     /* trckfmt */
  566.         {
  567.         BYTE bCommand;
  568.         USHORT usHead;
  569.         USHORT usCylinder;
  570.         USHORT usReserved;
  571.         USHORT cSectors;
  572.         struct {
  573.                BYTE bCylinder;
  574.                BYTE bHead;
  575.                BYTE idSector;
  576.                BYTE bBytesSector;
  577.                } FormatTable[1];
  578.         } TRACKFORMAT;
  579.  
  580. typedef TRACKFORMAT *PTRACKFORMAT;
  581.  
  582. /* NOINC */
  583. #pragma pack()
  584. /* INC */
  585.  
  586. typedef struct _RXQUEUE         /* rxq */
  587.         {
  588.         USHORT cch;
  589.         USHORT cb;
  590.         } RXQUEUE;
  591. typedef RXQUEUE *PRXQUEUE;
  592.  
  593. typedef struct _DEVICEPARAMETERBLOCK    /* dvpblck */
  594.         {
  595.         USHORT reserved1;
  596.         USHORT cCylinders;
  597.         USHORT cHeads;
  598.         USHORT cSectorsPerTrack;
  599.         USHORT reserved2;
  600.         USHORT reserved3;
  601.         USHORT reserved4;
  602.         USHORT reserved5;
  603.         } DEVICEPARAMETERBLOCK;
  604.  
  605. typedef DEVICEPARAMETERBLOCK     *PDEVICEPARAMETERBLOCK;
  606.  
  607. /* The following must be packed on 2 bytes boundary */
  608. /* NOINC */
  609. #pragma pack(2)
  610. /* INC */
  611.  
  612. typedef struct _PTRDRAWFUNCTION         /* ptrdfnc */
  613.         {
  614.         USHORT usReturnCode;
  615.         PFN pfnDraw;
  616.         PCH pchDataSeg;
  617.         } PTRDRAWFUNCTION;
  618.  
  619. typedef PTRDRAWFUNCTION *PPTRDRAWFUNCTION;
  620.  
  621. /* NOINC */
  622. #pragma pack()
  623. /* INC */
  624.  
  625. typedef struct _PTRDRAWADDRESS          /* ptrdaddr */
  626.         {
  627.         USHORT reserved;
  628.         PTRDRAWFUNCTION ptrdfnc;
  629.         } PTRDRAWADDRESS;
  630.  
  631. typedef PTRDRAWADDRESS  *PPTRDRAWADDRESS;
  632.  
  633. typedef struct _SHIFTSTATE      /* shftst */
  634.         {
  635.         USHORT fsState;
  636.         BYTE   fNLS;
  637.         } SHIFTSTATE;
  638.  
  639. typedef SHIFTSTATE  *PSHIFTSTATE;
  640.  
  641.  
  642.  
  643. /* HOTKEY.fsHotKey/SHIFTSTATE.fsState */
  644. #define RIGHTSHIFT                         0x0001
  645. #define LEFTSHIFT                          0x0002
  646. #define CONTROL                            0x0004
  647. #define ALT                                0x0008
  648. #define SCROLLLOCK_ON                      0x0010
  649. #define NUMLOCK_ON                         0x0020
  650. #define CAPSLOCK_ON                        0x0040
  651. #define INSERT_ON                          0x0080
  652. #define LEFTCONTROL                        0x0100
  653. #define LEFTALT                            0x0200
  654. #define RIGHTCONTROL                       0x0400
  655. #define RIGHTALT                           0x0800
  656. #define SCROLLLOCK                         0x1000
  657. #define NUMLOCK                            0x2000
  658. #define CAPSLOCK                           0x4000
  659. #define SYSREQ                             0x8000
  660.  
  661. typedef struct _HOTKEY          /* htky */
  662.         {
  663.         USHORT fsHotKey;
  664.         UCHAR  uchScancodeMake;
  665.         UCHAR  uchScancodeBreak;
  666.         USHORT idHotKey;
  667.         } HOTKEY;
  668.  
  669. typedef HOTKEY *PHOTKEY;
  670.  
  671. typedef struct _MONITORPOSITION         /* mnpos */
  672.         {
  673.         USHORT fPosition;
  674.         USHORT index;
  675.         ULONG  pbInBuf;
  676.         USHORT offOutBuf;
  677.         } MONITORPOSITION;
  678.  
  679. typedef MONITORPOSITION  *PMONITORPOSITION;
  680.  
  681. typedef struct _RATEDELAY       /* rtdly */
  682.         {
  683.         USHORT usDelay;
  684.         USHORT usRate;
  685.         } RATEDELAY;
  686. typedef RATEDELAY  *PRATEDELAY;
  687.  
  688. typedef struct _CODEPAGEINFO    /* cpi */
  689.         {
  690.         PBYTE pbTransTable;
  691.         USHORT idCodePage;
  692.         USHORT idTable;
  693.         } CODEPAGEINFO;
  694. typedef *PCODEPAGEINFO;
  695.  
  696. typedef struct _CPID    /* cpid */
  697.         {
  698.         USHORT idCodePage;
  699.         USHORT Reserved;
  700.         } CPID;
  701. typedef CPID *PCPID;
  702.  
  703. typedef struct _LDTADDRINFO     /* ldtaddr */
  704.         {
  705.         PULONG pulPhysAddr;
  706.         USHORT cb;
  707.         } LDTADDRINFO;
  708.  
  709. typedef LDTADDRINFO *PLDTADDRINFO;
  710.  
  711. typedef struct _PTRDRAWDATA     /* ptrdd */
  712.         {
  713.         USHORT cb;
  714.         USHORT usConfig;
  715.         USHORT usFlag;
  716.         } PTRDRAWDATA;
  717. #pragma pack()                           /*restore default packing */
  718.  
  719. typedef PTRDRAWDATA *PPTRDRAWDATA;
  720.  
  721.  
  722. /*
  723.  * SCREENDD IOCTL definitions
  724.  */
  725. #define SCREENDD_GETCURRENTBANK         0x00    /* Get current bank */
  726. #define SCREENDD_SETCURRENTBANK         0x01    /* Set current bank */
  727. #define SCREENDD_SVGA_ID                0x08    /* Get SVGA info IOCTL */
  728. #define SCREENDD_SVGA_OEM               0x09    /* Get OEM info IOCTL */
  729. #define SCREENDD_UPDATEMEMORY           0x0A    /* Update Memory    IOCTl   */
  730. #define SCREENDD_GETLINEARACCESS        0x0B    /* GetLinearAccess  IOCTl   */
  731. #define SCREENDD_GETGLOBALACCESS        0x0C    /* GetGlobalAccess  IOCTl   */
  732. #define SCREENDD_FREEGLOBALACCESS       0x0D    /* FreeGlobalAccess IOCTl   */
  733. #define SCREENDD_REGISTER_RING0_CALLER  0x0E    /* Register VVID as Ring0 PMI caller */
  734. #define SCREENDD_WAIT_ON_RING0_CALLER   0x0F    /* Wait for RING0 caller to register */
  735. /* this IOCTL is used internally between videopmi & screendd: */
  736. #define SCREENDD_SVGA_APM               0x10    /* Wait 4 APM */
  737. #define SCREENDD_GET_CS_ALIAS           0x11
  738. /*
  739. ** APM constants
  740. */
  741. #define APM_RESUME              1
  742. #define APM_SUSPEND             2
  743. #define APM_DISABLED            4
  744.  
  745. #define SCREENDD_CATEGORY               0x80
  746. #define SCREENDD_NAME                   "SCREEN$"
  747.  
  748. #define GETLINEAR_FLAG_MAPPHYSICAL      0x00000010L
  749. #define GETLINEAR_FLAG_MAPPROCESS       0x00000020L
  750. #define GETLINEAR_FLAG_MAPSHARED        0x00000400L
  751. #define GETLINEAR_FLAG_MAPATTACH        0x80000000L
  752.  
  753. #define EGA_BIT         4                /* EGA */
  754. #define VGA_BIT         8                /* VGA */
  755. #define EGAVGA_BIT      (EGA_BIT+VGA_BIT)/* EGA/VGA */
  756.  
  757.                                        /* SCREENDD_GETLINEARACCESS */
  758. typedef struct _GETLINIOCTLDATA {  /* */
  759.         ULONG   PacketLength;
  760.         ULONG   PhysicalAddress;
  761.         ULONG   ApertureSize;
  762.         PBYTE   LinearAddress;
  763.         ULONG   LinearFlags;
  764. } GETLINIOCTLDATA;
  765. typedef GETLINIOCTLDATA *PGETLINIOCTLDATA;
  766.  
  767.                                 /*  SCREENDD_SETCURRENTBANK/GETCURRENTBANK */
  768. typedef struct _BANKINFO {     /* */
  769.         ULONG  ulBankLength;
  770.         USHORT usBank;
  771.         USHORT usVideoModeType;
  772.         USHORT usReadWriteMode;
  773. } BANKINFO;
  774.  
  775. #define READ_BANK    0
  776. #define WRITE_BANK   1
  777. #define MODE_TEXT    0
  778. #define MODE_PLANAR  1
  779. #define MODE_LINEAR  2
  780.  
  781.                                  /* SCREENDD_GETGLOBALACCESS */
  782. typedef struct _GLOBALIOCTLDATA {   /* */
  783.         ULONG   ProcessAddress;
  784.         ULONG   AddressLength;
  785.         ULONG   GlobalAddress;
  786. } GLOBALIOCTLDATA;
  787.                                            /* data packet for SCREENDD_SVGA_ID */
  788.         /* Rather than cause build troubles using PCI.H, */
  789.         /* the new fields must be cast during use */
  790. typedef struct _OEMSVGAINFO { /* */
  791.         USHORT AdapterType;
  792.         USHORT ChipType;
  793.         ULONG  Memory;
  794.                /* PCI_CFG_BASE_ADDR_COUNT = 6 */
  795.         ULONG  aulPCIRangeSize [6];
  796.                /* PCI_CFG_SPACE_SIZE = 0x0100 = 256 */
  797.         BYTE   abPCIConfiguration [256];
  798. } OEMSVGAINFO;
  799.                                            /* data packet for SCREENDD_SVGA_OEM */
  800. /* OEM data packet format must contain total length in bytes as its first word. */
  801. /* The rest of it can be in manufacturer/adapter specific format. */
  802.  
  803. typedef struct _OEMINFO {    /* */
  804.         ULONG  OEMLength;
  805.         USHORT Manufacturer;
  806.         ULONG  ManufacturerData;
  807.         USHORT ManufacturerModel;
  808. } OEMINFO;
  809.                                           /* paramter packet for GETGLOBALACCESS */
  810. typedef struct _GETGLOBALPACKET {  /* */
  811.         ULONG   GlobalPktLength;
  812.         GLOBALIOCTLDATA GlobalPktData[1];
  813. } GETGLOBALPACKET;
  814.  
  815.  
  816. /* NOINC */
  817. #pragma pack(1)
  818. /* INC */
  819.  
  820. typedef struct _OEMHLPDISKINFO {  /* */
  821.    unsigned short ODI_Reserved;         /* Reserved                           */
  822.    unsigned short ODI_Flags;            /* Information flags                  */
  823.    unsigned long  ODI_Cylinders;        /* Number of Phys Cylinders           */
  824.    unsigned long  ODI_Heads;            /* Number of Phys Heads               */
  825.    unsigned long  ODI_SectorsPerTrack;  /* Number of Phys sectors per track   */
  826.    unsigned long  ODI_PhysSectors_low;  /* Number of Phys Sectors (low dword) */
  827.    unsigned long  ODI_PhysSectors_high; /* Number of Phys Sectors (high dword)*/
  828.    unsigned short ODI_SectorSize;       /* Number of bytes in a sector        */
  829.    unsigned long  ODI_Reserved2;        /* Reserved                           */
  830.    unsigned short ODI_IOPort;           /* I/O port base address              */
  831.    unsigned short ODI_ControlPort;      /* Control port address               */
  832.    unsigned char  ODI_HeadRegisterUN;   /* Head Register upper nibble         */
  833.    unsigned char  ODI_Reserved3;        /* Reserved                           */
  834.    unsigned char  ODI_IRQ;              /* IRQ information                    */
  835.    unsigned char  ODI_RWMult_BlkCnt;    /* Block count, ATA R/W Mult commands */
  836.    unsigned char  ODI_DMAInfo;          /* DMA information                    */
  837.    unsigned char  ODI_PIOInfo;          /* PIO information                    */
  838.    unsigned short ODI_HWFlags;          /* hardware specific option flags     */
  839.    unsigned short ODI_Reserved4;        /* Reserved                           */
  840.    unsigned char  ODI_Revision;         /* Revision level of DPT Extension    */
  841.    unsigned char  ODI_Reserved5;        /* Reserved                           */
  842. } OEMHLPDISKINFO;
  843.  
  844. /* NOINC */
  845. #pragma pack()
  846. /* INC */
  847.  
  848. #endif /* __BSEDEV__ */
  849.  
  850. /* NOINC */
  851. #ifdef __cplusplus
  852.         }
  853. #endif
  854. #if __IBMC__ || __IBMCPP__
  855.    #pragma info( none )
  856.       #ifndef __CHKHDR__
  857.          #pragma info( restore )
  858.       #endif
  859.    #pragma info( restore )
  860. #endif
  861. /* INC */
  862.