2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / corlib / System.Runtime.Serialization.Formatters.Binary / binary_serialization_format.htm
1 <html>\r
2         <head>\r
3                 <title>Binary Serialization Format</title>\r
4                 <style> body { FONT-SIZE: x-small; FONT-FAMILY: arial }\r
5         table { FONT-SIZE: x-small; FONT-FAMILY: arial }\r
6         </style>\r
7         </head>\r
8         <body>\r
9                 <H1>Binary Serialization Format</H1>\r
10                 <P>by Lluis Sanchez Gual&nbsp;(<A href="mailto:lluis@ideary.com">lluis@ideary.com</A>)</P>\r
11                 <UL>\r
12                         <LI>\r
13                                 <A href="#intro">Introduction</A>\r
14                         <LI>\r
15                                 <A href="#format">Format description</A>\r
16                                 <UL>\r
17                                         <LI>\r
18                                                 <A href="#example">An example</A></LI></UL>\r
19                         <LI>\r
20                                 <A href="#elements">Binary elements</A>\r
21                                 <UL>\r
22                                         <LI>\r
23                                                 <A href="#elem1">1 - RefTypeObject</A>\r
24                                         <LI>\r
25                                                 <A href="#elem4">4 - RuntimeObject</A>\r
26                                         <LI>\r
27                                                 <A href="#elem5">5 - ExternalObject</A>\r
28                                         <LI>\r
29                                                 <A href="#elem6">6 - String</A>\r
30                                         <LI>\r
31                                                 <A href="#elem7">7 - GenericArray</A>\r
32                                         <LI>\r
33                                                 <A href="#elem8">8 - BoxedPrimitiveTypeValue</A>\r
34                                         <LI>\r
35                                                 <A href="#elem9">9 - ObjectReference</A>\r
36                                         <LI>\r
37                                                 <A href="#elem10">10 - NullValue</A>\r
38                                         <LI>\r
39                                                 <A href="#elem11">11 - End</A>\r
40                                         <LI>\r
41                                                 <A href="#elem12">12 - Assembly</A>\r
42                                         <LI>\r
43                                                 <A href="#elem13">13 - ArrayFiller8b</A>\r
44                                         <LI>\r
45                                                 <A href="#elem14">14 - ArrayFiller32b</A>\r
46                                         <LI>\r
47                                                 <A href="#elem15">15 - ArrayOfPrimitiveType</A>\r
48                                         <LI>\r
49                                                 <A href="#elem16">16 - ArrayOfObject</A>\r
50                                         <LI>\r
51                                                 <A href="#elem17">17 - ArrayOfString</A>\r
52                                         <LI>\r
53                                                 <A href="#elem21">21 - MethodCall</A>\r
54                                         <LI>\r
55                                                 <A href="#elem22">22 - MethodResponse</A></LI></UL>\r
56                         <LI>\r
57                                 <A href="#other">Other Elements</A>\r
58                         </LI>\r
59                         <UL>\r
60                                 <LI>\r
61                                         <A href="#string">string</A>\r
62                                 <LI>\r
63                                         <A href="#primitive-value">primitive-value</A>\r
64                                 <LI>\r
65                                         <A href="#value">value</A>\r
66                                 <LI>\r
67                                         <A href="#type-tag">type-tag</A>\r
68                                 <LI>\r
69                                         <A href="#type-spec">type-spec</A>\r
70                                 <LI>\r
71                                         <A href="#method-call-flags">method-call-flags</A>\r
72                                 <LI>\r
73                                         <A href="#method-response-flags">method-response-flags</A>\r
74                                 <LI>\r
75                                         <A href="#return-type-tag">return-type-tag</A>\r
76                                 <LI>\r
77                                         <A href="#primitive-type-code">primitive-type-code</A></LI></UL>\r
78                 </UL>\r
79                 <a name="intro"></a>\r
80                 <H2>Introduction</H2>\r
81                 <P>This document describes the format used by the class BinaryFormatter to \r
82                         serialize object graphs. The document is based on the analysis of the output of \r
83                         the BinaryFormatter&nbsp;of the Microsoft .NET runtime, so it is probably not \r
84                         complete, since I cannot be sure that I have tested all cases. In fact, there \r
85                         are some gaps in some tables of codes, so if you find a meaning for the missing \r
86                         codes, please contact me and I'll update the document.</P>\r
87                 <a name="format"></a>\r
88                 <H2>Format description</H2>\r
89                 <P>An object serialization is a sequence of binary elements.&nbsp;A binary element \r
90                         coluld be for example a description of an object, an array, an assembly, etc. \r
91                         Each binary element has a specific format, which is described in the following \r
92                         sections.</P>\r
93                 <P>This table shows the available binary elements:</P>\r
94                 <P>\r
95                         <TABLE id="Table1" style="WIDTH: 560px; HEIGHT: 94px" cellSpacing="1" cellPadding="1" width="560" border="1">\r
96                                 <TR>\r
97                                         <TD width="40"><STRONG>Code</STRONG></TD>\r
98                                         <TD><STRONG>Label</STRONG></TD>\r
99                                         <TD><STRONG>Description</STRONG></TD>\r
100                                 </TR>\r
101                                 <TR>\r
102                                         <TD width="40">0</TD>\r
103                                         <TD>Header</TD>\r
104                                         <TD>Allways written at the beggining of a serialization</TD>\r
105                                 </TR>\r
106                                 <TR>\r
107                                         <TD width="40">1</TD>\r
108                                         <TD><A href="#elem1">RefTypeObject</A></TD>\r
109                                         <TD>Object with no type metadata</TD>\r
110                                 </TR>\r
111                                 <TR>\r
112                                         <TD width="40">4</TD>\r
113                                         <TD><A href="#elem4">RuntimeObject</A></TD>\r
114                                         <TD>Corlib object</TD>\r
115                                 </TR>\r
116                                 <TR>\r
117                                         <TD width="40">5</TD>\r
118                                         <TD><A href="#elem5">ExternalObject</A></TD>\r
119                                         <TD>Object</TD>\r
120                                 </TR>\r
121                                 <TR>\r
122                                         <TD width="40">6</TD>\r
123                                         <TD><A href="#elem6">String</A></TD>\r
124                                         <TD>String</TD>\r
125                                 </TR>\r
126                                 <TR>\r
127                                         <TD width="40">7</TD>\r
128                                         <TD><A href="#elem7">GenericArray</A></TD>\r
129                                         <TD>Array</TD>\r
130                                 </TR>\r
131                                 <TR>\r
132                                         <TD width="40">8</TD>\r
133                                         <TD><A href="#elem8">BoxedPrimitiveTypeValue</A></TD>\r
134                                         <TD>Primitive type value</TD>\r
135                                 </TR>\r
136                                 <TR>\r
137                                         <TD width="40">9</TD>\r
138                                         <TD><A href="#elem9">ObjectReference</A></TD>\r
139                                         <TD>Object reference</TD>\r
140                                 </TR>\r
141                                 <TR>\r
142                                         <TD width="40">10</TD>\r
143                                         <TD><A href="#elem10">NullValue</A></TD>\r
144                                         <TD>Null value</TD>\r
145                                 </TR>\r
146                                 <TR>\r
147                                         <TD width="40">11</TD>\r
148                                         <TD><A href="#elem11">End</A></TD>\r
149                                         <TD>End of stream</TD>\r
150                                 </TR>\r
151                                 <TR>\r
152                                         <TD width="40">12</TD>\r
153                                         <TD><A href="#elem12">Assembly</A></TD>\r
154                                         <TD>Assembly declaration</TD>\r
155                                 </TR>\r
156                                 <TR>\r
157                                         <TD width="40">13</TD>\r
158                                         <TD><A href="#elem13">ArrayFiller8b</A></TD>\r
159                                         <TD>Null filler (8 bit length)</TD>\r
160                                 </TR>\r
161                                 <TR>\r
162                                         <TD width="40">14</TD>\r
163                                         <TD><A href="#elem14">ArrayFiller32b</A></TD>\r
164                                         <TD>Null filler (16 bit length)</TD>\r
165                                 </TR>\r
166                                 <TR>\r
167                                         <TD width="40">15</TD>\r
168                                         <TD><A href="#elem15">ArrayOfPrimitiveType</A></TD>\r
169                                         <TD>Array of primitive type</TD>\r
170                                 </TR>\r
171                                 <TR>\r
172                                         <TD width="40">16</TD>\r
173                                         <TD><A href="#elem16">ArrayOfObject</A></TD>\r
174                                         <TD>Array of Object</TD>\r
175                                 </TR>\r
176                                 <TR>\r
177                                         <TD width="40">17</TD>\r
178                                         <TD><A href="#elem17">ArrayOfString</A></TD>\r
179                                         <TD>Array of string</TD>\r
180                                 </TR>\r
181                                 <TR>\r
182                                         <TD width="40">21</TD>\r
183                                         <TD><A href="#elem21">MethodCall</A></TD>\r
184                                         <TD>Method call</TD>\r
185                                 </TR>\r
186                                 <TR>\r
187                                         <TD width="40">22</TD>\r
188                                         <TD><A href="#elem22">MethodResponse</A></TD>\r
189                                         <TD>Method response</TD>\r
190                                 </TR>\r
191                         </TABLE>\r
192                 </P>\r
193                 <P>All elements begin with a byte that identifies the type of element. It is shown \r
194                         in the "Code" column. In the implementation of the formatter I use an enum to \r
195                         represent those codes. The "Label" column is the name of the corresponding enum \r
196                         element.</P>\r
197                 <a name="example"></a>\r
198                 <H3>An example</H3>\r
199                 <P>The best way to underestand the format is to look at an example. Let's see how \r
200                         the following structure of classes would be serialized:</P>\r
201                 <BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">\r
202                         <P><FONT face="Courier New">class A<BR>\r
203                                         {<BR>\r
204                                         &nbsp;&nbsp;&nbsp;&nbsp; B bval = new B();<BR>\r
205                                         &nbsp;&nbsp;&nbsp;&nbsp; C cval = new C();<BR>\r
206                                         &nbsp;&nbsp;&nbsp;&nbsp; string msg = "hello";<BR>\r
207                                         }<BR>\r
208                                         <BR>\r
209                                         class B<BR>\r
210                                         {<BR>\r
211                                         &nbsp;&nbsp;&nbsp;&nbsp; string str = "bye";<BR>\r
212                                         }<BR>\r
213                                         <BR>\r
214                                         struct C<BR>\r
215                                         {<BR>\r
216                                         &nbsp;&nbsp;&nbsp;&nbsp; string[] info = new string[] {"hello","world"}<BR>\r
217                                         }</FONT></P>\r
218                 </BLOCKQUOTE>\r
219                 <P>The serialization of an instance of class A would result in a sequence of binary \r
220                         elements like the following:</P>\r
221                 <P>\r
222                         <TABLE id="Table35" cellSpacing="1" cellPadding="1" width="100%" border="1">\r
223                                 <TR>\r
224                                         <TD vAlign="top" width="169"><STRONG>Element</STRONG></TD>\r
225                                         <TD vAlign="top" width="40"><STRONG>Bytes</STRONG></TD>\r
226                                         <TD vAlign="top" width="186"><STRONG>Data</STRONG></TD>\r
227                                         <TD vAlign="top"><STRONG>Comments</STRONG></TD>\r
228                                 </TR>\r
229                                 <TR>\r
230                                         <TD vAlign="top" width="169">Header</TD>\r
231                                         <TD vAlign="top" width="40">0<BR>\r
232                                                 1,0,0,0,<BR>\r
233                                                 255,255,255,255,<BR>\r
234                                                 1,0,0,0,0,0,0,0</TD>\r
235                                         <TD vAlign="top" width="186">Element code ?</TD>\r
236                                         <TD vAlign="top">This sequence of bytes is serialized at the beginning. I'm sure it \r
237                                                 has a meaning, but I don't know it.</TD>\r
238                                 </TR>\r
239                                 <TR>\r
240                                         <TD vAlign="top" width="169"><A href="#elem12">Assembly</A></TD>\r
241                                         <TD vAlign="top" width="40">1<BR>\r
242                                                 1,0,0,0<BR>\r
243                                                 "MyAssembly"</TD>\r
244                                         <TD vAlign="top" width="186">Element code<BR>\r
245                                                 ID of the assembly (1)<BR>\r
246                                                 Full name of the assembly</TD>\r
247                                         <TD vAlign="top">\r
248                                                 <P>Before serializing an object, the assembly where the object is implemented has \r
249                                                         to be serialized. The formatter assigns an ID to the assembly (ID 1 in this \r
250                                                         case). This ID will by used to refer to this assembly.</P>\r
251                                         </TD>\r
252                                 </TR>\r
253                                 <TR>\r
254                                         <TD vAlign="top" width="169"><A href="#elem5">ExternalObject</A></TD>\r
255                                         <TD vAlign="top" width="40">5<BR>\r
256                                                 2,0,0,0<BR>\r
257                                                 "A"<BR>\r
258                                                 3,0,0,0<BR>\r
259                                                 "bval","cval","msg"<BR>\r
260                                                 4,4,1<BR>\r
261                                                 "B"<BR>\r
262                                                 1,0,0,0<BR>\r
263                                                 "C"<BR>\r
264                                                 1,0,0,0<BR>\r
265                                                 1,0,0,0</TD>\r
266                                         <TD vAlign="top" width="186">Element code<BR>\r
267                                                 Object ID (2)<BR>\r
268                                                 Class name<BR>\r
269                                                 Field count<BR>\r
270                                                 Field names<BR>\r
271                                                 Field type tags<BR>\r
272                                                 Class name of field "bval"<BR>\r
273                                                 Assembly ID of field "bval"<BR>\r
274                                                 Class name of field "cval"<BR>\r
275                                                 Assembly ID of field "cval"<BR>\r
276                                                 Assembly ID of this object</TD>\r
277                                         <TD vAlign="top">Serialization of the root object. Each object has an ID that is \r
278                                                 used, for example, to specify object relations. The object binary element has \r
279                                                 two parts. The first one is type metadata: the name and type of serialized \r
280                                                 fields. The second part is the object data: field values. The data part is \r
281                                                 shown in the following nested elements.</TD>\r
282                                 </TR>\r
283                                 <TR>\r
284                                         <TD vAlign="top" width="169">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="#elem9">ObjectReference</A></TD>\r
285                                         <TD vAlign="top" width="40">9<BR>\r
286                                                 5,0,0,0</TD>\r
287                                         <TD vAlign="top" width="186">Element code<BR>\r
288                                                 ID of the referred object (5)</TD>\r
289                                         <TD vAlign="top">Reference objects are not serialized inside the container element. \r
290                                                 Instead, an ObjectReference is serialized, and the object itself queued for \r
291                                                 later serialization.</TD>\r
292                                 </TR>\r
293                                 <TR>\r
294                                         <TD vAlign="top" width="169">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="#elem5">ExternalObject</A></TD>\r
295                                         <TD vAlign="top" width="40">5<BR>\r
296                                                 3,0,0,0<BR>\r
297                                                 C<BR>\r
298                                                 1,0,0,0<BR>\r
299                                                 "info"<BR>\r
300                                                 6<BR>\r
301                                                 1,0,0,0</TD>\r
302                                         <TD vAlign="top" width="186">Element code<BR>\r
303                                                 Object ID (3)<BR>\r
304                                                 Class name<BR>\r
305                                                 Field count<BR>\r
306                                                 Field name<BR>\r
307                                                 Field type tag<BR>\r
308                                                 Assembly ID of this object</TD>\r
309                                         <TD vAlign="top">On the other hand, value type objects are serialized inside the \r
310                                                 container element.</TD>\r
311                                 </TR>\r
312                                 <TR>\r
313                                         <TD vAlign="top" width="169">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
314                                                 <A href="#elem9">ObjectReference</A></TD>\r
315                                         <TD vAlign="top" width="40">9<BR>\r
316                                                 7,0,0,0</TD>\r
317                                         <TD vAlign="top" width="186">Element code<BR>\r
318                                                 ID of the referred object (7)</TD>\r
319                                         <TD vAlign="top">This is again a reference object, so it is serialized later.</TD>\r
320                                 </TR>\r
321                                 <TR>\r
322                                         <TD vAlign="top" width="169">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="#elem6">String</A></TD>\r
323                                         <TD vAlign="top" width="40">6<BR>\r
324                                                 4,0,0,0<BR>\r
325                                                 "hello"</TD>\r
326                                         <TD vAlign="top" width="186">Element code<BR>\r
327                                                 Object ID (4)<BR>\r
328                                                 String value</TD>\r
329                                         <TD vAlign="top">Strings are serialized like value objects</TD>\r
330                                 </TR>\r
331                                 <TR>\r
332                                         <TD vAlign="top" width="169"><A href="#elem5">ExternalObject</A></TD>\r
333                                         <TD vAlign="top" width="40">5<BR>\r
334                                                 5,0,0,0<BR>\r
335                                                 "B"<BR>\r
336                                                 1,0,0,0<BR>\r
337                                                 "str"<BR>\r
338                                                 1<BR>\r
339                                                 1,0,0,0</TD>\r
340                                         <TD vAlign="top" width="186">Element code<BR>\r
341                                                 Object ID (5)<BR>\r
342                                                 Class name<BR>\r
343                                                 Field count<BR>\r
344                                                 Field name<BR>\r
345                                                 Field type tag<BR>\r
346                                                 Assembly ID of this object</TD>\r
347                                         <TD vAlign="top">\r
348                                                 <P>Reference objects queued for serialization are serialized after the root object.</P>\r
349                                         </TD>\r
350                                 </TR>\r
351                                 <TR>\r
352                                         <TD vAlign="top" width="169">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="#elem6">String</A></TD>\r
353                                         <TD vAlign="top" width="40">6<BR>\r
354                                                 6,0,0,0<BR>\r
355                                                 "bye"</TD>\r
356                                         <TD vAlign="top" width="186">Element code<BR>\r
357                                                 Object ID (6)<BR>\r
358                                                 String value</TD>\r
359                                         <TD vAlign="top">A string</TD>\r
360                                 </TR>\r
361                                 <TR>\r
362                                         <TD vAlign="top" width="169"><A href="#elem17">ArrayOfString</A></TD>\r
363                                         <TD vAlign="top" width="40">17<BR>\r
364                                                 7,0,0,0<BR>\r
365                                                 2,0,0,0</TD>\r
366                                         <TD vAlign="top" width="186">Element code<BR>\r
367                                                 Object ID (7)<BR>\r
368                                                 Element count</TD>\r
369                                         <TD vAlign="top">This could be also encoded using the binary&nbsp;element Array \r
370                                                 (7), but ArrayOfString is more specific and saves bytes.</TD>\r
371                                 </TR>\r
372                                 <TR>\r
373                                         <TD vAlign="top" width="169">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="#elem9">ObjectReference</A></TD>\r
374                                         <TD vAlign="top" width="40">9<BR>\r
375                                                 4,0,0,0</TD>\r
376                                         <TD vAlign="top" width="186">Element code<BR>\r
377                                                 ID of the referred object (4)</TD>\r
378                                         <TD vAlign="top">This string was already serialized. Use a backwards reference.</TD>\r
379                                 </TR>\r
380                                 <TR>\r
381                                         <TD vAlign="top" width="169">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="#elem6">String</A></TD>\r
382                                         <TD vAlign="top" width="40">6<BR>\r
383                                                 8,0,0,0<BR>\r
384                                                 "world"</TD>\r
385                                         <TD vAlign="top" width="186">Element code<BR>\r
386                                                 Object ID (8)<BR>\r
387                                                 String value</TD>\r
388                                         <TD vAlign="top">Another string</TD>\r
389                                 </TR>\r
390                         </TABLE>\r
391                 </P>\r
392                 <a name="elements"></a>\r
393                 <H2>Binary elements</H2>\r
394                 <P>The following sections show the format of each binary element. The format is \r
395                         presented in a table with two columns. The first one shows the sequence of \r
396                         bytes and the second one a description of each element in the sequence.</P>\r
397                 <P>A special notation is used to represent the bytes. Here are some examples:</P>\r
398                 <P>\r
399                         <TABLE id="Table36" style="WIDTH: 448px; HEIGHT: 129px" cellSpacing="1" cellPadding="1" width="448" border="1">\r
400                                 <TR>\r
401                                         <TD width="193"><STRONG>Example of element</STRONG></TD>\r
402                                         <TD><STRONG>Description</STRONG></TD>\r
403                                 </TR>\r
404                                 <TR>\r
405                                         <TD width="193">(byte) 7</TD>\r
406                                         <TD>A single byte</TD>\r
407                                 </TR>\r
408                                 <TR>\r
409                                         <TD width="193">uint</TD>\r
410                                         <TD>Any uint value (4 bytes)</TD>\r
411                                 </TR>\r
412                                 <TR>\r
413                                         <TD width="193"><EM><A href="#type-tag">type-tag</A></EM></TD>\r
414                                         <TD>Names&nbsp;in italic are described in the section "Other elements"</TD>\r
415                                 </TR>\r
416                                 <TR>\r
417                                         <TD width="193"><EM><A href="#string">string</A></EM>&nbsp;*</TD>\r
418                                         <TD>* represents a sequence of elements</TD>\r
419                                 </TR>\r
420                                 <TR>\r
421                                         <TD width="193">object</TD>\r
422                                         <TD>Full serialization of an object</TD>\r
423                                 </TR>\r
424                         </TABLE>\r
425                 </P>\r
426                 <a name="elem1"></a>\r
427                 <H3>1 - RefTypeObject\r
428                 </H3>\r
429                 <P>An object is serialized in two parts. The first one is type metadata, and the \r
430                         second one is the object data. When several objects of the same type are \r
431                         serialized, only the first one has the metadata part. The other objects are \r
432                         serialized using the RefTypeObject element, which instead of the metadata, it \r
433                         includes an ID of an object that is of the same type as the one being \r
434                         serialized.</P>\r
435                 <P>\r
436                         <TABLE id="Table2" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
437                                 <TR>\r
438                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
439                                         <TD><STRONG>Description</STRONG></TD>\r
440                                 </TR>\r
441                                 <TR>\r
442                                         <TD width="142">(byte) 1</TD>\r
443                                         <TD>Element code</TD>\r
444                                 </TR>\r
445                                 <TR>\r
446                                         <TD width="142">uint</TD>\r
447                                         <TD>Object ID</TD>\r
448                                 </TR>\r
449                                 <TR>\r
450                                         <TD width="142">uint</TD>\r
451                                         <TD>ID of a previously serialized object from which to take type metadata.</TD>\r
452                                 </TR>\r
453                                 <TR>\r
454                                         <TD width="142"><EM><A href="#value">value</A> </EM>*</TD>\r
455                                         <TD>Values of the fields of the object</TD>\r
456                                 </TR>\r
457                         </TABLE>\r
458                 </P>\r
459                 <a name="elem4"></a>\r
460                 <H3>4 - RuntimeObject</H3>\r
461                 <P>This element is used to serialize objects of types that are implemented in the \r
462                         core library of the framework. The only difference from the format for other \r
463                         objects if that it does not include assembly information, which is not needed \r
464                         since the assembly will always be mscorlib.</P>\r
465                 <P>\r
466                         <TABLE id="Table21" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
467                                 <TR>\r
468                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
469                                         <TD><STRONG>Description</STRONG></TD>\r
470                                 </TR>\r
471                                 <TR>\r
472                                         <TD width="142">(byte) 4</TD>\r
473                                         <TD>Element code</TD>\r
474                                 </TR>\r
475                                 <TR>\r
476                                         <TD width="142">uint</TD>\r
477                                         <TD>Object ID</TD>\r
478                                 </TR>\r
479                                 <TR>\r
480                                         <TD width="142"><EM><A href="#string">string</A></EM></TD>\r
481                                         <TD>Class name, including namespace</TD>\r
482                                 </TR>\r
483                                 <TR>\r
484                                         <TD width="142">uint</TD>\r
485                                         <TD>Number of serialized fields</TD>\r
486                                 </TR>\r
487                                 <TR>\r
488                                         <TD width="142"><EM><A href="#string">string</A> </EM>*</TD>\r
489                                         <TD>Names of the fields</TD>\r
490                                 </TR>\r
491                                 <TR>\r
492                                         <TD width="142"><EM><A href="#type-tag">type-tag</A> *</EM></TD>\r
493                                         <TD>type-tag of each field</TD>\r
494                                 </TR>\r
495                                 <TR>\r
496                                         <TD width="142"><EM><A href="#type-spec">type-spec</A> *</EM></TD>\r
497                                         <TD>type-spec of each field</TD>\r
498                                 </TR>\r
499                                 <TR>\r
500                                         <TD width="142"><EM><A href="#value">value</A> *</EM></TD>\r
501                                         <TD>Values of the fields of the object</TD>\r
502                                 </TR>\r
503                         </TABLE>\r
504                 </P>\r
505                 <a name="elem5"></a>\r
506                 <H3>5 - ExternalObject</H3>\r
507                 <P>This element can be used to serialize any object from any assembly.</P>\r
508                 <H3>\r
509                         <TABLE id="Table22" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
510                                 <TR>\r
511                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
512                                         <TD><STRONG>Description</STRONG></TD>\r
513                                 </TR>\r
514                                 <TR>\r
515                                         <TD width="142">(byte) 5</TD>\r
516                                         <TD>Element code</TD>\r
517                                 </TR>\r
518                                 <TR>\r
519                                         <TD width="142">uint</TD>\r
520                                         <TD>Object ID</TD>\r
521                                 </TR>\r
522                                 <TR>\r
523                                         <TD width="142"><EM><A href="#string">string</A></EM></TD>\r
524                                         <TD>Class name, including namespace</TD>\r
525                                 </TR>\r
526                                 <TR>\r
527                                         <TD width="142">uint</TD>\r
528                                         <TD>Number of serialized fields</TD>\r
529                                 </TR>\r
530                                 <TR>\r
531                                         <TD width="142"><EM><A href="#string">string</A> </EM>*</TD>\r
532                                         <TD>Names of the fields</TD>\r
533                                 </TR>\r
534                                 <TR>\r
535                                         <TD width="142"><EM><A href="#type-tag">type-tag</A> </EM>*</TD>\r
536                                         <TD>type-tag of each field</TD>\r
537                                 </TR>\r
538                                 <TR>\r
539                                         <TD width="142"><EM><A href="#type-spec">type-spec</A> </EM>*</TD>\r
540                                         <TD>type-spec of each field</TD>\r
541                                 </TR>\r
542                                 <TR>\r
543                                         <TD width="142">uint</TD>\r
544                                         <TD>ID of the assembly where the class is defined (the assembly must have been \r
545                                                 serialized before the class using the binary element 12)</TD>\r
546                                 </TR>\r
547                                 <TR>\r
548                                         <TD width="142"><EM><A href="#value">value</A> </EM>*</TD>\r
549                                         <TD>Values of the fields of the object</TD>\r
550                                 </TR>\r
551                         </TABLE>\r
552                 </H3>\r
553                 <a name="elem6"></a>\r
554                 <H3>6 - String</H3>\r
555                 <P>A string value.</P>\r
556                 <P>\r
557                         <TABLE id="Table23" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
558                                 <TR>\r
559                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
560                                         <TD><STRONG>Description</STRONG></TD>\r
561                                 </TR>\r
562                                 <TR>\r
563                                         <TD width="142">(byte) 6</TD>\r
564                                         <TD>Element code</TD>\r
565                                 </TR>\r
566                                 <TR>\r
567                                         <TD width="142">uint</TD>\r
568                                         <TD>Object ID</TD>\r
569                                 </TR>\r
570                                 <TR>\r
571                                         <TD width="142"><EM><A href="#string">string</A></EM></TD>\r
572                                         <TD>Value of the string</TD>\r
573                                 </TR>\r
574                         </TABLE>\r
575                 </P>\r
576                 <a name="elem7"></a>\r
577                 <H3>7 - GenericArray</H3>\r
578                 <P>This element can be used to represent any array.</P>\r
579                 <H3>\r
580                         <TABLE id="Table24" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
581                                 <TR>\r
582                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
583                                         <TD><STRONG>Description</STRONG></TD>\r
584                                 </TR>\r
585                                 <TR>\r
586                                         <TD width="142">(byte) 7</TD>\r
587                                         <TD>Element code</TD>\r
588                                 </TR>\r
589                                 <TR>\r
590                                         <TD width="142">uint</TD>\r
591                                         <TD>Object ID</TD>\r
592                                 </TR>\r
593                                 <TR>\r
594                                         <TD width="142">byte</TD>\r
595                                         <TD>Array type: 0:single dimension, 1: jagged, 2: multi-dimensional</TD>\r
596                                 </TR>\r
597                                 <TR>\r
598                                         <TD width="142">uint</TD>\r
599                                         <TD>Number of dimensions (rank)</TD>\r
600                                 </TR>\r
601                                 <TR>\r
602                                         <TD width="142">uint *</TD>\r
603                                         <TD>Number of&nbsp;elements for each dimension</TD>\r
604                                 </TR>\r
605                                 <TR>\r
606                                         <TD width="142"><EM><A href="#type-tag">type-tag</A></EM></TD>\r
607                                         <TD>type-tag of array's&nbsp;element type</TD>\r
608                                 </TR>\r
609                                 <TR>\r
610                                         <TD width="142"><EM><A href="#type-spec">type-spec</A></EM></TD>\r
611                                         <TD>type-spec of array's&nbsp;element type</TD>\r
612                                 </TR>\r
613                                 <TR>\r
614                                         <TD width="142"><EM><A href="#value">value</A> *</EM></TD>\r
615                                         <TD>Values of the elements, row by row</TD>\r
616                                 </TR>\r
617                         </TABLE>\r
618                 </H3>\r
619                 <a name="elem8"></a>\r
620                 <H3>8 - BoxedPrimitiveTypeValue</H3>\r
621                 <P>This element represents a primitive type value boxed as an object.</P>\r
622                 <P>\r
623                         <TABLE id="Table25" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
624                                 <TR>\r
625                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
626                                         <TD><STRONG>Description</STRONG></TD>\r
627                                 </TR>\r
628                                 <TR>\r
629                                         <TD width="142">(byte) 8</TD>\r
630                                         <TD>Element code</TD>\r
631                                 </TR>\r
632                                 <TR>\r
633                                         <TD width="142"><EM><A href="#type-spec">type-spec</A></EM></TD>\r
634                                         <TD>type-spec of the primitive type</TD>\r
635                                 </TR>\r
636                                 <TR>\r
637                                         <TD width="142"><EM><A href="#primitive-value">primitive-value</A></EM></TD>\r
638                                         <TD>Raw value</TD>\r
639                                 </TR>\r
640                         </TABLE>\r
641                 </P>\r
642                 <a name="elem9"></a>\r
643                 <H3>9 - ObjectReference</H3>\r
644                 <P>This element represents a reference to an object already serialized (backwards \r
645                         reference) or that will be serialized later (forward reference).\r
646                 </P>\r
647                 <P>\r
648                         <TABLE id="Table26" style="WIDTH: 568px; HEIGHT: 16px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
649                                 <TR>\r
650                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
651                                         <TD><STRONG>Description</STRONG></TD>\r
652                                 </TR>\r
653                                 <TR>\r
654                                         <TD width="142">(byte) 9</TD>\r
655                                         <TD>Element code</TD>\r
656                                 </TR>\r
657                                 <TR>\r
658                                         <TD width="142">uint</TD>\r
659                                         <TD>ID of the referred object</TD>\r
660                                 </TR>\r
661                         </TABLE>\r
662                 </P>\r
663                 <a name="elem10"></a>\r
664                 <H3>10 - NullValue</H3>\r
665                 <P>A&nbsp;null value.</P>\r
666                 <TABLE id="Table27" style="WIDTH: 568px; HEIGHT: 16px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
667                         <TR>\r
668                                 <TD width="142"><STRONG>Element</STRONG></TD>\r
669                                 <TD><STRONG>Description</STRONG></TD>\r
670                         </TR>\r
671                         <TR>\r
672                                 <TD width="142">(byte) 10</TD>\r
673                                 <TD>Element code</TD>\r
674                         </TR>\r
675                 </TABLE>\r
676                 <P></P>\r
677                 <a name="elem11"></a>\r
678                 <H3>\r
679                         <P>11 - End</P>\r
680                 </H3>\r
681                 <P>This element marks the end of the serialized object graph.</P>\r
682                 <TABLE id="Table28" style="WIDTH: 568px; HEIGHT: 16px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
683                         <TR>\r
684                                 <TD width="142"><STRONG>Element</STRONG></TD>\r
685                                 <TD><STRONG>Description</STRONG></TD>\r
686                         </TR>\r
687                         <TR>\r
688                                 <TD width="142">(byte) 11</TD>\r
689                                 <TD>Element code</TD>\r
690                         </TR>\r
691                 </TABLE>\r
692                 <a name="elem12"></a>\r
693                 <H3>\r
694                         <P>12 - Assembly</P>\r
695                 </H3>\r
696                 <P>Defines an assembly. Each assembly is defined only once and has an ID. This ID \r
697                         is used when serializing an object (element 5) to specify the assembly where \r
698                         object's type is implemented.</P>\r
699                 <TABLE id="Table29" style="WIDTH: 568px; HEIGHT: 16px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
700                         <TR>\r
701                                 <TD width="142"><STRONG>Element</STRONG></TD>\r
702                                 <TD><STRONG>Description</STRONG></TD>\r
703                         </TR>\r
704                         <TR>\r
705                                 <TD width="142">(byte) 12</TD>\r
706                                 <TD>Element code</TD>\r
707                         </TR>\r
708                         <TR>\r
709                                 <TD width="142">uint</TD>\r
710                                 <TD>Assembly ID</TD>\r
711                         </TR>\r
712                         <TR>\r
713                                 <TD width="142"><EM><A href="#string">string</A></EM></TD>\r
714                                 <TD>Full name of the assembly</TD>\r
715                         </TR>\r
716                 </TABLE>\r
717                 <a name="elem13"></a>\r
718                 <H3>\r
719                         <P>13 - ArrayFiller8b</P>\r
720                 </H3>\r
721                 <P>This element can be used when serializing array data to specify multiple \r
722                         consecutive null values. It it only used in single dimension arrays of \r
723                         reference objects (not valid for value-type objects).</P>\r
724                 <TABLE id="Table30" style="WIDTH: 568px; HEIGHT: 16px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
725                         <TR>\r
726                                 <TD width="142"><STRONG>Element</STRONG></TD>\r
727                                 <TD><STRONG>Description</STRONG></TD>\r
728                         </TR>\r
729                         <TR>\r
730                                 <TD width="142">(byte) 13</TD>\r
731                                 <TD>Element code</TD>\r
732                         </TR>\r
733                         <TR>\r
734                                 <TD width="142">byte</TD>\r
735                                 <TD>Number of consecutive null values</TD>\r
736                         </TR>\r
737                 </TABLE>\r
738                 <P></P>\r
739                 <a name="elem14"></a>\r
740                 <H3>\r
741                         <P>14 - ArrayFiller32b</P>\r
742                 </H3>\r
743                 <P>The same as ArrayFiller8b, but it uses a uint to specify the length.</P>\r
744                 <TABLE id="Table31" style="WIDTH: 568px; HEIGHT: 16px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
745                         <TR>\r
746                                 <TD width="142"><STRONG>Element</STRONG></TD>\r
747                                 <TD><STRONG>Description</STRONG></TD>\r
748                         </TR>\r
749                         <TR>\r
750                                 <TD width="142">(byte) 14</TD>\r
751                                 <TD>Element code</TD>\r
752                         </TR>\r
753                         <TR>\r
754                                 <TD width="142">uint</TD>\r
755                                 <TD>Number of consecutive null values</TD>\r
756                         </TR>\r
757                 </TABLE>\r
758                 <P></P>\r
759                 <a name="elem15"></a>\r
760                 <H3>\r
761                         <P>15 - ArrayOfPrimitiveType</P>\r
762                 </H3>\r
763                 <P>This element can be used to represent a single dimension array of primitive type \r
764                         values.</P>\r
765                 <P>\r
766                         <TABLE id="Table32" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
767                                 <TR>\r
768                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
769                                         <TD><STRONG>Description</STRONG></TD>\r
770                                 </TR>\r
771                                 <TR>\r
772                                         <TD width="142">(byte) 15</TD>\r
773                                         <TD>Element code</TD>\r
774                                 </TR>\r
775                                 <TR>\r
776                                         <TD width="142">uint</TD>\r
777                                         <TD>Object ID</TD>\r
778                                 </TR>\r
779                                 <TR>\r
780                                         <TD width="142">uint</TD>\r
781                                         <TD>Number of&nbsp;elements</TD>\r
782                                 </TR>\r
783                                 <TR>\r
784                                         <TD width="142"><EM><A href="#type-spec">type-spec</A></EM></TD>\r
785                                         <TD>type-spec of array's&nbsp;element type</TD>\r
786                                 </TR>\r
787                                 <TR>\r
788                                         <TD width="142"><EM><A href="#primitive-value">primitie-value</A> *</EM></TD>\r
789                                         <TD>Values of the elements</TD>\r
790                                 </TR>\r
791                         </TABLE>\r
792                 </P>\r
793                 <a name="elem16"></a>\r
794                 <H3>16&nbsp;- ArrayOfObject</H3>\r
795                 <P>This element can be used to represent a single dimension array of Object (i.e. \r
796                         an object[] ).</P>\r
797                 <P>\r
798                         <TABLE id="Table33" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
799                                 <TR>\r
800                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
801                                         <TD><STRONG>Description</STRONG></TD>\r
802                                 </TR>\r
803                                 <TR>\r
804                                         <TD width="142">(byte) 16</TD>\r
805                                         <TD>Element code</TD>\r
806                                 </TR>\r
807                                 <TR>\r
808                                         <TD width="142">uint</TD>\r
809                                         <TD>Object ID</TD>\r
810                                 </TR>\r
811                                 <TR>\r
812                                         <TD width="142">uint</TD>\r
813                                         <TD>Number of&nbsp;elements</TD>\r
814                                 </TR>\r
815                                 <TR>\r
816                                         <TD width="142">object *</TD>\r
817                                         <TD>Values of the elements</TD>\r
818                                 </TR>\r
819                         </TABLE>\r
820                 </P>\r
821                 <a name="elem17"></a>\r
822                 <H3>17 - ArrayOfString</H3>\r
823                 <P>This element can be used to represent a single dimension array of&nbsp;String \r
824                         (i.e. an string[] ).</P>\r
825                 <P>\r
826                         <TABLE id="Table34" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
827                                 <TR>\r
828                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
829                                         <TD><STRONG>Description</STRONG></TD>\r
830                                 </TR>\r
831                                 <TR>\r
832                                         <TD width="142">(byte) 17</TD>\r
833                                         <TD>Element code</TD>\r
834                                 </TR>\r
835                                 <TR>\r
836                                         <TD width="142">uint</TD>\r
837                                         <TD>Object ID</TD>\r
838                                 </TR>\r
839                                 <TR>\r
840                                         <TD width="142">uint</TD>\r
841                                         <TD>Number of&nbsp;elements</TD>\r
842                                 </TR>\r
843                                 <TR>\r
844                                         <TD width="142">object *</TD>\r
845                                         <TD>Values of the elements</TD>\r
846                                 </TR>\r
847                         </TABLE>\r
848                 </P>\r
849                 <a name="elem21"></a>\r
850                 <H3>21 Method call</H3>\r
851                 <P>Represents a method call. The format of a method call can vary depending on the \r
852                         type of the parameters.&nbsp;The following&nbsp;table shows the common format:</P>\r
853                 <P>\r
854                         <TABLE id="Table20" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
855                                 <TR>\r
856                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
857                                         <TD><STRONG>Description</STRONG></TD>\r
858                                 </TR>\r
859                                 <TR>\r
860                                         <TD width="142">(byte) 21</TD>\r
861                                         <TD>Element code</TD>\r
862                                 </TR>\r
863                                 <TR>\r
864                                         <TD width="142"><EM><A href="#method-call-flags">method-call-flags</A></EM></TD>\r
865                                         <TD>Describes wich information includes the method call</TD>\r
866                                 </TR>\r
867                                 <TR>\r
868                                         <TD width="142">(byte) 0, 0, 0</TD>\r
869                                         <TD>???</TD>\r
870                                 </TR>\r
871                                 <TR>\r
872                                         <TD width="142"><EM><EM><A href="#type-spec">type-spec</A><BR>\r
873                                                                 <EM><A href="#primitive-value">primitive-value</A></EM></EM></EM></TD>\r
874                                         <TD>Method name</TD>\r
875                                 </TR>\r
876                                 <TR>\r
877                                         <TD width="142"><EM><EM><EM><A href="#type-spec">type-spec</A><BR>\r
878                                                                         <EM><A href="#primitive-value">primitive-value</A></EM></EM></EM></EM></TD>\r
879                                         <TD>Class name (including namespace and assembly)</TD>\r
880                                 </TR>\r
881                         </TABLE>\r
882                 </P>\r
883                 <P>The following tables describe the format of the message content depending on the \r
884                         value of method-call-flags:</P>\r
885                 <H4>method-call-flags &amp; NoArguments</H4>\r
886                 <P>Used for calls to methods without parameters.</P>\r
887                 <H4>\r
888                         <TABLE id="Table8" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
889                                 <TR>\r
890                                         <TD width="119"><STRONG>Element</STRONG></TD>\r
891                                         <TD><STRONG>Description</STRONG></TD>\r
892                                 </TR>\r
893                                 <TR>\r
894                                         <TD width="119">Header[]</TD>\r
895                                         <TD>Only if there are Headers and method-call-flags has the flag <EM>IncludeLogicalCallContext.\r
896                                                 </EM>Headers are serialized only if there is context info. This must be a bug \r
897                                                 in MS.NET.</TD>\r
898                                 </TR>\r
899                                 <TR>\r
900                                         <TD width="119">object[]</TD>\r
901                                         <TD>\r
902                                                 <P>Array with the following values:</P>\r
903                                                 <UL>\r
904                                                         <LI>\r
905                                                         Method signature, only if method-call-flags has the flag IncludesSignature. It \r
906                                                         is an array of Type.\r
907                                                         <LI>\r
908                                                                 LogicalCallContext instance, only if method-call-flags has the flag \r
909                                                                 IncludesLogicalCallContext.</LI></UL>\r
910                                                 <P>If the array is empty, it is not serialized.</P>\r
911                                         </TD>\r
912                                 </TR>\r
913                         </TABLE>\r
914                 </H4>\r
915                 <H4>method-call-flags &amp; PrimitiveArguments</H4>\r
916                 <P>Used for calls to methods in which all parameters are primitive types.</P>\r
917                 <P>\r
918                         <TABLE id="Table5" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
919                                 <TR>\r
920                                         <TD width="119"><STRONG>Element</STRONG></TD>\r
921                                         <TD><STRONG>Description</STRONG></TD>\r
922                                 </TR>\r
923                                 <TR>\r
924                                         <TD width="119">uint</TD>\r
925                                         <TD>Number of parameters</TD>\r
926                                 </TR>\r
927                                 <TR>\r
928                                         <TD width="119"><EM><EM><EM><EM>( <A href="#type-spec">type-spec</A></EM></EM></EM><BR>\r
929                                                         <A href="#primitive-value">primitive-value</A> ) *</EM></TD>\r
930                                         <TD>One value for each parameter</TD>\r
931                                 </TR>\r
932                                 <TR>\r
933                                         <TD width="119">Header[]</TD>\r
934                                         <TD>Only if there are Headers and method-response-flags has the flag <EM>IncludeLogicalCallContext.\r
935                                                 </EM>Headers are serialized only if there is context info. This must be a bug \r
936                                                 in MS.NET.</TD>\r
937                                 </TR>\r
938                                 <TR>\r
939                                         <TD width="119">object[]</TD>\r
940                                         <TD>\r
941                                                 <P>Array with the following values:</P>\r
942                                                 <UL>\r
943                                                         <LI>\r
944                                                         Method signature, only if method-call-flags has the flag IncludesSignature. It \r
945                                                         is an array of Type.\r
946                                                         <LI>\r
947                                                                 LogicalCallContext instance, only if method-call-flags has the flag \r
948                                                                 IncludesLogicalCallContext.</LI></UL>\r
949                                                 <P>If the array is empty, it is not serialized.</P>\r
950                                         </TD>\r
951                                 </TR>\r
952                         </TABLE>\r
953                 </P>\r
954                 <H4>method-call-flags &amp; ArgumentsInSimpleArray</H4>\r
955                 <P>Used for calls to methods in which at least one parameter is not a primitive \r
956                         type, and when no other info needs to be serialized (i.e. context or \r
957                         signature).</P>\r
958                 <P>\r
959                         <TABLE id="Table6" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
960                                 <TR>\r
961                                         <TD width="119"><STRONG>Element</STRONG></TD>\r
962                                         <TD><STRONG>Description</STRONG></TD>\r
963                                 </TR>\r
964                                 <TR>\r
965                                         <TD width="119">Header[]</TD>\r
966                                         <TD>Only if there are Headers.</TD>\r
967                                 </TR>\r
968                                 <TR>\r
969                                         <TD width="119">object[]</TD>\r
970                                         <TD>\r
971                                                 <P>Array of parameters.\r
972                                                 </P>\r
973                                         </TD>\r
974                                 </TR>\r
975                         </TABLE>\r
976                         <H4>method-call-flags&nbsp;&amp; ArgumentsInMultiArray</H4>\r
977                 <P>Used for calls to methods in which at least one parameter is not a primitive \r
978                         type, and when other info needs to be serialized (i.e. context or signature).</P>\r
979                 <P>\r
980                         <TABLE id="Table7" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
981                                 <TR>\r
982                                         <TD width="119"><STRONG>Element</STRONG></TD>\r
983                                         <TD><STRONG>Description</STRONG></TD>\r
984                                 </TR>\r
985                                 <TR>\r
986                                         <TD width="119">Header[]</TD>\r
987                                         <TD>Only if there are Headers.</TD>\r
988                                 </TR>\r
989                                 <TR>\r
990                                         <TD width="119">object[]</TD>\r
991                                         <TD>\r
992                                                 <P>\r
993                                                         Array with the following values:</P>\r
994                                                 <UL>\r
995                                                         <LI>\r
996                                                         Array of parameters.\r
997                                                         <LI>\r
998                                                         Method signature, only if method-call-flags has the flag IncludesSignature. It \r
999                                                         is an array of Type.\r
1000                                                         <LI>\r
1001                                                                 LogicalCallContext instance, only if method-call-flags has the flag \r
1002                                                                 IncludesLogicalCallContext.</LI></UL>\r
1003                                                 <P>\r
1004                                                         If the array is empty, it is not serialized.</P>\r
1005                                         </TD>\r
1006                                 </TR>\r
1007                         </TABLE>\r
1008                 </P>\r
1009                 </TD></TR></TBODY></TABLE> <a name="elem22"></a>\r
1010                 <H3>22 Method Response</H3>\r
1011                 <P>Represents a method response. The format of a method response can vary depending \r
1012                         on the type of the return value and parameters.&nbsp;The following&nbsp;table \r
1013                         shows the common format:</P>\r
1014                 <P>\r
1015                         <TABLE id="Table9" style="WIDTH: 568px; HEIGHT: 140px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
1016                                 <TR>\r
1017                                         <TD width="142"><STRONG>Element</STRONG></TD>\r
1018                                         <TD><STRONG>Description</STRONG></TD>\r
1019                                 </TR>\r
1020                                 <TR>\r
1021                                         <TD width="142" height="25">(byte) 22</TD>\r
1022                                         <TD height="25">Element code</TD>\r
1023                                 </TR>\r
1024                                 <TR>\r
1025                                         <TD width="142"><EM><A href="#method-response-flags">method-response-flags</A></EM></TD>\r
1026                                         <TD>Describes which information includes the method call</TD>\r
1027                                 </TR>\r
1028                                 <TR>\r
1029                                         <TD width="142"><EM><A href="#return-type-tag">return-type-tag</A></EM></TD>\r
1030                                         <TD>Describes which kind of value is returned</TD>\r
1031                                 </TR>\r
1032                                 <TR>\r
1033                                         <TD width="142">(bytes) 0, 0</TD>\r
1034                                         <TD>???</TD>\r
1035                                 </TR>\r
1036                         </TABLE>\r
1037                 <P></P>\r
1038                 <P>The following tables describe the format of the message content depending on the \r
1039                         value of method-response-flags:</P>\r
1040                 <H4>method-response-flags &amp; NoArguments</H4>\r
1041                 <P>Used when the method has no out arguments.</P>\r
1042                 <P>\r
1043                         <TABLE id="Table10" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
1044                                 <TR>\r
1045                                         <TD width="139"><STRONG>Element</STRONG></TD>\r
1046                                         <TD><STRONG>Description</STRONG></TD>\r
1047                                 </TR>\r
1048                                 <TR>\r
1049                                         <TD width="139"><EM><EM><EM><A href="#type-spec">type-spec</A><BR>\r
1050                                                                         <EM><A href="#primitive-value">primitive-value</A></EM></EM></EM></EM></TD>\r
1051                                         <TD>\r
1052                                                 <P><EM>Only if return-type-tag was PrimitiveType.<BR>\r
1053                                                         </EM>Return value.</P>\r
1054                                         </TD>\r
1055                                 </TR>\r
1056                                 <TR>\r
1057                                         <TD width="139">Header[]</TD>\r
1058                                         <TD>Only if there are Headers.</TD>\r
1059                                 </TR>\r
1060                                 <TR>\r
1061                                         <TD width="139">object[]</TD>\r
1062                                         <TD>\r
1063                                                 <P>Array with the following values:</P>\r
1064                                                 <UL>\r
1065                                                         <LI>\r
1066                                                                 Return value, only&nbsp;if <EM>return-type-tag</EM> was <EM>ObjectType</EM>\r
1067                                                         <LI>\r
1068                                                                 LogicalCallContext instance, only&nbsp;if method-response-flags has the flag \r
1069                                                                 IncludeLogicalCallContext</LI></UL>\r
1070                                                 <P>If the array is empty, it is not serialized.</P>\r
1071                                         </TD>\r
1072                                 </TR>\r
1073                         </TABLE>\r
1074                 </P>\r
1075                 <H4>method-response-flags &amp; PrimitiveArguments</H4>\r
1076                 <P>Used when all out arguments are primitive types.</P>\r
1077                 <H2>\r
1078                         <TABLE id="Table12" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
1079                                 <TR>\r
1080                                         <TD width="139"><STRONG>Element</STRONG></TD>\r
1081                                         <TD><STRONG>Description</STRONG></TD>\r
1082                                 </TR>\r
1083                                 <TR>\r
1084                                         <TD width="139"><EM><EM><EM><A href="#type-spec">type-spec</A><BR>\r
1085                                                                         <EM><A href="#primitive-value">primitive-value</A></EM></EM></EM></EM></TD>\r
1086                                         <TD>\r
1087                                                 <P><EM>Only if return-type-tag was PrimitiveType.<BR>\r
1088                                                         </EM>Return value.</P>\r
1089                                         </TD>\r
1090                                 </TR>\r
1091                                 <TR>\r
1092                                         <TD width="139">uint</TD>\r
1093                                         <TD>Number of out arguments</TD>\r
1094                                 </TR>\r
1095                                 <TR>\r
1096                                         <TD width="139"><EM><EM><EM>( <A href="#type-spec">type-spec</A>\r
1097                                                                         <BR>\r
1098                                                                         <EM><A href="#primitive-value">primitive-value</A> )</EM></EM></EM>&nbsp;*</EM></TD>\r
1099                                         <TD>One value for each argument</TD>\r
1100                                 </TR>\r
1101                                 <TR>\r
1102                                         <TD width="139">Header[]</TD>\r
1103                                         <TD>Only if there are Headers. Empty otherwise.</TD>\r
1104                                 </TR>\r
1105                                 <TR>\r
1106                                         <TD width="139">object[]</TD>\r
1107                                         <TD>\r
1108                                                 <P>Array with the following values:</P>\r
1109                                                 <UL>\r
1110                                                         <LI>\r
1111                                                                 Return value, only&nbsp;if <EM>return-type-tag</EM> was <EM>ObjectType</EM>\r
1112                                                         <LI>\r
1113                                                                 LogicalCallContext instance, only&nbsp;if method-response-flags has the flag \r
1114                                                                 IncludeLogicalCallContext</LI></UL>\r
1115                                                 <P>If the array is empty, it is not serialized.</P>\r
1116                                         </TD>\r
1117                                 </TR>\r
1118                         </TABLE>\r
1119                 </H2>\r
1120                 <H4>method-response-flags &amp; ArgumentsInSimpleArray</H4>\r
1121                 <P>Used when at least one out argument is not a primitive type, return type is \r
1122                         primitive, and no other info needs to be serialized.</P>\r
1123                 <H2>\r
1124                         <TABLE id="Table13" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
1125                                 <TR>\r
1126                                         <TD width="140"><STRONG>Element</STRONG></TD>\r
1127                                         <TD><STRONG>Description</STRONG></TD>\r
1128                                 </TR>\r
1129                                 <TR>\r
1130                                         <TD width="140"><EM><EM><EM><A href="#type-spec">type-spec</A><BR>\r
1131                                                                         <EM><A href="#primitive-value">primitive-value</A></EM></EM></EM></EM></TD>\r
1132                                         <TD>\r
1133                                                 <P><EM>Only if return-type-tag was PrimitiveType.<BR>\r
1134                                                         </EM>Return value.</P>\r
1135                                         </TD>\r
1136                                 </TR>\r
1137                                 <TR>\r
1138                                         <TD width="140">Header[]</TD>\r
1139                                         <TD>Only if there are Headers.</TD>\r
1140                                 </TR>\r
1141                                 <TR>\r
1142                                         <TD width="140">object[]</TD>\r
1143                                         <TD>Array that contains the out arguments</TD>\r
1144                                 </TR>\r
1145                         </TABLE>\r
1146                 </H2>\r
1147                 <H4>method-response-flags &amp; ArgumentsInMultiArray</H4>\r
1148                 <P>Used when at least one out argument is not a primitive type, return type is not \r
1149                         primitive, and no other info needs to be serialized.</P>\r
1150                 <H2>\r
1151                         <TABLE id="Table14" style="WIDTH: 568px; HEIGHT: 75px" cellSpacing="1" cellPadding="1" width="568" border="1">\r
1152                                 <TR>\r
1153                                         <TD width="141"><STRONG>Element</STRONG></TD>\r
1154                                         <TD><STRONG>Description</STRONG></TD>\r
1155                                 </TR>\r
1156                                 <TR>\r
1157                                         <TD width="141"><EM><EM><EM><A href="#type-spec">type-spec</A><BR>\r
1158                                                                         <EM><A href="#primitive-value">primitive-value</A></EM></EM></EM></EM></TD>\r
1159                                         <TD>\r
1160                                                 <P>Only if <EM>return-type-tag </EM>was <EM>PrimitiveType.<BR>\r
1161                                                         </EM>Return value.</P>\r
1162                                         </TD>\r
1163                                 </TR>\r
1164                                 <TR>\r
1165                                         <TD width="141">Header[]</TD>\r
1166                                         <TD>Only if there are Headers</TD>\r
1167                                 </TR>\r
1168                                 <TR>\r
1169                                         <TD width="141">object[]</TD>\r
1170                                         <TD>\r
1171                                                 <P>Array with the following values:</P>\r
1172                                                 <UL>\r
1173                                                         <LI>\r
1174                                                         Array of out arguments.\r
1175                                                         <LI>\r
1176                                                                 Return value, only&nbsp;if <EM>return-type-tag</EM> was <EM>ObjectType</EM>\r
1177                                                         <LI>\r
1178                                                                 LogicalCallContext instance, only&nbsp;if method-response-flags has the flag \r
1179                                                                 IncludeLogicalCallContext</LI></UL>\r
1180                                         </TD>\r
1181                                 </TR>\r
1182                         </TABLE>\r
1183                 </H2>\r
1184                 <a name="other"></a>\r
1185                 <H2>Other elements</H2>\r
1186                 <a name="string"></a>\r
1187                 <H3>string</H3>\r
1188                 <P>A string value, serialized using BinaryWriter. It serializes the length of the \r
1189                         string,&nbsp;using a&nbsp;7-bit encoded int, and then the string chars.</P>\r
1190                 <a name="primitive-value"></a>\r
1191                 <H3>primitive-value</H3>\r
1192                 <P>A primitive value. It can be serialized using BinaryWriter and deserialized \r
1193                         using BinaryReader. DateTime is serialized as a long (using the Ticks \r
1194                         property).\r
1195                 </P>\r
1196                 <a name="value"></a>\r
1197                 <H3>value</H3>\r
1198                 <P>It can be a <A href="#primitive-value">primitive-value</A> or any of the \r
1199                         following binary elements:</P>\r
1200                 <UL>\r
1201                         <LI>\r
1202                                 <A href="#elem1">1 - RefTypeObject</A>\r
1203                         (only for value types)\r
1204                         <LI>\r
1205                                 <A href="#elem4">4 - RuntimeObject</A>\r
1206                         (only for value types)\r
1207                         <LI>\r
1208                                 <A href="#elem5">5 - ExternalObject</A>&nbsp;(only for value types)\r
1209                         <LI>\r
1210                                 <A href="#elem6">6 - String</A>\r
1211                         <LI>\r
1212                                 <A href="#elem8">8 - BoxedPrimitiveTypeValue</A>\r
1213                         <LI>\r
1214                                 <A href="#elem9">9 - ObjectReference</A>\r
1215                         <LI>\r
1216                                 <A href="#elem10">10 - NullValue</A>\r
1217                         <LI>\r
1218                                 <A href="#elem13">13 - ArrayFiller8b</A>&nbsp;(only inside \r
1219                         single-dimensional object arrays)\r
1220                         <LI>\r
1221                                 <A href="#elem14">14 - ArrayFiller32b</A> (only inside single-dimensional \r
1222                                 object arrays)</LI></UL>\r
1223                 <a name="type-tag"></a>\r
1224                 <H3>type-tag</H3>\r
1225                 <P>Together with a <A href="#type-spec">type-spec</A> value, identifies a type. \r
1226                         Some types can be represented using several type-tags. In this case, the most \r
1227                         specific type-tag is allways used (it will&nbsp;take less bytes).</P>\r
1228                 <P>type-tag can be one of the following:</P>\r
1229                 <P>\r
1230                         <TABLE id="Table18" cellSpacing="1" cellPadding="1" width="600" border="1">\r
1231                                 <TR>\r
1232                                         <TD><STRONG>Value</STRONG></TD>\r
1233                                         <TD><STRONG>Label</STRONG></TD>\r
1234                                         <TD><STRONG>Description</STRONG></TD>\r
1235                                         <TD><STRONG>type-spec needed</STRONG></TD>\r
1236                                 </TR>\r
1237                                 <TR>\r
1238                                         <TD>0</TD>\r
1239                                         <TD>PrimitiveType</TD>\r
1240                                         <TD>A primitive type</TD>\r
1241                                         <TD>The code of the primitive type</TD>\r
1242                                 </TR>\r
1243                                 <TR>\r
1244                                         <TD>1</TD>\r
1245                                         <TD>String</TD>\r
1246                                         <TD>String class. type-spec is not needed.</TD>\r
1247                                         <TD>Not needed</TD>\r
1248                                 </TR>\r
1249                                 <TR>\r
1250                                         <TD>2</TD>\r
1251                                         <TD>ObjectType</TD>\r
1252                                         <TD>Object class. type-spec is not needed.</TD>\r
1253                                         <TD>Not needed</TD>\r
1254                                 </TR>\r
1255                                 <TR>\r
1256                                         <TD height="20">3</TD>\r
1257                                         <TD height="20">RuntimeType</TD>\r
1258                                         <TD height="20">A type from the .NET runtime (including arrays of .NET types)</TD>\r
1259                                         <TD height="20">The name of the class</TD>\r
1260                                 </TR>\r
1261                                 <TR>\r
1262                                         <TD>4</TD>\r
1263                                         <TD>GenericType</TD>\r
1264                                         <TD>Any other&nbsp;type (including arrays)</TD>\r
1265                                         <TD>The name of the class and the id of the assembly</TD>\r
1266                                 </TR>\r
1267                                 <TR>\r
1268                                         <TD>5</TD>\r
1269                                         <TD>ArrayOfObject</TD>\r
1270                                         <TD>Array of class Object</TD>\r
1271                                         <TD>Not needed</TD>\r
1272                                 </TR>\r
1273                                 <TR>\r
1274                                         <TD>6</TD>\r
1275                                         <TD>ArrayOfString</TD>\r
1276                                         <TD>Array of class String</TD>\r
1277                                         <TD>Not needed</TD>\r
1278                                 </TR>\r
1279                                 <TR>\r
1280                                         <TD>7</TD>\r
1281                                         <TD>ArrayOfPrimitiveType</TD>\r
1282                                         <TD>Array of primitive type</TD>\r
1283                                         <TD>The code of the primitive type</TD>\r
1284                                 </TR>\r
1285                         </TABLE>\r
1286                 </P>\r
1287                 <a name="type-spec"></a>\r
1288                 <H3>type-spec</H3>\r
1289                 <P>It is the name or the code of a type. To decode it, a <A href="#type-tag">type-tag</A>\r
1290                         value is needed. The following tables shows the format of type-spec for each \r
1291                         type-tag value:</P>\r
1292                 <H4>type-tag = PrimitiveType or ArrayOfPrimitiveType</H4>\r
1293                 <P>\r
1294                         <TABLE id="Table16" style="WIDTH: 560px; HEIGHT: 14px" cellSpacing="1" cellPadding="1" width="560" border="1">\r
1295                                 <TR>\r
1296                                         <TD width="119"><STRONG>Element</STRONG></TD>\r
1297                                         <TD><STRONG>Description</STRONG></TD>\r
1298                                 </TR>\r
1299                                 <TR>\r
1300                                         <TD width="119"><A href="#primitive-type-code">primitive-type-code</A></TD>\r
1301                                         <TD>\r
1302                                                 The code of the primitive type</TD>\r
1303                                 </TR>\r
1304                         </TABLE>\r
1305                 </P>\r
1306                 <H4>type-tag = RuntimeType</H4>\r
1307                 <P>\r
1308                         <TABLE id="Table15" style="WIDTH: 560px; HEIGHT: 14px" cellSpacing="1" cellPadding="1" width="560" border="1">\r
1309                                 <TR>\r
1310                                         <TD><STRONG><STRONG>Element</STRONG></STRONG></TD>\r
1311                                         <TD><STRONG><STRONG>Description</STRONG></STRONG></TD>\r
1312                                 </TR>\r
1313                                 <TR>\r
1314                                         <TD><EM><A href="#string">string</A></EM></TD>\r
1315                                         <TD>The name of the class, including the namespace</TD>\r
1316                                 </TR>\r
1317                         </TABLE>\r
1318                         <H4>type-tag = GenericType</H4>\r
1319                 <P>\r
1320                         <TABLE id="Table17" style="WIDTH: 560px; HEIGHT: 14px" cellSpacing="1" cellPadding="1" width="560" border="1">\r
1321                                 <TR>\r
1322                                         <TD><STRONG>Element</STRONG></TD>\r
1323                                         <TD><STRONG><STRONG>Description</STRONG></STRONG></TD>\r
1324                                 </TR>\r
1325                                 <TR>\r
1326                                         <TD><EM><A href="#string">string</A></EM></TD>\r
1327                                         <TD>The name of the class, including the namespace</TD>\r
1328                                 </TR>\r
1329                                 <TR>\r
1330                                         <TD>uint</TD>\r
1331                                         <TD>Id of the assembly where the class is defined</TD>\r
1332                                 </TR>\r
1333                         </TABLE>\r
1334                         <H3>\r
1335                                 <H4>Other type-tag</H4>\r
1336                         </H3>\r
1337                 <P>For other type-tag values, no type-spec is needed.</P>\r
1338                 <a name="method-call-flags"></a>\r
1339                 <H3>method-call-flags</H3>\r
1340                 <P>\r
1341                         <TABLE id="Table3" cellSpacing="1" cellPadding="1" width="600" border="1">\r
1342                                 <TR>\r
1343                                         <TD><STRONG>Value</STRONG></TD>\r
1344                                         <TD><STRONG>Label</STRONG></TD>\r
1345                                         <TD><STRONG>Description</STRONG></TD>\r
1346                                 </TR>\r
1347                                 <TR>\r
1348                                         <TD>1</TD>\r
1349                                         <TD>NoArguments</TD>\r
1350                                         <TD>No arguments included</TD>\r
1351                                 </TR>\r
1352                                 <TR>\r
1353                                         <TD>2</TD>\r
1354                                         <TD>PrimitiveArguments</TD>\r
1355                                         <TD>Primitive type arguments</TD>\r
1356                                 </TR>\r
1357                                 <TR>\r
1358                                         <TD>4</TD>\r
1359                                         <TD>ArgumentsInSimpleArray</TD>\r
1360                                         <TD>At least one out argument is not from a primitive type</TD>\r
1361                                 </TR>\r
1362                                 <TR>\r
1363                                         <TD height="20">8</TD>\r
1364                                         <TD height="20">ArgumentsInMultiArray</TD>\r
1365                                         <TD height="20">At least one out argument is not from a primitive type and other \r
1366                                                 info is included in the message (context or signature)</TD>\r
1367                                 </TR>\r
1368                                 <TR>\r
1369                                         <TD>16</TD>\r
1370                                         <TD>ExcludeLogicalCallContext</TD>\r
1371                                         <TD>LogicalContext not included</TD>\r
1372                                 </TR>\r
1373                                 <TR>\r
1374                                         <TD>32</TD>\r
1375                                         <TD></TD>\r
1376                                         <TD>???</TD>\r
1377                                 </TR>\r
1378                                 <TR>\r
1379                                         <TD>64</TD>\r
1380                                         <TD>IncludesLogicalCallContext</TD>\r
1381                                         <TD>LogicalContext included</TD>\r
1382                                 </TR>\r
1383                                 <TR>\r
1384                                         <TD>128</TD>\r
1385                                         <TD>IncludesSignature</TD>\r
1386                                         <TD>Signature is included in the message. It is only included when calling an \r
1387                                                 overloaded method.</TD>\r
1388                                 </TR>\r
1389                         </TABLE>\r
1390                 </P>\r
1391                 <a name="method-response-flags"></a>\r
1392                 <H3>method-response-flags</H3>\r
1393                 <P>\r
1394                         <TABLE id="Table4" cellSpacing="1" cellPadding="1" width="600" border="1">\r
1395                                 <TR>\r
1396                                         <TD><STRONG>Value</STRONG></TD>\r
1397                                         <TD width="190"><STRONG>Label</STRONG></TD>\r
1398                                         <TD><STRONG>Description</STRONG></TD>\r
1399                                 </TR>\r
1400                                 <TR>\r
1401                                         <TD>1</TD>\r
1402                                         <TD width="190">NoArguments</TD>\r
1403                                         <TD>Response with no out arguments</TD>\r
1404                                 </TR>\r
1405                                 <TR>\r
1406                                         <TD>2</TD>\r
1407                                         <TD width="190">PrimitiveArguments</TD>\r
1408                                         <TD>\r
1409                                                 Response with primitive type out arguments</TD>\r
1410                                 </TR>\r
1411                                 <TR>\r
1412                                         <TD>4</TD>\r
1413                                         <TD width="190">ArgumentsInSimpleArray</TD>\r
1414                                         <TD>Response with primitive type return value, and with at least one out argument \r
1415                                                 that is not a primitive type.</TD>\r
1416                                 </TR>\r
1417                                 <TR>\r
1418                                         <TD>8</TD>\r
1419                                         <TD width="190">ArgumentsInMultiArray</TD>\r
1420                                         <TD>Response with at least one out argument that is not a primitive type, and other \r
1421                                                 info is included in the message (context or signature)</TD>\r
1422                                 </TR>\r
1423                                 <TR>\r
1424                                         <TD>16</TD>\r
1425                                         <TD width="190">ExcludeLogicalCallContext</TD>\r
1426                                         <TD>LogicalContext not included</TD>\r
1427                                 </TR>\r
1428                                 <TR>\r
1429                                         <TD>32</TD>\r
1430                                         <TD width="190"></TD>\r
1431                                         <TD>???</TD>\r
1432                                 </TR>\r
1433                                 <TR>\r
1434                                         <TD>64</TD>\r
1435                                         <TD width="190">IncludesLogicalCallContext</TD>\r
1436                                         <TD>LogicalContext included</TD>\r
1437                                 </TR>\r
1438                         </TABLE>\r
1439                 </P>\r
1440                 <a name="return-type-tag"></a>\r
1441                 <H3>return-type-tag</H3>\r
1442                 <P>\r
1443                         <TABLE id="Table11" cellSpacing="1" cellPadding="1" width="600" border="1">\r
1444                                 <TR>\r
1445                                         <TD><STRONG>Value</STRONG></TD>\r
1446                                         <TD><STRONG>Label</STRONG></TD>\r
1447                                         <TD><STRONG>Description</STRONG></TD>\r
1448                                 </TR>\r
1449                                 <TR>\r
1450                                         <TD>2</TD>\r
1451                                         <TD>Null</TD>\r
1452                                         <TD>Null return value</TD>\r
1453                                 </TR>\r
1454                                 <TR>\r
1455                                         <TD>8</TD>\r
1456                                         <TD>PrimitiveType</TD>\r
1457                                         <TD>Primitive type return value</TD>\r
1458                                 </TR>\r
1459                                 <TR>\r
1460                                         <TD>16</TD>\r
1461                                         <TD>ObjectType</TD>\r
1462                                         <TD>Object instance return value</TD>\r
1463                                 </TR>\r
1464                                 <TR>\r
1465                                         <TD>32</TD>\r
1466                                         <TD>Exception</TD>\r
1467                                         <TD>Method response is an exception</TD>\r
1468                                 </TR>\r
1469                         </TABLE>\r
1470                 </P>\r
1471                 <a name="primitive-type-code"></a>\r
1472                 <H3>primitive-type-code</H3>\r
1473                 <P>\r
1474                         <TABLE id="Table19" height="171" cellSpacing="1" cellPadding="1" width="320" border="1">\r
1475                                 <TR>\r
1476                                         <TD width="45"><STRONG>Value</STRONG></TD>\r
1477                                         <TD width="190"><STRONG>Label</STRONG></TD>\r
1478                                 </TR>\r
1479                                 <TR>\r
1480                                         <TD width="45">1</TD>\r
1481                                         <TD width="190">Boolean\r
1482                                         </TD>\r
1483                                 </TR>\r
1484                                 <TR>\r
1485                                         <TD width="45">2</TD>\r
1486                                         <TD width="190">Byte</TD>\r
1487                                 </TR>\r
1488                                 <TR>\r
1489                                         <TD width="45">3</TD>\r
1490                                         <TD width="190">Char</TD>\r
1491                                 </TR>\r
1492                                 <TR>\r
1493                                         <TD width="45">5</TD>\r
1494                                         <TD width="190">Decimal</TD>\r
1495                                 </TR>\r
1496                                 <TR>\r
1497                                         <TD width="45">6</TD>\r
1498                                         <TD width="190">Double</TD>\r
1499                                 </TR>\r
1500                                 <TR>\r
1501                                         <TD width="45">7</TD>\r
1502                                         <TD width="190">Int16</TD>\r
1503                                 </TR>\r
1504                                 <TR>\r
1505                                         <TD width="45">8</TD>\r
1506                                         <TD width="190">Int32</TD>\r
1507                                 </TR>\r
1508                                 <TR>\r
1509                                         <TD width="45">9</TD>\r
1510                                         <TD width="190">Int64</TD>\r
1511                                 </TR>\r
1512                                 <TR>\r
1513                                         <TD width="45">10</TD>\r
1514                                         <TD width="190">SByte</TD>\r
1515                                 </TR>\r
1516                                 <TR>\r
1517                                         <TD width="45">11</TD>\r
1518                                         <TD width="190">Single</TD>\r
1519                                 </TR>\r
1520                                 <TR>\r
1521                                         <TD width="45">13</TD>\r
1522                                         <TD width="190">DateTime</TD>\r
1523                                 </TR>\r
1524                                 <TR>\r
1525                                         <TD width="45">14</TD>\r
1526                                         <TD width="190">UInt16</TD>\r
1527                                 </TR>\r
1528                                 <TR>\r
1529                                         <TD width="45">15</TD>\r
1530                                         <TD width="190">UInt32</TD>\r
1531                                 </TR>\r
1532                                 <TR>\r
1533                                         <TD width="45">16</TD>\r
1534                                         <TD width="190">UInt64</TD>\r
1535                                 </TR>\r
1536                                 <TR>\r
1537                                         <TD width="45">18</TD>\r
1538                                         <TD width="190">String</TD>\r
1539                                 </TR>\r
1540                         </TABLE>\r
1541                 </P>\r
1542                 <HR width="100%" SIZE="1">\r
1543                 <FONT size="1">2003 (C) Lluis Sanchez Gual&nbsp; (</FONT> <A href="mailto:lluis@ideary.com">\r
1544                         <FONT size="1">lluis@ideary.com</FONT></A><FONT size="1">)</FONT>\r
1545                 <P>&nbsp;</P>\r
1546         </body>\r
1547 </html>\r