2007-10-01 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / io-layer / sockets.h
index 609c100f6a9e21bdaa82e5ce224e492f564fc01b..ed41af05637d92b09c8d712673430ede8fabb92f 100644 (file)
@@ -39,6 +39,47 @@ typedef struct
 #define INVALID_SOCKET (guint32)(~0)
 #define SOCKET_ERROR -1
 
+#define WSAID_DISCONNECTEX {0x7fda2e11,0x8630,0x436f,{0xa0, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57}}
+#define WSAID_TRANSMITFILE {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+
+typedef struct
+{
+       guint32 Data1;
+       guint16 Data2;
+       guint16 Data3;
+       guint8 Data4[8];
+} WapiGuid;
+
+typedef struct
+{
+       gpointer Head;
+       guint32 HeadLength;
+       gpointer Tail;
+       guint32 TailLength;
+} WapiTransmitFileBuffers;
+
+typedef enum {
+       TF_USE_DEFAULT_WORKER   = 0,
+       TF_DISCONNECT           = 0x01,
+       TF_REUSE_SOCKET         = 0x02,
+       TF_WRITE_BEHIND         = 0x04,
+       TF_USE_SYSTEM_THREAD    = 0x10,
+       TF_USE_KERNEL_APC       = 0x20
+} WapiTransmitFileFlags;
+
+/* If we need to support more WSAIoctl commands then define these
+ * using the bitfield flags method
+ */
+#define SIO_GET_EXTENSION_FUNCTION_POINTER 0xC8000006
+
+typedef gboolean (*WapiDisconnectExFn)(guint32, WapiOverlapped *, guint32,
+                                       WapiTransmitFileFlags);
+typedef gboolean (*WapiTransmitFileFn)(guint32, gpointer, guint32, guint32,
+                                       WapiOverlapped *,
+                                       WapiTransmitFileBuffers *,
+                                       WapiTransmitFileFlags);
+
+
 extern int WSAStartup(guint32 requested, WapiWSAData *data);
 extern int WSACleanup(void);
 extern void WSASetLastError(int error);