Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Interop.cs
Go to the documentation of this file.
1using System;
6
7internal static class Interop
8{
9 internal static class Winsock
10 {
11 internal struct TimeValue
12 {
13 public int Seconds;
14
15 public int Microseconds;
16 }
17
18 internal struct IPMulticastRequest
19 {
20 internal int MulticastAddress;
21
22 internal int InterfaceAddress;
23
24 internal static readonly int Size = Marshal.SizeOf<IPMulticastRequest>();
25 }
26
27 internal struct IPv6MulticastRequest
28 {
29 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
30 internal byte[] MulticastAddress;
31
32 internal int InterfaceIndex;
33
34 internal static readonly int Size = Marshal.SizeOf<IPv6MulticastRequest>();
35 }
36
37 internal struct Linger
38 {
39 internal ushort OnOff;
40
41 internal ushort Time;
42 }
43
44 internal struct ControlData
45 {
46 internal UIntPtr length;
47
48 internal uint level;
49
50 internal uint type;
51
52 internal uint address;
53
54 internal uint index;
55 }
56
57 internal struct ControlDataIPv6
58 {
59 internal UIntPtr length;
60
61 internal uint level;
62
63 internal uint type;
64
65 internal unsafe fixed byte address[16];
66
67 internal uint index;
68 }
69
70 [Flags]
71 internal enum TransmitPacketsElementFlags : uint
72 {
73 None = 0u,
74 Memory = 1u,
75 File = 2u,
76 EndOfPacket = 4u
77 }
78
79 [StructLayout(LayoutKind.Explicit)]
80 internal struct TransmitPacketsElement
81 {
82 [FieldOffset(0)]
84
85 [FieldOffset(4)]
86 internal uint length;
87
88 [FieldOffset(8)]
89 internal long fileOffset;
90
91 [FieldOffset(8)]
92 internal IntPtr buffer;
93
94 [FieldOffset(16)]
96 }
97
98 internal struct WSAMsg
99 {
101
102 internal uint addressLength;
103
104 internal IntPtr buffers;
105
106 internal uint count;
107
109
111 }
112
113 [StructLayout(LayoutKind.Sequential, Size = 408)]
114 private struct WSAData
115 {
116 }
117
118 [Flags]
128
129 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
130 internal struct WSAPROTOCOL_INFOW
131 {
132 internal uint dwServiceFlags1;
133
134 internal uint dwServiceFlags2;
135
136 internal uint dwServiceFlags3;
137
138 internal uint dwServiceFlags4;
139
140 internal uint dwProviderFlags;
141
142 internal Guid ProviderId;
143
144 internal uint dwCatalogEntryId;
145
147
148 internal int iVersion;
149
151
152 internal int iMaxSockAddr;
153
154 internal int iMinSockAddr;
155
157
159
160 internal int iProtocolMaxOffset;
161
162 internal int iNetworkByteOrder;
163
164 internal int iSecurityScheme;
165
166 internal uint dwMessageSize;
167
168 internal uint dwProviderReserved;
169
170 internal unsafe fixed char szProtocol[256];
171 }
172
173 internal struct WSAPROTOCOLCHAIN
174 {
175 internal int ChainLen;
176
177 internal unsafe fixed uint ChainEntries[7];
178 }
179
180 private static int s_initialized;
181
182 [DllImport("ws2_32.dll", ExactSpelling = true, SetLastError = true)]
183 internal static extern IntPtr accept(SafeSocketHandle socketHandle, [Out] byte[] socketAddress, [In][Out] ref int socketAddressSize);
184
185 [DllImport("ws2_32.dll", SetLastError = true)]
186 internal static extern SocketError bind([In] SafeSocketHandle socketHandle, [In] byte[] socketAddress, [In] int socketAddressSize);
187
188 [DllImport("ws2_32.dll", ExactSpelling = true, SetLastError = true)]
189 internal static extern SocketError closesocket([In] IntPtr socketHandle);
190
191 [DllImport("ws2_32.dll", SetLastError = true)]
192 internal unsafe static extern SocketError getpeername([In] SafeSocketHandle socketHandle, [Out] byte* socketAddress, [In][Out] ref int socketAddressSize);
193
194 [DllImport("ws2_32.dll", SetLastError = true)]
195 internal unsafe static extern SocketError getsockname(SafeSocketHandle socketHandle, byte* socketAddress, int* socketAddressSize);
196
197 [DllImport("ws2_32.dll", SetLastError = true)]
198 internal unsafe static extern SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [Out] byte* optionValue, [In][Out] ref int optionLength);
199
200 [DllImport("ws2_32.dll", SetLastError = true)]
201 internal static extern SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out Linger optionValue, [In][Out] ref int optionLength);
202
203 [DllImport("ws2_32.dll", SetLastError = true)]
204 internal static extern SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out IPMulticastRequest optionValue, [In][Out] ref int optionLength);
205
206 [DllImport("ws2_32.dll", SetLastError = true)]
207 internal static extern SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out IPv6MulticastRequest optionValue, [In][Out] ref int optionLength);
208
209 [DllImport("ws2_32.dll", ExactSpelling = true, SetLastError = true)]
210 internal static extern SocketError ioctlsocket([In] IntPtr handle, [In] int cmd, [In][Out] ref int argp);
211
212 [DllImport("ws2_32.dll", SetLastError = true)]
213 internal static extern SocketError ioctlsocket([In] SafeSocketHandle socketHandle, [In] int cmd, [In][Out] ref int argp);
214
215 [DllImport("ws2_32.dll", SetLastError = true)]
216 internal static extern SocketError listen([In] SafeSocketHandle socketHandle, [In] int backlog);
217
218 [DllImport("ws2_32.dll", SetLastError = true)]
219 internal unsafe static extern int recv(SafeSocketHandle socketHandle, [In] byte* pinnedBuffer, [In] int len, [In] SocketFlags socketFlags);
220
221 [DllImport("ws2_32.dll", SetLastError = true)]
222 internal unsafe static extern int recvfrom(SafeSocketHandle socketHandle, [In] byte* pinnedBuffer, [In] int len, [In] SocketFlags socketFlags, [Out] byte[] socketAddress, [In][Out] ref int socketAddressSize);
223
224 [DllImport("ws2_32.dll", SetLastError = true)]
225 internal unsafe static extern int select([In] int ignoredParameter, [In] IntPtr* readfds, [In] IntPtr* writefds, [In] IntPtr* exceptfds, [In] ref TimeValue timeout);
226
227 [DllImport("ws2_32.dll", SetLastError = true)]
228 internal unsafe static extern int select([In] int ignoredParameter, [In] IntPtr* readfds, [In] IntPtr* writefds, [In] IntPtr* exceptfds, [In] IntPtr nullTimeout);
229
230 [DllImport("ws2_32.dll", SetLastError = true)]
231 internal unsafe static extern int send(SafeSocketHandle socketHandle, [In] byte* pinnedBuffer, [In] int len, [In] SocketFlags socketFlags);
232
233 [DllImport("ws2_32.dll", SetLastError = true)]
234 internal unsafe static extern int sendto(SafeSocketHandle socketHandle, [In] byte* pinnedBuffer, [In] int len, [In] SocketFlags socketFlags, [In] byte[] socketAddress, [In] int socketAddressSize);
235
236 [DllImport("ws2_32.dll", ExactSpelling = true, SetLastError = true)]
237 internal static extern SocketError setsockopt([In] IntPtr handle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref Linger linger, [In] int optionLength);
238
239 [DllImport("ws2_32.dll", SetLastError = true)]
240 internal static extern SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref int optionValue, [In] int optionLength);
241
242 [DllImport("ws2_32.dll", SetLastError = true)]
243 internal unsafe static extern SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] byte* optionValue, [In] int optionLength);
244
245 [DllImport("ws2_32.dll", SetLastError = true)]
246 internal static extern SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IntPtr pointer, [In] int optionLength);
247
248 [DllImport("ws2_32.dll", SetLastError = true)]
249 internal static extern SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref Linger linger, [In] int optionLength);
250
251 [DllImport("ws2_32.dll", SetLastError = true)]
252 internal static extern SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IPMulticastRequest mreq, [In] int optionLength);
253
254 [DllImport("ws2_32.dll", SetLastError = true)]
255 internal static extern SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IPv6MulticastRequest mreq, [In] int optionLength);
256
257 [DllImport("ws2_32.dll", SetLastError = true)]
258 internal static extern SocketError shutdown([In] SafeSocketHandle socketHandle, [In] int how);
259
260 [DllImport("ws2_32.dll", SetLastError = true)]
261 internal static extern SocketError WSAConnect(SafeSocketHandle socketHandle, [In] byte[] socketAddress, [In] int socketAddressSize, [In] IntPtr inBuffer, [In] IntPtr outBuffer, [In] IntPtr sQOS, [In] IntPtr gQOS);
262
263 [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
264 internal unsafe static extern int WSADuplicateSocket([In] SafeSocketHandle s, [In] uint dwProcessId, [In] WSAPROTOCOL_INFOW* lpProtocolInfo);
265
266 [DllImport("ws2_32.dll", SetLastError = true)]
267 internal unsafe static extern bool WSAGetOverlappedResult([In] SafeSocketHandle socketHandle, [In] NativeOverlapped* overlapped, out uint bytesTransferred, [In] bool wait, out SocketFlags socketFlags);
268
269 [DllImport("ws2_32.dll", SetLastError = true)]
270 internal static extern SocketError WSAIoctl(SafeSocketHandle socketHandle, [In] int ioControlCode, [In][Out] ref Guid guid, [In] int guidSize, out IntPtr funcPtr, [In] int funcPtrSize, out int bytesTransferred, [In] IntPtr shouldBeNull, [In] IntPtr shouldBeNull2);
271
272 [DllImport("ws2_32.dll", EntryPoint = "WSAIoctl", SetLastError = true)]
273 internal static extern SocketError WSAIoctl_Blocking(SafeSocketHandle socketHandle, [In] int ioControlCode, [In] byte[] inBuffer, [In] int inBufferSize, [Out] byte[] outBuffer, [In] int outBufferSize, out int bytesTransferred, [In] IntPtr overlapped, [In] IntPtr completionRoutine);
274
275 [DllImport("ws2_32.dll", SetLastError = true)]
276 internal unsafe static extern SocketError WSARecv(SafeHandle socketHandle, WSABuffer* buffer, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, NativeOverlapped* overlapped, IntPtr completionRoutine);
277
278 internal unsafe static SocketError WSARecv(SafeHandle socketHandle, Span<WSABuffer> buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, NativeOverlapped* overlapped, IntPtr completionRoutine)
279 {
280 fixed (WSABuffer* buffer = &MemoryMarshal.GetReference(buffers))
281 {
282 return WSARecv(socketHandle, buffer, bufferCount, out bytesTransferred, ref socketFlags, overlapped, completionRoutine);
283 }
284 }
285
286 [DllImport("ws2_32.dll", SetLastError = true)]
287 private unsafe static extern SocketError WSARecvFrom(SafeHandle socketHandle, WSABuffer* buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped* overlapped, IntPtr completionRoutine);
288
289 internal unsafe static SocketError WSARecvFrom(SafeHandle socketHandle, ref WSABuffer buffer, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped* overlapped, IntPtr completionRoutine)
290 {
291 WSABuffer wSABuffer = buffer;
292 return WSARecvFrom(socketHandle, &wSABuffer, bufferCount, out bytesTransferred, ref socketFlags, socketAddressPointer, socketAddressSizePointer, overlapped, completionRoutine);
293 }
294
295 internal unsafe static SocketError WSARecvFrom(SafeHandle socketHandle, WSABuffer[] buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped* overlapped, IntPtr completionRoutine)
296 {
297 fixed (WSABuffer* buffers2 = &buffers[0])
298 {
299 return WSARecvFrom(socketHandle, buffers2, bufferCount, out bytesTransferred, ref socketFlags, socketAddressPointer, socketAddressSizePointer, overlapped, completionRoutine);
300 }
301 }
302
303 [DllImport("ws2_32.dll", SetLastError = true)]
304 internal unsafe static extern SocketError WSASend(SafeHandle socketHandle, WSABuffer* buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, NativeOverlapped* overlapped, IntPtr completionRoutine);
305
306 internal unsafe static SocketError WSASend(SafeHandle socketHandle, Span<WSABuffer> buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, NativeOverlapped* overlapped, IntPtr completionRoutine)
307 {
308 fixed (WSABuffer* buffers2 = &MemoryMarshal.GetReference(buffers))
309 {
310 return WSASend(socketHandle, buffers2, bufferCount, out bytesTransferred, socketFlags, overlapped, completionRoutine);
311 }
312 }
313
314 [DllImport("ws2_32.dll", SetLastError = true)]
315 private unsafe static extern SocketError WSASendTo(SafeHandle socketHandle, WSABuffer* buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped* overlapped, IntPtr completionRoutine);
316
317 internal unsafe static SocketError WSASendTo(SafeHandle socketHandle, ref WSABuffer buffer, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped* overlapped, IntPtr completionRoutine)
318 {
319 WSABuffer wSABuffer = buffer;
320 return WSASendTo(socketHandle, &wSABuffer, bufferCount, out bytesTransferred, socketFlags, socketAddress, socketAddressSize, overlapped, completionRoutine);
321 }
322
323 internal unsafe static SocketError WSASendTo(SafeHandle socketHandle, WSABuffer[] buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped* overlapped, IntPtr completionRoutine)
324 {
325 fixed (WSABuffer* buffers2 = &buffers[0])
326 {
327 return WSASendTo(socketHandle, buffers2, bufferCount, out bytesTransferred, socketFlags, socketAddress, socketAddressSize, overlapped, completionRoutine);
328 }
329 }
330
331 [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
332 internal static extern IntPtr WSASocketW([In] AddressFamily addressFamily, [In] SocketType socketType, [In] int protocolType, [In] IntPtr protocolInfo, [In] int group, [In] int flags);
333
334 [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
335 internal static extern IntPtr WSASocketW([In] AddressFamily addressFamily, [In] SocketType socketType, [In] ProtocolType protocolType, [In] IntPtr protocolInfo, [In] uint group, [In] SocketConstructorFlags flags);
336
337 internal static void EnsureInitialized()
338 {
339 if (s_initialized == 0)
340 {
341 Initialize();
342 }
343 unsafe static void Initialize()
344 {
345 Unsafe.SkipInit(out WSAData wSAData);
346 SocketError socketError = WSAStartup(514, &wSAData);
347 if (socketError != 0)
348 {
349 throw new SocketException((int)socketError);
350 }
351 if (Interlocked.CompareExchange(ref s_initialized, 1, 0) != 0)
352 {
353 socketError = WSACleanup();
354 }
355 }
356 }
357
358 [DllImport("ws2_32.dll")]
359 private unsafe static extern SocketError WSAStartup(short wVersionRequested, WSAData* lpWSAData);
360
361 [DllImport("ws2_32.dll")]
362 private static extern SocketError WSACleanup();
363 }
364
365 internal static class Mswsock
366 {
367 internal struct TransmitFileBuffers
368 {
369 internal IntPtr Head;
370
371 internal int HeadLength;
372
373 internal IntPtr Tail;
374
375 internal int TailLength;
376 }
377
378 [DllImport("mswsock.dll", SetLastError = true)]
379 internal unsafe static extern bool TransmitFile(SafeHandle socket, IntPtr fileHandle, int numberOfBytesToWrite, int numberOfBytesPerSend, NativeOverlapped* overlapped, TransmitFileBuffers* buffers, TransmitFileOptions flags);
380 }
381
382 internal static class Kernel32
383 {
384 [Flags]
386 {
387 None = 0,
390 }
391
392 [Flags]
393 internal enum HandleFlags : uint
394 {
395 None = 0u,
398 }
399
400 [DllImport("kernel32.dll", SetLastError = true)]
401 internal unsafe static extern bool CancelIoEx(SafeHandle handle, NativeOverlapped* lpOverlapped);
402
403 [DllImport("kernel32.dll", SetLastError = true)]
404 internal unsafe static extern bool CancelIoEx(IntPtr handle, NativeOverlapped* lpOverlapped);
405
406 [DllImport("kernel32.dll", SetLastError = true)]
408
409 [DllImport("kernel32.dll", SetLastError = true)]
410 internal static extern bool SetHandleInformation(SafeHandle hObject, HandleFlags dwMask, HandleFlags dwFlags);
411 }
412}
static bool SetHandleInformation(SafeHandle hObject, HandleFlags dwMask, HandleFlags dwFlags)
static unsafe bool CancelIoEx(IntPtr handle, NativeOverlapped *lpOverlapped)
static void SetLastError(int errorCode)
static unsafe bool CancelIoEx(SafeHandle handle, NativeOverlapped *lpOverlapped)
static bool SetFileCompletionNotificationModes(SafeHandle handle, FileCompletionNotificationModes flags)
FileCompletionNotificationModes
Definition Interop.cs:386
static unsafe bool TransmitFile(SafeHandle socket, IntPtr fileHandle, int numberOfBytesToWrite, int numberOfBytesPerSend, NativeOverlapped *overlapped, TransmitFileBuffers *buffers, TransmitFileOptions flags)
static SocketError ioctlsocket([In] IntPtr handle, [In] int cmd, [In][Out] ref int argp)
static unsafe SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [Out] byte *optionValue, [In][Out] ref int optionLength)
static unsafe SocketError WSARecvFrom(SafeHandle socketHandle, WSABuffer[] buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped *overlapped, IntPtr completionRoutine)
Definition Interop.cs:295
static IntPtr WSASocketW([In] AddressFamily addressFamily, [In] SocketType socketType, [In] ProtocolType protocolType, [In] IntPtr protocolInfo, [In] uint group, [In] SocketConstructorFlags flags)
static unsafe SocketError getpeername([In] SafeSocketHandle socketHandle, [Out] byte *socketAddress, [In][Out] ref int socketAddressSize)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IPMulticastRequest mreq, [In] int optionLength)
static unsafe SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] byte *optionValue, [In] int optionLength)
TransmitPacketsElementFlags
Definition Interop.cs:72
static IntPtr WSASocketW([In] AddressFamily addressFamily, [In] SocketType socketType, [In] int protocolType, [In] IntPtr protocolInfo, [In] int group, [In] int flags)
static SocketError WSACleanup()
static SocketError WSAIoctl(SafeSocketHandle socketHandle, [In] int ioControlCode, [In][Out] ref Guid guid, [In] int guidSize, out IntPtr funcPtr, [In] int funcPtrSize, out int bytesTransferred, [In] IntPtr shouldBeNull, [In] IntPtr shouldBeNull2)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref Linger linger, [In] int optionLength)
static int s_initialized
Definition Interop.cs:67
static unsafe int recv(SafeSocketHandle socketHandle, [In] byte *pinnedBuffer, [In] int len, [In] SocketFlags socketFlags)
static SocketError closesocket([In] IntPtr socketHandle)
static SocketError ioctlsocket([In] SafeSocketHandle socketHandle, [In] int cmd, [In][Out] ref int argp)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IntPtr pointer, [In] int optionLength)
static SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out IPMulticastRequest optionValue, [In][Out] ref int optionLength)
static SocketError WSAIoctl_Blocking(SafeSocketHandle socketHandle, [In] int ioControlCode, [In] byte[] inBuffer, [In] int inBufferSize, [Out] byte[] outBuffer, [In] int outBufferSize, out int bytesTransferred, [In] IntPtr overlapped, [In] IntPtr completionRoutine)
static unsafe SocketError WSASend(SafeHandle socketHandle, Span< WSABuffer > buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, NativeOverlapped *overlapped, IntPtr completionRoutine)
Definition Interop.cs:306
static SocketError listen([In] SafeSocketHandle socketHandle, [In] int backlog)
static unsafe SocketError getsockname(SafeSocketHandle socketHandle, byte *socketAddress, int *socketAddressSize)
static unsafe SocketError WSARecvFrom(SafeHandle socketHandle, ref WSABuffer buffer, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped *overlapped, IntPtr completionRoutine)
Definition Interop.cs:289
static unsafe int send(SafeSocketHandle socketHandle, [In] byte *pinnedBuffer, [In] int len, [In] SocketFlags socketFlags)
static unsafe int select([In] int ignoredParameter, [In] IntPtr *readfds, [In] IntPtr *writefds, [In] IntPtr *exceptfds, [In] ref TimeValue timeout)
static unsafe int sendto(SafeSocketHandle socketHandle, [In] byte *pinnedBuffer, [In] int len, [In] SocketFlags socketFlags, [In] byte[] socketAddress, [In] int socketAddressSize)
static unsafe int select([In] int ignoredParameter, [In] IntPtr *readfds, [In] IntPtr *writefds, [In] IntPtr *exceptfds, [In] IntPtr nullTimeout)
static SocketError WSAConnect(SafeSocketHandle socketHandle, [In] byte[] socketAddress, [In] int socketAddressSize, [In] IntPtr inBuffer, [In] IntPtr outBuffer, [In] IntPtr sQOS, [In] IntPtr gQOS)
static SocketError shutdown([In] SafeSocketHandle socketHandle, [In] int how)
static void EnsureInitialized()
Definition Interop.cs:337
static unsafe int recvfrom(SafeSocketHandle socketHandle, [In] byte *pinnedBuffer, [In] int len, [In] SocketFlags socketFlags, [Out] byte[] socketAddress, [In][Out] ref int socketAddressSize)
static SocketError bind([In] SafeSocketHandle socketHandle, [In] byte[] socketAddress, [In] int socketAddressSize)
static unsafe SocketError WSARecv(SafeHandle socketHandle, Span< WSABuffer > buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, NativeOverlapped *overlapped, IntPtr completionRoutine)
Definition Interop.cs:278
static unsafe SocketError WSASendTo(SafeHandle socketHandle, ref WSABuffer buffer, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped *overlapped, IntPtr completionRoutine)
Definition Interop.cs:317
static unsafe SocketError WSASendTo(SafeHandle socketHandle, WSABuffer *buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped *overlapped, IntPtr completionRoutine)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref int optionValue, [In] int optionLength)
static unsafe SocketError WSAStartup(short wVersionRequested, WSAData *lpWSAData)
static SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out Linger optionValue, [In][Out] ref int optionLength)
static unsafe SocketError WSARecvFrom(SafeHandle socketHandle, WSABuffer *buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped *overlapped, IntPtr completionRoutine)
static SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out IPv6MulticastRequest optionValue, [In][Out] ref int optionLength)
static unsafe SocketError WSASend(SafeHandle socketHandle, WSABuffer *buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, NativeOverlapped *overlapped, IntPtr completionRoutine)
static unsafe bool WSAGetOverlappedResult([In] SafeSocketHandle socketHandle, [In] NativeOverlapped *overlapped, out uint bytesTransferred, [In] bool wait, out SocketFlags socketFlags)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IPv6MulticastRequest mreq, [In] int optionLength)
static unsafe SocketError WSARecv(SafeHandle socketHandle, WSABuffer *buffer, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, NativeOverlapped *overlapped, IntPtr completionRoutine)
static unsafe SocketError WSASendTo(SafeHandle socketHandle, WSABuffer[] buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped *overlapped, IntPtr completionRoutine)
Definition Interop.cs:323
static unsafe int WSADuplicateSocket([In] SafeSocketHandle s, [In] uint dwProcessId, [In] WSAPROTOCOL_INFOW *lpProtocolInfo)
static IntPtr accept(SafeSocketHandle socketHandle, [Out] byte[] socketAddress, [In][Out] ref int socketAddressSize)
static SocketError setsockopt([In] IntPtr handle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref Linger linger, [In] int optionLength)
static int SizeOf(object structure)
Definition Marshal.cs:697
static int CompareExchange(ref int location1, int value, int comparand)
unsafe fixed byte address[16]
Definition Interop.cs:65
static readonly int Size
Definition Interop.cs:24
TransmitPacketsElementFlags flags
Definition Interop.cs:83
SocketFlags flags
Definition Interop.cs:110
WSABuffer controlBuffer
Definition Interop.cs:108
unsafe fixed uint ChainEntries[7]
Definition Interop.cs:177
WSAPROTOCOLCHAIN ProtocolChain
Definition Interop.cs:146
unsafe fixed char szProtocol[256]
Definition Interop.cs:170