technical content. 8/29/2008 3.0.1 Editorial Changed language and formatting in the technical content. 10/24/2008 4.0 Updated and revised the technical content. 12/5/2008 4.1 Minor Clarified the meaning of the technical content. 1/16/2009 5.0 Major Updated and revised the technical content. 2/27/2009 5.1 Clarified the meaning of the technical content. 4/10/2009 5.1.1 Editorial Changed language and formatting in the technical content. 5/22/2009 5.1.2 Editorial Changed language and formatting in the technical content. 7/2/2009 5.1.3 Editorial Changed language and formatting in the technical content. 8/14/2009 5.2 Minor Clarified the meaning of the
technical content. 9/25/2009 5.3 Clarified the meaning of the technical content. 11/6/2009 5.3.1 Editorial Changed language and formatting in the technical content. 12/18/2009 5.4 Minor Clarified the meaning of the technical content. 1/29/2010 5.5 Minor Clarified the meaning of the technical content. 3/12/2010 6.0 Major Updated and revised the technical content. 4/23/2010 7.0 Major Updated and revised the technical content. 6/4/2010 7.0.1 Editorial Changed language and formatting in the technical content. 7/16/2010 8.0 Major Updated and revised the technical content. 8/27/2010 8.0 None No changes to the meaning, language, or formatting of the
6/17/2011 8.1 Minor Clarified the meaning of the technical content. 9/23/2011 8.1 None No changes to the meaning, language, or formatting of the technical content. 12/16/2011 9.0 Updated and revised the technical content. 3/30/2012 9.0 None No changes to the meaning, language, or formatting of the technical content. 7/12/2012 9.1 Minor Clarified the meaning of the technical content. 10/25/2012 9.1 None No changes to the meaning, language, or formatting of the technical content. 1/31/2013 9.1 None No changes to the meaning, language, or formatting of the technical content. 8/8/2013 9.1 None No changes to the meaning, language,
protocols. Because the format is binary, it is not suitable for cases where the output has to be human readable. The format does not include additional information to aid in error detection or to prevent corruption. Versioning and Localization This document covers versioning issues in the following areas: Protocol Versions: The Serialization Header record has fields called MajorVersion and MinorVersion that denote the version of the .NET Remoting: Binary Format Data Structure in use. Because only one version of the .NET Remoting: Binary Format Data Structure has been defined to date, the value of MajorVersion is always set to 1 and MinorVersion to 0. Future revisions of the format would increment this value. The Serialization Header record is specified in section . Message Versions: MessageFlags (section ) defines a flag named "Generic Method". The flag indicates that the method being invoked is a . The flag is valid only in Microsoft .NET Framework 2.0, Microsoft .NET Framework 3.0, Microsoft .NET Framework 3.5, and Microsoft .NET Framework 4.0. For more information, see . There are no localization-dependent structures described in this document. Vendor-Extensible Fields This format allows implementation-specific name-value pairs called to be added to the and records.
BinaryLibrary 12 Identifies a record. ObjectNullMultiple256 13 Identifies an record. ObjectNullMultiple 14 Identifies an record ArraySinglePrimitive 15 Identifies an . ArraySingleObject 16 Identifies an record. ArraySingleString 17 Identifies an record. MethodCall 21 Identifies a record. MethodReturn 22 Identifies a record. BinaryTypeEnumeration The BinaryTypeEnumeration identifies the of a or an item. The size of the enumeration is a BYTE. Constant/value Description Primitive 0 The Remoting Type is defined in and the Remoting Type is not a string. String 1 The Remoting Type is a . Object 2 The Remoting Type is . SystemClass 3 The Remoting Type is one of the following: A Class (2) in the An Array whose is a Class (2) in the System Library An whose Ultimate Array Item Type is
The following is common for both the BinaryMethodCall and BinaryMethodReturn records. The term "Method record" is used in the description when it is applicable to both the records. The term "Call Array record" is used in the description when it is applicable to both and . Constant/value Description NoArgs 0x00000001 The record contains no arguments. It is in the Arg category. ArgsInline 0x00000002 The Arguments is in the Args field of the Method record. It is in the Arg category. ArgsIsArray 0x00000004 Each argument is an item in a separate Call Array record. It is in the Arg category. ArgsInArray 0x00000008 The Arguments is an item in a separate Call Array record. It is in the Arg category. NoContext 0x00000010 The record does not contain a value. It is in the Context category. ContextInline 0x00000020 Call Context contains only a value and is in the CallContext field of the Method record. It is in the Context category. ContextInArray 0x00000040 CallContext values are contained in an array that is contained in the Call Array record. It is in the Context category. MethodSignatureInArray 0x00000080 The is contained in the Call Array record. It is in the Signature category. PropertiesInArray 0x00000100 is contained in the Call record. It is in the Property category. NoReturnValue 0x00000200 The is a . It is in the Return category. ReturnValueVoid 0x00000400 The method has no Return Value. It is in the Return category. ReturnValueInline 0x00000800 The Return Value is in the ReturnValue field of the
Index A 10 20 20 20 Array records 31 12 enumerations ( 17, 31) 30 32 31 22 17 33 17 33 17 34 B 39 17 32 17 38 23 25 17 37 19 19 C 47 19 12 18 records 12 17 26 28 26 26 16 17 30 17 29 17 28 12 12 17 20 20 D 19 13 19 16 19 12 E 40 40 20 F 11 G 20 6 39 I 44 9 19 19 19 6 J 31 31 L 14 10 M 34 12 17 17 34 35 17 35 27 17 39 Method invocation records 12 enumerations ( 17, 20) 20