2.2.1.1 MessageFlags

The MessageFlags enumeration is used by the BinaryMethodCall (section 2.2.3.1) or BinaryMethodReturn (section 2.2.3.3) records to provide information about the structure of the record. The type of the enumeration is INT32, as specified in [MS-DTYP] section 2.2.22.

The following table 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 MethodCallArray (section 2.2.3.2) and MethodReturnCallArray (section 2.2.3.4).

Constant/value

Description

NoArgs

0x00000001

The record contains no arguments. It is in the Arg category.

ArgsInline

0x00000002

The Arguments Array 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 Array is an item in a separate Call Array record. It is in the Arg category.

NoContext

0x00000010

The record does not contain a Call Context value. It is in the Context category.

ContextInline

0x00000020

Call Context contains only a Logical Call ID 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 Method Signature is contained in the Call Array record. It is in the Signature category.

PropertiesInArray

0x00000100

Message Properties is contained in the Call Array record. It is in the Property category.

NoReturnValue

0x00000200

The Return Value is a Null object. 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 MethodReturnCallArray record. It is in the Return category.

ReturnValueInArray

0x00001000

The Return Value is contained in the MethodReturnCallArray record. It is in the Return category.

ExceptionInArray

0x00002000

An Exception is contained in the MethodReturnCallArray record. It is in the Exception category.

GenericMethod

0x00008000

The Remote Method is generic and the actual Remoting Types for the Generic Arguments are contained in the Call Array. It is in the Generic category.<2>

The preceding table lists the possible values of the enumeration. The category designation for each value provides the grouping of these values. It is a flags enumeration. However, not all combinations are valid.

To be valid, a MessageFlags value is required to conform to the following:

  • For each flags category given in the preceding table (Arg, Context, Signature, Return, Exception, Property, and Generic), the value MUST NOT have more than one flag from the Category set.

  • The Args and Exception flag categories are exclusive: if a flag from the Args category is set, the value MUST NOT have any flag from the Exception category set, and vice versa.

  • The Return and Exception flag categories are exclusive: if a flag from the Return category is set, the value MUST NOT have any flag from the Exception category set, and vice versa.

  • The Return and Signature categories are exclusive: if a flag from the Return category is set, the value MUST NOT have any flag from the Signature category set, and vice versa.

  • The Exception and Signature categories are exclusive: if a flag from the Signature category is set, the value MUST NOT have any flag from the Exception category set, and vice versa.

The following table summarizes the preceding rules.

 Arg

 Context

 Signature

 Return

 Exception

 Property

Generic

 Arg

Invalid

Valid

Valid

Valid

Invalid

Valid

Valid

 Context

Valid

Invalid

Valid

Valid

Valid

Valid

Valid

 Signature

Valid

Valid

N/A

Invalid

Invalid

Valid

Valid

 Return

Valid

Valid

Invalid

Invalid

Invalid

Valid

Valid

 Exception

Invalid

Valid

Invalid

Invalid

N/A

Valid

Valid

 Property

Valid

Valid

Valid

Valid

Valid

N/A

Valid

 Generic

Valid

Valid

Valid

Valid

Valid

Valid

N/A

The combination of Signature and Signature, Property and Property, Generic and Generic, or Exception and Exception is not applicable because there is only one bit in the Enum for each of these categories.