+#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;
+
+typedef struct
+{
+ guint32 len;
+ gpointer buf;
+} WapiWSABuf;
+
+/* If we need to support more WSAIoctl commands then define these
+ * using the bitfield flags method
+ */
+#define SIO_GET_EXTENSION_FUNCTION_POINTER 0xC8000006
+#define SIO_KEEPALIVE_VALS 0x98000004
+
+typedef gboolean (*WapiDisconnectExFn)(guint32, WapiOverlapped *, guint32,
+ guint32);
+typedef gboolean (*WapiTransmitFileFn)(guint32, gpointer, guint32, guint32,
+ WapiOverlapped *,
+ WapiTransmitFileBuffers *,
+ WapiTransmitFileFlags);
+