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.