ServerVersion (POX)

Last modified: September 26, 2011

Applies to: Exchange Server 2007 | Exchange Server 2010

The ServerVersion element represents the version number of the computer that is running Microsoft Exchange Server.

AutoDiscover (POX)
  Response (POX)
    Account (POX)
      Protocol (POX)
        ServerVersion (POX)

<ServerVersion/>

Attributes and Elements

The following sections describe attributes, child elements, and parent elements.

Attributes

None.

Child Elements

None.

Parent Elements

Element

Description

Protocol (POX)

Contains the specifications for connecting a client to the computer that is running Microsoft Exchange that has the Client Access server role installed.

Text Value

The text value represents the Exchange server version number.

Remarks

The ServerVersion value is only valid if the Type (POX) element is equal to EXCH or EXPR. The ServerVersion value is a hexadecimal number that contains the MajorVersion, MinorVersion, and MajorBuildNumber of the server.

Example

The following example coverts a ServerVersion value that is returned in an Autodiscover response to obtain and display the MajorVersion, MinorVersion, and MajorBuildNumber. This example enables you to enter a hexadecimal value for the ServerVersion value. If no ServerVersion value is entered, a default ServerVersion value of 738180DA is used.

static void Main(string[] args)
{
    // Convert a ServerVersion value that is returned from an Autodiscover request.
    // The value is a hex value and can be converted to the MajorVersion, MinorVersion,
    // and MajorBuildNumber.

    Console.WriteLine("Enter ServerVersion returned from the Autodiscover (eg. 738180DA) and Enter.");
    Console.WriteLine("To use the default ServerVersion of 738180DA, just hit Enter.");
    // Get the hexadecimal ServerVersion value.
    string serverversionhex = Console.ReadLine();
    // If nothing is entered, use the default server version of "738180DA"
    if (serverversionhex == "")
    {
        serverversionhex = "738180DA";
    }
    Console.WriteLine("ServerVersion (Hex) = " + serverversionhex);

    string serverversionbinary = Convert.ToString(Convert.ToInt32(serverversionhex, 16), 2);
    // The ServerVersion (binary) should be 32 bits in length. If the 
    // server version in binary is a length of 31 characters, the leading
    // zero has been removed in the conversion process. Put the missing zero back.
    if (serverversionbinary.Length == 31)
    {
        serverversionbinary = String.Concat("0", serverversionbinary);
    }
    Console.WriteLine("ServerVersion (bin) = " + serverversionbinary);

    // The first 4 bits represent a number used for comparison against  
    // older version number structures. You can ignore this.

    // The next 6 bits represent the major version number.
    int majorversion = Convert.ToInt32(serverversionbinary.Substring(4, 6), 2);
    Console.WriteLine("MajorVersion: " + majorversion);

    // The next 6 bits represent the minor version number.
    int minorversion = Convert.ToInt32(serverversionbinary.Substring(10, 6), 2);
    Console.WriteLine("MinorVersion: " + minorversion);
    
    // The next bit represent a flag - you can ignore this.

    // The next 15 bits represent the major build number.
    int majorbuild = Convert.ToInt32(serverversionbinary.Substring(17, 15), 2);
    Console.WriteLine("MajorBuildVersion: " + majorbuild);

    Console.WriteLine("\n\nPress any key to continue");
    Console.ReadKey();
}

See Also

Other Resources