WSAStartup (ws2_32)
Last changed: 123.211.210.156

.
Summary
Initializes the Windows Sockets API for use by an application. Ensure WSACleanup() is called for every successful call to WSAStartup().

C# Signature:

[DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError=true)]
static extern Int32 WSAStartup(Int16 wVersionRequested, WSAData wsaData);

VB Signature:

Declare Function WSAStartup Lib "ws2_32.dll" (ByVal versionRequested As Int16, infoBuffer As WSAData) As Integer

User-Defined Types:

None.

Notes:

The version to be requested should be 2.0 or 2.2.

Tips & Tricks:

Please add some!

Sample Code:

C# Code Sample:

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
         public const int SUCCESS = 0;
         public const int HIGH_VERSION = 2;
         public const int LOW_VERSION = 2;
         public const short WORD_VERSION = 36;

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            WSAData data = new WSAData();
            int result = 0;

            data.wHighVersion = HIGH_VERSION;
            data.wVersion = LOW_VERSION;

            result = WSAStartup(WORD_VERSION, data);
            if (result == SUCCESS)
            {
                Console.WriteLine(data.Description);
                WSACleanup();
            }
            Console.ReadLine();
        }
    }

}

VB Code Sample:

Module Module1

    Public Const SUCCESS As Integer = 0
    Public Const HIGH_VERSION As Integer = 2
    Public Const LOW_VERSION As Integer = 2
    Public Const WORD_VERSION As Short = 36

    Public Structure WSAData
    Public wVersion As Short
    Public wHighVersion As Short
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257)> _
    Public Description As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=129)> _
    Public Status As String
    Public MaxSockets As Integer
    Public MaxUdpDg As Integer
    Public vendorInfoPointer As IntPtr
    End Structure

    Declare Function WSAStartup Lib "ws2_32.dll" ( _
    ByVal versionRequested As Int16, _
    ByVal infoBuffer As WSAData) As Integer

    Declare Function WSACleanup Lib "ws2_32.dll" () As Integer

    Sub Main()

    Dim resultCode As Integer = 0
    Dim data As WSAData

    data = New WSAData
    data.wHighVersion = HIGH_VERSION
    data.wVersion = LOW_VERSION

    resultCode = WSAStartup(WORD_VERSION, data)
    If (resultCode = SUCCESS) Then
        WSACleanup()
    End If

    End Sub

End Module

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
WSAStartup on MSDN