| 1 | 
 /** | 
 
 
 
 
 
 | 2 | 
  * This file has no copyright assigned and is placed in the Public Domain. | 
 
 
 
 
 
 | 3 | 
  * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 
 | 4 | 
  * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 
 
 
 
 
 | 5 | 
  */ | 
 
 
 
 
 
 | 6 | 
 #ifndef _MSTCPIP_ | 
 
 
 
 
 
 | 7 | 
 #define _MSTCPIP_ | 
 
 
 
 
 
 | 8 | 
  | 
 
 
 
 
 
 | 9 | 
 #include <_mingw_unicode.h> | 
 
 
 
 
 
 | 10 | 
 #include <winapifamily.h> | 
 
 
 
 
 
 | 11 | 
  | 
 
 
 
 
 
 | 12 | 
 #ifdef __LP64__ | 
 
 
 
 
 
 | 13 | 
 #pragma push_macro("u_long") | 
 
 
 
 
 
 | 14 | 
 #undef u_long | 
 
 
 
 
 
 | 15 | 
 #define u_long __ms_u_long | 
 
 
 
 
 
 | 16 | 
 #endif | 
 
 
 
 
 
 | 17 | 
  | 
 
 
 
 
 
 | 18 | 
 #if NTDDI_VERSION >= NTDDI_WIN10_RS2 | 
 
 
 
 
 
 | 19 | 
 typedef enum _TCPSTATE { | 
 
 
 
 
 
 | 20 | 
   TCPSTATE_CLOSED, | 
 
 
 
 
 
 | 21 | 
   TCPSTATE_LISTEN, | 
 
 
 
 
 
 | 22 | 
   TCPSTATE_SYN_SENT, | 
 
 
 
 
 
 | 23 | 
   TCPSTATE_SYN_RCVD, | 
 
 
 
 
 
 | 24 | 
   TCPSTATE_ESTABLISHED, | 
 
 
 
 
 
 | 25 | 
   TCPSTATE_FIN_WAIT_1, | 
 
 
 
 
 
 | 26 | 
   TCPSTATE_FIN_WAIT_2, | 
 
 
 
 
 
 | 27 | 
   TCPSTATE_CLOSE_WAIT, | 
 
 
 
 
 
 | 28 | 
   TCPSTATE_CLOSING, | 
 
 
 
 
 
 | 29 | 
   TCPSTATE_LAST_ACK, | 
 
 
 
 
 
 | 30 | 
   TCPSTATE_TIME_WAIT, | 
 
 
 
 
 
 | 31 | 
   TCPSTATE_MAX | 
 
 
 
 
 
 | 32 | 
 } TCPSTATE; | 
 
 
 
 
 
 | 33 | 
 #endif | 
 
 
 
 
 
 | 34 | 
  | 
 
 
 
 
 
 | 35 | 
 #ifndef _TRANSPORT_SETTING_COMMON_ | 
 
 
 
 
 
 | 36 | 
 #define _TRANSPORT_SETTING_COMMON_ | 
 
 
 
 
 
 | 37 | 
 typedef struct TRANSPORT_SETTING_ID { | 
 
 
 
 
 
 | 38 | 
   GUID Guid; | 
 
 
 
 
 
 | 39 | 
 } TRANSPORT_SETTING_ID, *PTRANSPORT_SETTING_ID; | 
 
 
 
 
 
 | 40 | 
 #endif | 
 
 
 
 
 
 | 41 | 
  | 
 
 
 
 
 
 | 42 | 
 struct tcp_keepalive { | 
 
 
 
 
 
 | 43 | 
   u_long onoff; | 
 
 
 
 
 
 | 44 | 
   u_long keepalivetime; | 
 
 
 
 
 
 | 45 | 
   u_long keepaliveinterval; | 
 
 
 
 
 
 | 46 | 
 }; | 
 
 
 
 
 
 | 47 | 
  | 
 
 
 
 
 
 | 48 | 
 typedef enum { | 
 
 
 
 
 
 | 49 | 
   CONTROL_CHANNEL_TRIGGER_STATUS_INVALID = 0, | 
 
 
 
 
 
 | 50 | 
   CONTROL_CHANNEL_TRIGGER_STATUS_SOFTWARE_SLOT_ALLOCATED = 1, | 
 
 
 
 
 
 | 51 | 
   CONTROL_CHANNEL_TRIGGER_STATUS_HARDWARE_SLOT_ALLOCATED = 2, | 
 
 
 
 
 
 | 52 | 
   CONTROL_CHANNEL_TRIGGER_STATUS_POLICY_ERROR = 3, | 
 
 
 
 
 
 | 53 | 
   CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR = 4, | 
 
 
 
 
 
 | 54 | 
   CONTROL_CHANNEL_TRIGGER_STATUS_TRANSPORT_DISCONNECTED = 5, | 
 
 
 
 
 
 | 55 | 
   CONTROL_CHANNEL_TRIGGER_STATUS_SERVICE_UNAVAILABLE = 6 | 
 
 
 
 
 
 | 56 | 
 } CONTROL_CHANNEL_TRIGGER_STATUS, *PCONTROL_CHANNEL_TRIGGER_STATUS; | 
 
 
 
 
 
 | 57 | 
  | 
 
 
 
 
 
 | 58 | 
 #define CONTROL_CHANNEL_TRIGGER_STATUS_MAX CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR | 
 
 
 
 
 
 | 59 | 
  | 
 
 
 
 
 
 | 60 | 
 typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT { | 
 
 
 
 
 
 | 61 | 
   TRANSPORT_SETTING_ID TransportSettingId; | 
 
 
 
 
 
 | 62 | 
   GUID BrokerEventGuid; | 
 
 
 
 
 
 | 63 | 
 } REAL_TIME_NOTIFICATION_SETTING_INPUT, *PREAL_TIME_NOTIFICATION_SETTING_INPUT; | 
 
 
 
 
 
 | 64 | 
  | 
 
 
 
 
 
 | 65 | 
 typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT_EX { | 
 
 
 
 
 
 | 66 | 
   TRANSPORT_SETTING_ID TransportSettingId; | 
 
 
 
 
 
 | 67 | 
   GUID BrokerEventGuid; | 
 
 
 
 
 
 | 68 | 
   BOOLEAN Unmark; | 
 
 
 
 
 
 | 69 | 
 } REAL_TIME_NOTIFICATION_SETTING_INPUT_EX, *PREAL_TIME_NOTIFICATION_SETTING_INPUT_EX; | 
 
 
 
 
 
 | 70 | 
  | 
 
 
 
 
 
 | 71 | 
 typedef struct _REAL_TIME_NOTIFICATION_SETTING_OUTPUT { | 
 
 
 
 
 
 | 72 | 
   CONTROL_CHANNEL_TRIGGER_STATUS ChannelStatus; | 
 
 
 
 
 
 | 73 | 
 } REAL_TIME_NOTIFICATION_SETTING_OUTPUT, *PREAL_TIME_NOTIFICATION_SETTING_OUTPUT; | 
 
 
 
 
 
 | 74 | 
  | 
 
 
 
 
 
 | 75 | 
 typedef struct _ASSOCIATE_NAMERES_CONTEXT_INPUT { | 
 
 
 
 
 
 | 76 | 
   TRANSPORT_SETTING_ID TransportSettingId; | 
 
 
 
 
 
 | 77 | 
   UINT64 Handle; | 
 
 
 
 
 
 | 78 | 
 } ASSOCIATE_NAMERES_CONTEXT_INPUT, *PASSOCIATE_NAMERES_CONTEXT_INPUT; | 
 
 
 
 
 
 | 79 | 
  | 
 
 
 
 
 
 | 80 | 
 #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) | 
 
 
 
 
 
 | 81 | 
 #define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2) | 
 
 
 
 
 
 | 82 | 
 #define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3) | 
 
 
 
 
 
 | 83 | 
 #define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) | 
 
 
 
 
 
 | 84 | 
 #define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5) | 
 
 
 
 
 
 | 85 | 
 #define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6) | 
 
 
 
 
 
 | 86 | 
 #define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7) | 
 
 
 
 
 
 | 87 | 
 #define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8) | 
 
 
 
 
 
 | 88 | 
 #define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9) | 
 
 
 
 
 
 | 89 | 
 #define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10) | 
 
 
 
 
 
 | 90 | 
 #define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11) | 
 
 
 
 
 
 | 91 | 
 #define SIO_RCVALL_MCAST_IF _WSAIOW(IOC_VENDOR,13) | 
 
 
 
 
 
 | 92 | 
 #define SIO_RCVALL_IF _WSAIOW(IOC_VENDOR,14) | 
 
 
 
 
 
 | 93 | 
 #define SIO_LOOPBACK_FAST_PATH _WSAIOW(IOC_VENDOR,16) | 
 
 
 
 
 
 | 94 | 
 #define SIO_TCP_INITIAL_RTO _WSAIOW(IOC_VENDOR,17) | 
 
 
 
 
 
 | 95 | 
 #define SIO_APPLY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,19) | 
 
 
 
 
 
 | 96 | 
 #define SIO_QUERY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,20) | 
 
 
 
 
 
 | 97 | 
 #define SIO_TCP_SET_ICW _WSAIOW(IOC_VENDOR,22) | 
 
 
 
 
 
 | 98 | 
 #define SIO_TCP_SET_ACK_FREQUENCY _WSAIOW(IOC_VENDOR,23) | 
 
 
 
 
 
 | 99 | 
 #if NTDDI_VERSION >= NTDDI_WIN10_RS3 | 
 
 
 
 
 
 | 100 | 
 #define SIO_SET_PRIORITY_HINT _WSAIOW(IOC_VENDOR,24) | 
 
 
 
 
 
 | 101 | 
 #endif | 
 
 
 
 
 
 | 102 | 
 #if NTDDI_VERSION >= NTDDI_WIN10_FE | 
 
 
 
 
 
 | 103 | 
 #define SIO_PRIORITY_HINT SIO_SET_PRIORITY_HINT | 
 
 
 
 
 
 | 104 | 
 #endif | 
 
 
 
 
 
 | 105 | 
 #if NTDDI_VERSION >= NTDDI_WIN10_RS2 | 
 
 
 
 
 
 | 106 | 
 #define SIO_TCP_INFO _WSAIORW(IOC_VENDOR,39) | 
 
 
 
 
 
 | 107 | 
 #endif | 
 
 
 
 
 
 | 108 | 
 #if NTDDI_VERSION >= NTDDI_WIN10_VB | 
 
 
 
 
 
 | 109 | 
 #define SIO_CPU_AFFINITY _WSAIOW(IOC_VENDOR,21) | 
 
 
 
 
 
 | 110 | 
 #endif | 
 
 
 
 
 
 | 111 | 
 #if NTDDI_VERSION >= NTDDI_WIN10_FE | 
 
 
 
 
 
 | 112 | 
  | 
 
 
 
 
 
 | 113 | 
 #define SIO_TIMESTAMPING _WSAIOW(IOC_VENDOR, 235) | 
 
 
 
 
 
 | 114 | 
  | 
 
 
 
 
 
 | 115 | 
 typedef struct _TIMESTAMPING_CONFIG { | 
 
 
 
 
 
 | 116 | 
   ULONG Flags; | 
 
 
 
 
 
 | 117 | 
   USHORT TxTimestampsBuffered; | 
 
 
 
 
 
 | 118 | 
 } TIMESTAMPING_CONFIG, *PTIMESTAMPING_CONFIG; | 
 
 
 
 
 
 | 119 | 
  | 
 
 
 
 
 
 | 120 | 
 #define TIMESTAMPING_FLAG_RX 0x1 | 
 
 
 
 
 
 | 121 | 
 #define TIMESTAMPING_FLAG_TX 0x2 | 
 
 
 
 
 
 | 122 | 
  | 
 
 
 
 
 
 | 123 | 
 #define SO_TIMESTAMP 0x300A | 
 
 
 
 
 
 | 124 | 
  | 
 
 
 
 
 
 | 125 | 
 #define SO_TIMESTAMP_ID 0x300B | 
 
 
 
 
 
 | 126 | 
  | 
 
 
 
 
 
 | 127 | 
 #define SIO_GET_TX_TIMESTAMP _WSAIOW(IOC_VENDOR, 234) | 
 
 
 
 
 
 | 128 | 
  | 
 
 
 
 
 
 | 129 | 
 typedef enum { | 
 
 
 
 
 
 | 130 | 
   SocketPriorityHintVeryLow = 0, | 
 
 
 
 
 
 | 131 | 
   SocketPriorityHintLow, | 
 
 
 
 
 
 | 132 | 
   SocketPriorityHintNormal, | 
 
 
 
 
 
 | 133 | 
   SocketMaximumPriorityHintType | 
 
 
 
 
 
 | 134 | 
 } SOCKET_PRIORITY_HINT, *PSOCKET_PRIORITY_HINT; | 
 
 
 
 
 
 | 135 | 
  | 
 
 
 
 
 
 | 136 | 
 typedef struct _PRIORITY_STATUS { | 
 
 
 
 
 
 | 137 | 
   SOCKET_PRIORITY_HINT Sender; | 
 
 
 
 
 
 | 138 | 
   SOCKET_PRIORITY_HINT Receiver; | 
 
 
 
 
 
 | 139 | 
 } PRIORITY_STATUS, *PPRIORITY_STATUS; | 
 
 
 
 
 
 | 140 | 
 #endif /* NTDDI_WIN10_FE */ | 
 
 
 
 
 
 | 141 | 
  | 
 
 
 
 
 
 | 142 | 
 typedef enum { | 
 
 
 
 
 
 | 143 | 
   RCVALL_OFF = 0, | 
 
 
 
 
 
 | 144 | 
   RCVALL_ON = 1, | 
 
 
 
 
 
 | 145 | 
   RCVALL_SOCKETLEVELONLY = 2, | 
 
 
 
 
 
 | 146 | 
   RCVALL_IPLEVEL = 3 | 
 
 
 
 
 
 | 147 | 
 } RCVALL_VALUE, *PRCVALL_VALUE; | 
 
 
 
 
 
 | 148 | 
  | 
 
 
 
 
 
 | 149 | 
 #define RCVALL_MAX RCVALL_IPLEVEL | 
 
 
 
 
 
 | 150 | 
  | 
 
 
 
 
 
 | 151 | 
 typedef struct { | 
 
 
 
 
 
 | 152 | 
   RCVALL_VALUE Mode; | 
 
 
 
 
 
 | 153 | 
   ULONG Interface; | 
 
 
 
 
 
 | 154 | 
 } RCVALL_IF, *PRCVALL_IF; | 
 
 
 
 
 
 | 155 | 
  | 
 
 
 
 
 
 | 156 | 
 #define TCP_INITIAL_RTO_UNSPECIFIED_RTT ((USHORT) -1) | 
 
 
 
 
 
 | 157 | 
 #define TCP_INITIAL_RTO_UNSPECIFIED_MAX_SYN_RETRANSMISSIONS ((UCHAR) -1) | 
 
 
 
 
 
 | 158 | 
  | 
 
 
 
 
 
 | 159 | 
 #define TCP_INITIAL_RTO_DEFAULT_RTT (0) | 
 
 
 
 
 
 | 160 | 
 #define TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS (0) | 
 
 
 
 
 
 | 161 | 
 #define TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS ((UCHAR) -2) | 
 
 
 
 
 
 | 162 | 
  | 
 
 
 
 
 
 | 163 | 
 typedef struct _TCP_INITIAL_RTO_PARAMETERS { | 
 
 
 
 
 
 | 164 | 
   USHORT Rtt; | 
 
 
 
 
 
 | 165 | 
   UCHAR MaxSynRetransmissions; | 
 
 
 
 
 
 | 166 | 
 } TCP_INITIAL_RTO_PARAMETERS, *PTCP_INITIAL_RTO_PARAMETERS; | 
 
 
 
 
 
 | 167 | 
  | 
 
 
 
 
 
 | 168 | 
 typedef enum { | 
 
 
 
 
 
 | 169 | 
   TCP_ICW_LEVEL_DEFAULT = 0, | 
 
 
 
 
 
 | 170 | 
   TCP_ICW_LEVEL_HIGH = 1, | 
 
 
 
 
 
 | 171 | 
   TCP_ICW_LEVEL_VERY_HIGH = 2, | 
 
 
 
 
 
 | 172 | 
   TCP_ICW_LEVEL_AGGRESSIVE = 3, | 
 
 
 
 
 
 | 173 | 
   TCP_ICW_LEVEL_EXPERIMENTAL = 4, | 
 
 
 
 
 
 | 174 | 
   TCP_ICW_LEVEL_COMPAT = 254, | 
 
 
 
 
 
 | 175 | 
   TCP_ICW_LEVEL_MAX = 255 | 
 
 
 
 
 
 | 176 | 
 } TCP_ICW_LEVEL, *PTCP_ICW_LEVEL; | 
 
 
 
 
 
 | 177 | 
  | 
 
 
 
 
 
 | 178 | 
 typedef struct _TCP_ICW_PARAMETERS { | 
 
 
 
 
 
 | 179 | 
   TCP_ICW_LEVEL Level; | 
 
 
 
 
 
 | 180 | 
 } TCP_ICW_PARAMETERS, *PTCP_ICW_PARAMETERS; | 
 
 
 
 
 
 | 181 | 
  | 
 
 
 
 
 
 | 182 | 
 typedef struct _TCP_ACK_FREQUENCY_PARAMETERS { | 
 
 
 
 
 
 | 183 | 
   UCHAR TcpDelayedAckFrequency; | 
 
 
 
 
 
 | 184 | 
 } TCP_ACK_FREQUENCY_PARAMETERS, *PTCP_ACK_FREQUENCY_PARAMETERS; | 
 
 
 
 
 
 | 185 | 
  | 
 
 
 
 
 
 | 186 | 
 #if NTDDI_VERSION >= NTDDI_WIN10_RS2 | 
 
 
 
 
 
 | 187 | 
 typedef struct _TCP_INFO_v0 { | 
 
 
 
 
 
 | 188 | 
   TCPSTATE State; | 
 
 
 
 
 
 | 189 | 
   ULONG Mss; | 
 
 
 
 
 
 | 190 | 
   ULONG64 ConnectionTimeMs; | 
 
 
 
 
 
 | 191 | 
   BOOLEAN TimestampsEnabled; | 
 
 
 
 
 
 | 192 | 
   ULONG RttUs; | 
 
 
 
 
 
 | 193 | 
   ULONG MinRttUs; | 
 
 
 
 
 
 | 194 | 
   ULONG BytesInFlight; | 
 
 
 
 
 
 | 195 | 
   ULONG Cwnd; | 
 
 
 
 
 
 | 196 | 
   ULONG SndWnd; | 
 
 
 
 
 
 | 197 | 
   ULONG RcvWnd; | 
 
 
 
 
 
 | 198 | 
   ULONG RcvBuf; | 
 
 
 
 
 
 | 199 | 
   ULONG64 BytesOut; | 
 
 
 
 
 
 | 200 | 
   ULONG64 BytesIn; | 
 
 
 
 
 
 | 201 | 
   ULONG BytesReordered; | 
 
 
 
 
 
 | 202 | 
   ULONG BytesRetrans; | 
 
 
 
 
 
 | 203 | 
   ULONG FastRetrans; | 
 
 
 
 
 
 | 204 | 
   ULONG DupAcksIn; | 
 
 
 
 
 
 | 205 | 
   ULONG TimeoutEpisodes; | 
 
 
 
 
 
 | 206 | 
   UCHAR SynRetrans; | 
 
 
 
 
 
 | 207 | 
 } TCP_INFO_v0, *PTCP_INFO_v0; | 
 
 
 
 
 
 | 208 | 
 #endif | 
 
 
 
 
 
 | 209 | 
  | 
 
 
 
 
 
 | 210 | 
 #if NTDDI_VERSION >= NTDDI_WIN10_RS5 | 
 
 
 
 
 
 | 211 | 
 typedef struct _TCP_INFO_v1 { | 
 
 
 
 
 
 | 212 | 
   TCPSTATE State; | 
 
 
 
 
 
 | 213 | 
   ULONG Mss; | 
 
 
 
 
 
 | 214 | 
   ULONG64 ConnectionTimeMs; | 
 
 
 
 
 
 | 215 | 
   BOOLEAN TimestampsEnabled; | 
 
 
 
 
 
 | 216 | 
   ULONG RttUs; | 
 
 
 
 
 
 | 217 | 
   ULONG MinRttUs; | 
 
 
 
 
 
 | 218 | 
   ULONG BytesInFlight; | 
 
 
 
 
 
 | 219 | 
   ULONG Cwnd; | 
 
 
 
 
 
 | 220 | 
   ULONG SndWnd; | 
 
 
 
 
 
 | 221 | 
   ULONG RcvWnd; | 
 
 
 
 
 
 | 222 | 
   ULONG RcvBuf; | 
 
 
 
 
 
 | 223 | 
   ULONG64 BytesOut; | 
 
 
 
 
 
 | 224 | 
   ULONG64 BytesIn; | 
 
 
 
 
 
 | 225 | 
   ULONG BytesReordered; | 
 
 
 
 
 
 | 226 | 
   ULONG BytesRetrans; | 
 
 
 
 
 
 | 227 | 
   ULONG FastRetrans; | 
 
 
 
 
 
 | 228 | 
   ULONG DupAcksIn; | 
 
 
 
 
 
 | 229 | 
   ULONG TimeoutEpisodes; | 
 
 
 
 
 
 | 230 | 
   UCHAR SynRetrans; | 
 
 
 
 
 
 | 231 | 
   ULONG SndLimTransRwin; | 
 
 
 
 
 
 | 232 | 
   ULONG SndLimTimeRwin; | 
 
 
 
 
 
 | 233 | 
   ULONG64 SndLimBytesRwin; | 
 
 
 
 
 
 | 234 | 
   ULONG SndLimTransCwnd; | 
 
 
 
 
 
 | 235 | 
   ULONG SndLimTimeCwnd; | 
 
 
 
 
 
 | 236 | 
   ULONG64 SndLimBytesCwnd; | 
 
 
 
 
 
 | 237 | 
   ULONG SndLimTransSnd; | 
 
 
 
 
 
 | 238 | 
   ULONG SndLimTimeSnd; | 
 
 
 
 
 
 | 239 | 
   ULONG64 SndLimBytesSnd; | 
 
 
 
 
 
 | 240 | 
 } TCP_INFO_v1, *PTCP_INFO_v1; | 
 
 
 
 
 
 | 241 | 
 #endif | 
 
 
 
 
 
 | 242 | 
  | 
 
 
 
 
 
 | 243 | 
 #define SIO_ACQUIRE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 100) | 
 
 
 
 
 
 | 244 | 
 #define SIO_RELEASE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 101) | 
 
 
 
 
 
 | 245 | 
 #define SIO_ASSOCIATE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 102) | 
 
 
 
 
 
 | 246 | 
  | 
 
 
 
 
 
 | 247 | 
 typedef struct _INET_PORT_RANGE { | 
 
 
 
 
 
 | 248 | 
   USHORT StartPort; | 
 
 
 
 
 
 | 249 | 
   USHORT NumberOfPorts; | 
 
 
 
 
 
 | 250 | 
 } INET_PORT_RANGE, *PINET_PORT_RANGE; | 
 
 
 
 
 
 | 251 | 
  | 
 
 
 
 
 
 | 252 | 
 typedef struct _INET_PORT_RANGE INET_PORT_RESERVATION, *PINET_PORT_RESERVATION; | 
 
 
 
 
 
 | 253 | 
  | 
 
 
 
 
 
 | 254 | 
 typedef struct { | 
 
 
 
 
 
 | 255 | 
   ULONG64 Token; | 
 
 
 
 
 
 | 256 | 
 } INET_PORT_RESERVATION_TOKEN, *PINET_PORT_RESERVATION_TOKEN; | 
 
 
 
 
 
 | 257 | 
  | 
 
 
 
 
 
 | 258 | 
 #define INVALID_PORT_RESERVATION_TOKEN ((ULONG64)0) | 
 
 
 
 
 
 | 259 | 
  | 
 
 
 
 
 
 | 260 | 
 typedef struct { | 
 
 
 
 
 
 | 261 | 
 #ifdef __cplusplus | 
 
 
 
 
 
 | 262 | 
   INET_PORT_RESERVATION Reservation; | 
 
 
 
 
 
 | 263 | 
   INET_PORT_RESERVATION_TOKEN Token; | 
 
 
 
 
 
 | 264 | 
 #else | 
 
 
 
 
 
 | 265 | 
   INET_PORT_RESERVATION; | 
 
 
 
 
 
 | 266 | 
   INET_PORT_RESERVATION_TOKEN; | 
 
 
 
 
 
 | 267 | 
 #endif | 
 
 
 
 
 
 | 268 | 
 } INET_PORT_RESERVATION_INSTANCE, *PINET_PORT_RESERVATION_INSTANCE; | 
 
 
 
 
 
 | 269 | 
  | 
 
 
 
 
 
 | 270 | 
 typedef struct { | 
 
 
 
 
 
 | 271 | 
   ULONG OwningPid; | 
 
 
 
 
 
 | 272 | 
 } INET_PORT_RESERVATION_INFORMATION, *PINET_PORT_RESERVATION_INFORMATION; | 
 
 
 
 
 
 | 273 | 
  | 
 
 
 
 
 
 | 274 | 
 #if (_WIN32_WINNT >= 0x0502) | 
 
 
 
 
 
 | 275 | 
 typedef enum _SOCKET_SECURITY_PROTOCOL { | 
 
 
 
 
 
 | 276 | 
   SOCKET_SECURITY_PROTOCOL_DEFAULT, | 
 
 
 
 
 
 | 277 | 
   SOCKET_SECURITY_PROTOCOL_IPSEC, | 
 
 
 
 
 
 | 278 | 
 #if NTDDI_VERSION >= NTDDI_WIN7 | 
 
 
 
 
 
 | 279 | 
   SOCKET_SECURITY_PROTOCOL_IPSEC2, | 
 
 
 
 
 
 | 280 | 
 #endif | 
 
 
 
 
 
 | 281 | 
   SOCKET_SECURITY_PROTOCOL_INVALID  | 
 
 
 
 
 
 | 282 | 
 } SOCKET_SECURITY_PROTOCOL; | 
 
 
 
 
 
 | 283 | 
  | 
 
 
 
 
 
 | 284 | 
 #define SOCKET_SETTINGS_GUARANTEE_ENCRYPTION  0x1 | 
 
 
 
 
 
 | 285 | 
 #define SOCKET_SETTINGS_ALLOW_INSECURE  0x2 | 
 
 
 
 
 
 | 286 | 
  | 
 
 
 
 
 
 | 287 | 
 typedef enum _SOCKET_USAGE_TYPE { | 
 
 
 
 
 
 | 288 | 
   SYSTEM_CRITICAL_SOCKET   = 1  | 
 
 
 
 
 
 | 289 | 
 } SOCKET_USAGE_TYPE; | 
 
 
 
 
 
 | 290 | 
  | 
 
 
 
 
 
 | 291 | 
 typedef struct _SOCKET_PEER_TARGET_NAME { | 
 
 
 
 
 
 | 292 | 
   SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 
 | 293 | 
   SOCKADDR_STORAGE         PeerAddress; | 
 
 
 
 
 
 | 294 | 
   ULONG                    PeerTargetNameStringLen; | 
 
 
 
 
 
 | 295 | 
   wchar_t                  AllStrings[]; | 
 
 
 
 
 
 | 296 | 
 } SOCKET_PEER_TARGET_NAME; | 
 
 
 
 
 
 | 297 | 
  | 
 
 
 
 
 
 | 298 | 
 #define SOCKET_INFO_CONNECTION_SECURED          0x00000001 | 
 
 
 
 
 
 | 299 | 
 #define SOCKET_INFO_CONNECTION_ENCRYPTED        0x00000002 | 
 
 
 
 
 
 | 300 | 
 #define SOCKET_INFO_CONNECTION_IMPERSONATED     0x00000004 | 
 
 
 
 
 
 | 301 | 
  | 
 
 
 
 
 
 | 302 | 
 typedef struct _SOCKET_SECURITY_QUERY_INFO { | 
 
 
 
 
 
 | 303 | 
   SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 
 | 304 | 
   ULONG                    Flags; | 
 
 
 
 
 
 | 305 | 
   UINT64                   PeerApplicationAccessTokenHandle; | 
 
 
 
 
 
 | 306 | 
   UINT64                   PeerMachineAccessTokenHandle; | 
 
 
 
 
 
 | 307 | 
 } SOCKET_SECURITY_QUERY_INFO; | 
 
 
 
 
 
 | 308 | 
  | 
 
 
 
 
 
 | 309 | 
 typedef struct _SOCKET_SECURITY_QUERY_TEMPLATE { | 
 
 
 
 
 
 | 310 | 
   SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 
 | 311 | 
   SOCKADDR_STORAGE         PeerAddress; | 
 
 
 
 
 
 | 312 | 
   ULONG                    PeerTokenAccessMask; | 
 
 
 
 
 
 | 313 | 
 } SOCKET_SECURITY_QUERY_TEMPLATE; | 
 
 
 
 
 
 | 314 | 
  | 
 
 
 
 
 
 | 315 | 
 typedef struct _SOCKET_SECURITY_SETTINGS { | 
 
 
 
 
 
 | 316 | 
   SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 
 | 317 | 
   ULONG                    SecurityFlags; | 
 
 
 
 
 
 | 318 | 
 } SOCKET_SECURITY_SETTINGS; | 
 
 
 
 
 
 | 319 | 
  | 
 
 
 
 
 
 | 320 | 
 #define SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION 0x00000001 | 
 
 
 
 
 
 | 321 | 
  | 
 
 
 
 
 
 | 322 | 
 typedef struct _SOCKET_SECURITY_SETTINGS_IPSEC { | 
 
 
 
 
 
 | 323 | 
   SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 
 | 324 | 
   ULONG                    SecurityFlags; | 
 
 
 
 
 
 | 325 | 
   ULONG                    IpsecFlags; | 
 
 
 
 
 
 | 326 | 
   GUID                     AuthipMMPolicyKey; | 
 
 
 
 
 
 | 327 | 
   GUID                     AuthipQMPolicyKey; | 
 
 
 
 
 
 | 328 | 
   GUID                     Reserved; | 
 
 
 
 
 
 | 329 | 
   UINT64                   Reserved2; | 
 
 
 
 
 
 | 330 | 
   ULONG                    UserNameStringLen; | 
 
 
 
 
 
 | 331 | 
   ULONG                    DomainNameStringLen; | 
 
 
 
 
 
 | 332 | 
   ULONG                    PasswordStringLen; | 
 
 
 
 
 
 | 333 | 
   wchar_t                  AllStrings[]; | 
 
 
 
 
 
 | 334 | 
 } SOCKET_SECURITY_SETTINGS_IPSEC; | 
 
 
 
 
 
 | 335 | 
  | 
 
 
 
 
 
 | 336 | 
 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | 
 
 
 
 
 
 | 337 | 
  | 
 
 
 
 
 
 | 338 | 
 #define RtlIpv6AddressToString __MINGW_NAME_AW(RtlIpv6AddressToString) | 
 
 
 
 
 
 | 339 | 
 #define RtlIpv6AddressToStringEx __MINGW_NAME_AW(RtlIpv6AddressToStringEx) | 
 
 
 
 
 
 | 340 | 
  | 
 
 
 
 
 
 | 341 | 
 #ifdef _WS2IPDEF_ | 
 
 
 
 
 
 | 342 | 
  | 
 
 
 
 
 
 | 343 | 
 LPSTR NTAPI RtlIpv6AddressToStringA(const IN6_ADDR *Addr, LPSTR S); | 
 
 
 
 
 
 | 344 | 
 LPWSTR NTAPI RtlIpv6AddressToStringW(const IN6_ADDR *Addr, LPWSTR S); | 
 
 
 
 
 
 | 345 | 
  | 
 
 
 
 
 
 | 346 | 
 LONG NTAPI RtlIpv6AddressToStringExA(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); | 
 
 
 
 
 
 | 347 | 
 LONG NTAPI RtlIpv6AddressToStringExW(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); | 
 
 
 
 
 
 | 348 | 
  | 
 
 
 
 
 
 | 349 | 
 #define RtlIpv4AddressToString __MINGW_NAME_AW(RtlIpv4AddressToString) | 
 
 
 
 
 
 | 350 | 
 LPSTR NTAPI RtlIpv4AddressToStringA(const IN_ADDR *Addr, LPSTR S); | 
 
 
 
 
 
 | 351 | 
 LPWSTR NTAPI RtlIpv4AddressToStringW(const IN_ADDR *Addr, LPWSTR S); | 
 
 
 
 
 
 | 352 | 
  | 
 
 
 
 
 
 | 353 | 
 #define RtlIpv4AddressToStringEx __MINGW_NAME_AW(RtlIpv4AddressToStringEx) | 
 
 
 
 
 
 | 354 | 
 LONG NTAPI RtlIpv4AddressToStringExA(const IN_ADDR *Address, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); | 
 
 
 
 
 
 | 355 | 
 LONG NTAPI RtlIpv4AddressToStringExW(const IN_ADDR *Address, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); | 
 
 
 
 
 
 | 356 | 
  | 
 
 
 
 
 
 | 357 | 
 #define RtlIpv4StringToAddress __MINGW_NAME_AW(RtlIpv4StringToAddress) | 
 
 
 
 
 
 | 358 | 
 LONG NTAPI RtlIpv4StringToAddressA(PCSTR S, BOOLEAN Strict, LPSTR *Terminator, IN_ADDR *Addr); | 
 
 
 
 
 
 | 359 | 
 LONG NTAPI RtlIpv4StringToAddressW(PCWSTR S, BOOLEAN Strict, LPWSTR *Terminator, IN_ADDR *Addr); | 
 
 
 
 
 
 | 360 | 
  | 
 
 
 
 
 
 | 361 | 
 #define RtlIpv4StringToAddressEx __MINGW_NAME_AW(RtlIpv4StringToAddressEx) | 
 
 
 
 
 
 | 362 | 
 LONG NTAPI RtlIpv4StringToAddressExA(PCSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); | 
 
 
 
 
 
 | 363 | 
 LONG NTAPI RtlIpv4StringToAddressExW(PCWSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); | 
 
 
 
 
 
 | 364 | 
  | 
 
 
 
 
 
 | 365 | 
 #define RtlIpv6StringToAddressEx __MINGW_NAME_AW(RtlIpv6StringToAddressEx) | 
 
 
 
 
 
 | 366 | 
 LONG NTAPI RtlIpv6StringToAddressExA(PCSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); | 
 
 
 
 
 
 | 367 | 
 LONG NTAPI RtlIpv6StringToAddressExW(PCWSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); | 
 
 
 
 
 
 | 368 | 
  | 
 
 
 
 
 
 | 369 | 
 #endif /* _WS2IPDEF_ */ | 
 
 
 
 
 
 | 370 | 
  | 
 
 
 
 
 
 | 371 | 
 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | 
 
 
 
 
 
 | 372 | 
 #endif /*(_WIN32_WINNT >= 0x0502)*/ | 
 
 
 
 
 
 | 373 | 
  | 
 
 
 
 
 
 | 374 | 
 #ifdef __LP64__ | 
 
 
 
 
 
 | 375 | 
 #pragma pop_macro("u_long") | 
 
 
 
 
 
 | 376 | 
 #endif | 
 
 
 
 
 
 | 377 | 
  | 
 
 
 
 
 
 | 378 | 
 #endif /* _MSTCPIP_ */ | 
 
 
 
 
 
 | 379 | 
  |