home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / ddk / ntddser.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  16.9 KB  |  455 lines

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