| [1166] | 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 | 
 | 
|---|