ntddser.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. /*
  2. * ntddser.h
  3. *
  4. * Serial port driver interface
  5. *
  6. * This file is part of the w32api package.
  7. *
  8. * Contributors:
  9. * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10. *
  11. * THIS SOFTWARE IS NOT COPYRIGHTED
  12. *
  13. * This source code is offered for use in the public domain. You may
  14. * use, modify or distribute it freely.
  15. *
  16. * This code is distributed in the hope that it will be useful but
  17. * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18. * DISCLAIMED. This includes but is not limited to warranties of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20. *
  21. */
  22. #ifndef _NTDDSER_
  23. #define _NTDDSER_
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* GUIDs */
  28. DEFINE_GUID(GUID_DEVINTERFACE_COMPORT,
  29. 0x86e0d1e0, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73);
  30. #define GUID_CLASS_COMPORT GUID_DEVINTERFACE_COMPORT
  31. DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,
  32. 0x4D36E978, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18);
  33. #define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR
  34. #define IOCTL_SERIAL_CLEAR_STATS \
  35. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 36, METHOD_BUFFERED, FILE_ANY_ACCESS)
  36. #define IOCTL_SERIAL_CLR_DTR \
  37. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
  38. #define IOCTL_SERIAL_CLR_RTS \
  39. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
  40. #define IOCTL_SERIAL_CONFIG_SIZE \
  41. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
  42. #define IOCTL_SERIAL_GET_BAUD_RATE \
  43. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
  44. #define IOCTL_SERIAL_GET_CHARS \
  45. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
  46. #define IOCTL_SERIAL_GET_COMMSTATUS \
  47. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 27, METHOD_BUFFERED, FILE_ANY_ACCESS)
  48. #define IOCTL_SERIAL_GET_DTRRTS \
  49. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
  50. #define IOCTL_SERIAL_GET_HANDFLOW \
  51. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
  52. #define IOCTL_SERIAL_GET_LINE_CONTROL \
  53. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
  54. #define IOCTL_SERIAL_GET_MODEM_CONTROL \
  55. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS)
  56. #define IOCTL_SERIAL_GET_MODEMSTATUS \
  57. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
  58. #define IOCTL_SERIAL_GET_PROPERTIES \
  59. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
  60. #define IOCTL_SERIAL_GET_STATS \
  61. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 35, METHOD_BUFFERED, FILE_ANY_ACCESS)
  62. #define IOCTL_SERIAL_GET_TIMEOUTS \
  63. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
  64. #define IOCTL_SERIAL_GET_WAIT_MASK \
  65. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 16, METHOD_BUFFERED, FILE_ANY_ACCESS)
  66. #define IOCTL_SERIAL_IMMEDIATE_CHAR \
  67. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
  68. #define IOCTL_SERIAL_LSRMST_INSERT \
  69. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
  70. #define IOCTL_SERIAL_PURGE \
  71. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS)
  72. #define IOCTL_SERIAL_RESET_DEVICE \
  73. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
  74. #define IOCTL_SERIAL_SET_BAUD_RATE \
  75. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
  76. #define IOCTL_SERIAL_SET_BREAK_ON \
  77. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
  78. #define IOCTL_SERIAL_SET_BREAK_OFF \
  79. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
  80. #define IOCTL_SERIAL_SET_CHARS \
  81. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
  82. #define IOCTL_SERIAL_SET_DTR \
  83. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
  84. #define IOCTL_SERIAL_SET_FIFO_CONTROL \
  85. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
  86. #define IOCTL_SERIAL_SET_HANDFLOW \
  87. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
  88. #define IOCTL_SERIAL_SET_LINE_CONTROL \
  89. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
  90. #define IOCTL_SERIAL_SET_MODEM_CONTROL \
  91. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS)
  92. #define IOCTL_SERIAL_SET_QUEUE_SIZE \
  93. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
  94. #define IOCTL_SERIAL_SET_RTS \
  95. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
  96. #define IOCTL_SERIAL_SET_TIMEOUTS \
  97. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
  98. #define IOCTL_SERIAL_SET_WAIT_MASK \
  99. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS)
  100. #define IOCTL_SERIAL_SET_XOFF \
  101. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
  102. #define IOCTL_SERIAL_SET_XON \
  103. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
  104. #define IOCTL_SERIAL_WAIT_ON_MASK \
  105. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 18, METHOD_BUFFERED, FILE_ANY_ACCESS)
  106. #define IOCTL_SERIAL_XOFF_COUNTER \
  107. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 28, METHOD_BUFFERED, FILE_ANY_ACCESS)
  108. #define IOCTL_SERIAL_INTERNAL_BASIC_SETTINGS \
  109. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
  110. #define IOCTL_SERIAL_INTERNAL_CANCEL_WAIT_WAKE \
  111. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
  112. #define IOCTL_SERIAL_INTERNAL_DO_WAIT_WAKE \
  113. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
  114. #define IOCTL_SERIAL_INTERNAL_RESTORE_SETTINGS \
  115. CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
  116. #define IOCTL_SERENUM_PORT_DESC \
  117. CTL_CODE (FILE_DEVICE_SERENUM, 130, METHOD_BUFFERED, FILE_ANY_ACCESS)
  118. #define IOCTL_SERENUM_GET_PORT_NAME \
  119. CTL_CODE (FILE_DEVICE_SERENUM, 131, METHOD_BUFFERED, FILE_ANY_ACCESS)
  120. #define IOCTL_INTERNAL_SERENUM_REMOVE_SELF \
  121. CTL_CODE (FILE_DEVICE_SERENUM, 129, METHOD_NEITHER, FILE_ANY_ACCESS)
  122. typedef struct _SERIAL_BAUD_RATE {
  123. ULONG BaudRate;
  124. } SERIAL_BAUD_RATE, *PSERIAL_BAUD_RATE;
  125. /* SERIAL_BAUD_RATE.BaudRate constants */
  126. #define SERIAL_BAUD_075 0x00000001
  127. #define SERIAL_BAUD_110 0x00000002
  128. #define SERIAL_BAUD_134_5 0x00000004
  129. #define SERIAL_BAUD_150 0x00000008
  130. #define SERIAL_BAUD_300 0x00000010
  131. #define SERIAL_BAUD_600 0x00000020
  132. #define SERIAL_BAUD_1200 0x00000040
  133. #define SERIAL_BAUD_1800 0x00000080
  134. #define SERIAL_BAUD_2400 0x00000100
  135. #define SERIAL_BAUD_4800 0x00000200
  136. #define SERIAL_BAUD_7200 0x00000400
  137. #define SERIAL_BAUD_9600 0x00000800
  138. #define SERIAL_BAUD_14400 0x00001000
  139. #define SERIAL_BAUD_19200 0x00002000
  140. #define SERIAL_BAUD_38400 0x00004000
  141. #define SERIAL_BAUD_56K 0x00008000
  142. #define SERIAL_BAUD_128K 0x00010000
  143. #define SERIAL_BAUD_115200 0x00020000
  144. #define SERIAL_BAUD_57600 0x00040000
  145. #define SERIAL_BAUD_USER 0x10000000
  146. typedef struct _SERIAL_CHARS {
  147. UCHAR EofChar;
  148. UCHAR ErrorChar;
  149. UCHAR BreakChar;
  150. UCHAR EventChar;
  151. UCHAR XonChar;
  152. UCHAR XoffChar;
  153. } SERIAL_CHARS, *PSERIAL_CHARS;
  154. typedef struct _SERIAL_STATUS {
  155. ULONG Errors;
  156. ULONG HoldReasons;
  157. ULONG AmountInInQueue;
  158. ULONG AmountInOutQueue;
  159. BOOLEAN EofReceived;
  160. BOOLEAN WaitForImmediate;
  161. } SERIAL_STATUS, *PSERIAL_STATUS;
  162. typedef struct _SERIAL_HANDFLOW {
  163. ULONG ControlHandShake;
  164. ULONG FlowReplace;
  165. LONG XonLimit;
  166. LONG XoffLimit;
  167. } SERIAL_HANDFLOW, *PSERIAL_HANDFLOW;
  168. #define SERIAL_DTR_MASK 0x00000003
  169. #define SERIAL_DTR_CONTROL 0x00000001
  170. #define SERIAL_DTR_HANDSHAKE 0x00000002
  171. #define SERIAL_CTS_HANDSHAKE 0x00000008
  172. #define SERIAL_DSR_HANDSHAKE 0x00000010
  173. #define SERIAL_DCD_HANDSHAKE 0x00000020
  174. #define SERIAL_OUT_HANDSHAKEMASK 0x00000038
  175. #define SERIAL_DSR_SENSITIVITY 0x00000040
  176. #define SERIAL_ERROR_ABORT 0x80000000
  177. #define SERIAL_CONTROL_INVALID 0x7fffff84
  178. #define SERIAL_AUTO_TRANSMIT 0x00000001
  179. #define SERIAL_AUTO_RECEIVE 0x00000002
  180. #define SERIAL_ERROR_CHAR 0x00000004
  181. #define SERIAL_NULL_STRIPPING 0x00000008
  182. #define SERIAL_BREAK_CHAR 0x00000010
  183. #define SERIAL_RTS_MASK 0x000000c0
  184. #define SERIAL_RTS_CONTROL 0x00000040
  185. #define SERIAL_RTS_HANDSHAKE 0x00000080
  186. #define SERIAL_TRANSMIT_TOGGLE 0x000000c0
  187. #define SERIAL_XOFF_CONTINUE 0x80000000
  188. #define SERIAL_FLOW_INVALID 0x7fffff20
  189. typedef struct _SERIAL_LINE_CONTROL {
  190. UCHAR StopBits;
  191. UCHAR Parity;
  192. UCHAR WordLength;
  193. } SERIAL_LINE_CONTROL, *PSERIAL_LINE_CONTROL;
  194. /* SERIAL_LINE_CONTROL.StopBits constants */
  195. #define STOP_BIT_1 0x00
  196. #define STOP_BITS_1_5 0x01
  197. #define STOP_BITS_2 0x02
  198. /* SERIAL_LINE_CONTROL.Parity constants */
  199. #define NO_PARITY 0x00
  200. #define ODD_PARITY 0x01
  201. #define EVEN_PARITY 0x02
  202. #define MARK_PARITY 0x03
  203. #define SPACE_PARITY 0x04
  204. /* IOCTL_SERIAL_(GET_MODEM_CONTROL, SET_MODEM_CONTROL) flags */
  205. #define SERIAL_IOC_MCR_DTR 0x00000001
  206. #define SERIAL_IOC_MCR_RTS 0x00000002
  207. #define SERIAL_IOC_MCR_OUT1 0x00000004
  208. #define SERIAL_IOC_MCR_OUT2 0x00000008
  209. #define SERIAL_IOC_MCR_LOOP 0x00000010
  210. typedef struct _SERIAL_COMMPROP {
  211. USHORT PacketLength;
  212. USHORT PacketVersion;
  213. ULONG ServiceMask;
  214. ULONG Reserved1;
  215. ULONG MaxTxQueue;
  216. ULONG MaxRxQueue;
  217. ULONG MaxBaud;
  218. ULONG ProvSubType;
  219. ULONG ProvCapabilities;
  220. ULONG SettableParams;
  221. ULONG SettableBaud;
  222. USHORT SettableData;
  223. USHORT SettableStopParity;
  224. ULONG CurrentTxQueue;
  225. ULONG CurrentRxQueue;
  226. ULONG ProvSpec1;
  227. ULONG ProvSpec2;
  228. WCHAR ProvChar[1];
  229. } SERIAL_COMMPROP, *PSERIAL_COMMPROP;
  230. /* SERIAL_COMMPROP.SettableParams flags */
  231. #define SERIAL_SP_PARITY 0x0001
  232. #define SERIAL_SP_BAUD 0x0002
  233. #define SERIAL_SP_DATABITS 0x0004
  234. #define SERIAL_SP_STOPBITS 0x0008
  235. #define SERIAL_SP_HANDSHAKING 0x0010
  236. #define SERIAL_SP_PARITY_CHECK 0x0020
  237. #define SERIAL_SP_CARRIER_DETECT 0x0040
  238. /* SERIAL_COMMPROP.ProvCapabilities flags */
  239. #define SERIAL_PCF_DTRDSR 0x00000001
  240. #define SERIAL_PCF_RTSCTS 0x00000002
  241. #define SERIAL_PCF_CD 0x00000004
  242. #define SERIAL_PCF_PARITY_CHECK 0x00000008
  243. #define SERIAL_PCF_XONXOFF 0x00000010
  244. #define SERIAL_PCF_SETXCHAR 0x00000020
  245. #define SERIAL_PCF_TOTALTIMEOUTS 0x00000040
  246. #define SERIAL_PCF_INTTIMEOUTS 0x00000080
  247. #define SERIAL_PCF_SPECIALCHARS 0x00000100
  248. #define SERIAL_PCF_16BITMODE 0x00000200
  249. /* SERIAL_COMMPROP.SettableData flags */
  250. #define SERIAL_DATABITS_5 0x0001
  251. #define SERIAL_DATABITS_6 0x0002
  252. #define SERIAL_DATABITS_7 0x0004
  253. #define SERIAL_DATABITS_8 0x0008
  254. #define SERIAL_DATABITS_16 0x0010
  255. #define SERIAL_DATABITS_16X 0x0020
  256. /* SERIAL_COMMPROP.SettableStopParity flags */
  257. #define SERIAL_STOPBITS_10 0x0001
  258. #define SERIAL_STOPBITS_15 0x0002
  259. #define SERIAL_STOPBITS_20 0x0004
  260. #define SERIAL_PARITY_NONE 0x0100
  261. #define SERIAL_PARITY_ODD 0x0200
  262. #define SERIAL_PARITY_EVEN 0x0400
  263. #define SERIAL_PARITY_MARK 0x0800
  264. #define SERIAL_PARITY_SPACE 0x1000
  265. typedef struct _SERIALPERF_STATS {
  266. ULONG ReceivedCount;
  267. ULONG TransmittedCount;
  268. ULONG FrameErrorCount;
  269. ULONG SerialOverrunErrorCount;
  270. ULONG BufferOverrunErrorCount;
  271. ULONG ParityErrorCount;
  272. } SERIALPERF_STATS, *PSERIALPERF_STATS;
  273. typedef struct _SERIAL_TIMEOUTS {
  274. ULONG ReadIntervalTimeout;
  275. ULONG ReadTotalTimeoutMultiplier;
  276. ULONG ReadTotalTimeoutConstant;
  277. ULONG WriteTotalTimeoutMultiplier;
  278. ULONG WriteTotalTimeoutConstant;
  279. } SERIAL_TIMEOUTS, *PSERIAL_TIMEOUTS;
  280. /* IOCTL_SERIAL_(GET_WAIT_MASK, SET_WAIT_MASK, WAIT_ON_MASK) flags */
  281. #define SERIAL_EV_RXCHAR 0x0001
  282. #define SERIAL_EV_RXFLAG 0x0002
  283. #define SERIAL_EV_TXEMPTY 0x0004
  284. #define SERIAL_EV_CTS 0x0008
  285. #define SERIAL_EV_DSR 0x0010
  286. #define SERIAL_EV_RLSD 0x0020
  287. #define SERIAL_EV_BREAK 0x0040
  288. #define SERIAL_EV_ERR 0x0080
  289. #define SERIAL_EV_RING 0x0100
  290. #define SERIAL_EV_PERR 0x0200
  291. #define SERIAL_EV_RX80FULL 0x0400
  292. #define SERIAL_EV_EVENT1 0x0800
  293. #define SERIAL_EV_EVENT2 0x1000
  294. /* IOCTL_SERIAL_LSRMST_INSERT constants */
  295. #define SERIAL_LSRMST_LSR_DATA 0x01
  296. #define SERIAL_LSRMST_LSR_NODATA 0x02
  297. #define SERIAL_LSRMST_MST 0x03
  298. #define SERIAL_LSRMST_ESCAPE 0x00
  299. /* IOCTL_SERIAL_PURGE constants */
  300. #define SERIAL_PURGE_TXABORT 0x00000001
  301. #define SERIAL_PURGE_RXABORT 0x00000002
  302. #define SERIAL_PURGE_TXCLEAR 0x00000004
  303. #define SERIAL_PURGE_RXCLEAR 0x00000008
  304. /* IOCTL_SERIAL_SET_FIFO_CONTROL constants */
  305. #define SERIAL_IOC_FCR_FIFO_ENABLE 0x00000001
  306. #define SERIAL_IOC_FCR_RCVR_RESET 0x00000002
  307. #define SERIAL_IOC_FCR_XMIT_RESET 0x00000004
  308. #define SERIAL_IOC_FCR_DMA_MODE 0x00000008
  309. #define SERIAL_IOC_FCR_RES1 0x00000010
  310. #define SERIAL_IOC_FCR_RES2 0x00000020
  311. #define SERIAL_IOC_FCR_RCVR_TRIGGER_LSB 0x00000040
  312. #define SERIAL_IOC_FCR_RCVR_TRIGGER_MSB 0x00000080
  313. typedef struct _SERIAL_QUEUE_SIZE {
  314. ULONG InSize;
  315. ULONG OutSize;
  316. } SERIAL_QUEUE_SIZE, *PSERIAL_QUEUE_SIZE;
  317. typedef struct _SERIAL_XOFF_COUNTER {
  318. ULONG Timeout;
  319. LONG Counter;
  320. UCHAR XoffChar;
  321. } SERIAL_XOFF_COUNTER, *PSERIAL_XOFF_COUNTER;
  322. typedef struct _SERIAL_BASIC_SETTINGS {
  323. SERIAL_TIMEOUTS Timeouts;
  324. SERIAL_HANDFLOW HandFlow;
  325. ULONG RxFifo;
  326. ULONG TxFifo;
  327. } SERIAL_BASIC_SETTINGS, *PSERIAL_BASIC_SETTINGS;
  328. typedef struct _SERENUM_PORT_DESC {
  329. ULONG Size;
  330. PVOID PortHandle;
  331. PHYSICAL_ADDRESS PortAddress;
  332. USHORT Reserved[1];
  333. } SERENUM_PORT_DESC, *PSERENUM_PORT_DESC;
  334. typedef UCHAR
  335. (NTAPI*PSERENUM_READPORT)(
  336. PVOID SerPortAddress);
  337. typedef VOID
  338. (NTAPI*PSERENUM_WRITEPORT)(
  339. PVOID SerPortAddress,
  340. UCHAR Value);
  341. typedef enum _SERENUM_PORTION {
  342. SerenumFirstHalf,
  343. SerenumSecondHalf,
  344. SerenumWhole
  345. } SERENUM_PORTION;
  346. typedef struct _SERENUM_PORT_PARAMETERS {
  347. ULONG Size;
  348. PSERENUM_READPORT ReadAccessor;
  349. PSERENUM_WRITEPORT WriteAccessor;
  350. PVOID SerPortAddress;
  351. PVOID HardwareHandle;
  352. SERENUM_PORTION Portion;
  353. USHORT NumberAxis;
  354. USHORT Reserved[3];
  355. } SERENUM_PORT_PARAMETERS, *PSERENUM_PORT_PARAMETERS;
  356. #define SERIAL_ERROR_BREAK 0x00000001
  357. #define SERIAL_ERROR_FRAMING 0x00000002
  358. #define SERIAL_ERROR_OVERRUN 0x00000004
  359. #define SERIAL_ERROR_QUEUEOVERRUN 0x00000008
  360. #define SERIAL_ERROR_PARITY 0x00000010
  361. #define SERIAL_SP_UNSPECIFIED 0x00000000
  362. #define SERIAL_SP_RS232 0x00000001
  363. #define SERIAL_SP_PARALLEL 0x00000002
  364. #define SERIAL_SP_RS422 0x00000003
  365. #define SERIAL_SP_RS423 0x00000004
  366. #define SERIAL_SP_RS449 0x00000005
  367. #define SERIAL_SP_MODEM 0X00000006
  368. #define SERIAL_SP_FAX 0x00000021
  369. #define SERIAL_SP_SCANNER 0x00000022
  370. #define SERIAL_SP_BRIDGE 0x00000100
  371. #define SERIAL_SP_LAT 0x00000101
  372. #define SERIAL_SP_TELNET 0x00000102
  373. #define SERIAL_SP_X25 0x00000103
  374. #define SERIAL_SP_SERIALCOMM 0x00000001
  375. #define SERIAL_TX_WAITING_FOR_CTS 0x00000001
  376. #define SERIAL_TX_WAITING_FOR_DSR 0x00000002
  377. #define SERIAL_TX_WAITING_FOR_DCD 0x00000004
  378. #define SERIAL_TX_WAITING_FOR_XON 0x00000008
  379. #define SERIAL_TX_WAITING_XOFF_SENT 0x00000010
  380. #define SERIAL_TX_WAITING_ON_BREAK 0x00000020
  381. #define SERIAL_RX_WAITING_FOR_DSR 0x00000040
  382. #define SERIAL_DTR_STATE 0x00000001
  383. #define SERIAL_RTS_STATE 0x00000002
  384. #define SERIAL_CTS_STATE 0x00000010
  385. #define SERIAL_DSR_STATE 0x00000020
  386. #define SERIAL_RI_STATE 0x00000040
  387. #define SERIAL_DCD_STATE 0x00000080
  388. typedef struct _SERIALCONFIG {
  389. ULONG Size;
  390. USHORT Version;
  391. ULONG SubType;
  392. ULONG ProvOffset;
  393. ULONG ProviderSize;
  394. WCHAR ProviderData[1];
  395. } SERIALCONFIG,*PSERIALCONFIG;
  396. #ifdef __cplusplus
  397. }
  398. #endif
  399. #endif /* _NTDDSER_ */