The layout of the structure is as follows:[{{cite web]
|url=http://source.winehq.org/source//dlls/ole32/dcom.idl#L133
|title=dcom.idl
|access-date=2008-09-06
|year=2003
|work=Wine
|publisher=CodeWeavers
}}[{{cite web]
|url=http://members.tripod.com/IUnknwn/showme.htm
|title=ShowMeMyOBJREF
|access-date=2008-09-07
|author=Dharma Shukla
|year=1998
}} (This is example code to inspect the contents of an OBJREF.)
class="wikitable"
!Offset!!Size!!Description |
0 | 4 | Signature: 'MEOW' |
4 | 4 | Flag indicating the kind of structure |
8 | 16 | Interface identifier |
colspan=3|Flag = 1: standard |
24 | 4 | Flags, mostly reserved for the system, but can be used to turn off pinging objects.[{{cite web
]|url=http://www.microsoft.com/msj/0398/dcom.aspx
|title=Understanding the DCOM Wire Protocol by Analyzing Network Data Packets
|access-date=2008-09-07
|last=Eddon
|first=Guy
|author2=Eddon, Henry
|date=March 1998
|work=Microsoft Systems Journal
|publisher=Microsoft
}} |
28 | 4 | Reference count |
32 | 8 | OXID – object exporter identifier[{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc232137.aspx
|title=Windows Protocols Master Glossary: O
|access-date=2008-09-06
|work=MSDN
|publisher=Microsoft
|quote=object exporter identifier (OXID): A 64-bit number that uniquely identifies an object exporter within an object server. … object identifier (OID): (1) In the context of an object server, a 64-bit number that uniquely identifies an object.
}} |
40 | 8 | OID – object identifier |
48 | 16 | IPID – interface pointer identifier[{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc232132.aspx
|title=Windows Protocols Master Glossary: I
|access-date=2008-09-06
|work=MSDN
|publisher=Microsoft
|quote=interface pointer identifier (IPID): A 128-bit number that uniquely identifies an interface on an object within an object exporter.
}} |
64 | variable | DUALSTRINGARRAY |
colspan=3|Flag = 2: handler (an extension of standard)[{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc226833.aspx
|title=OBJREF_HANDLER
|access-date=2008-09-06
|work=MSDN
|publisher=Microsoft
}} |
64 | 16 | Class identifier of a class that will be used as a handler for the interface, i.e. sit between the client and the proxy. |
80 | variable | DUALSTRINGARRAY |
colspan=3|Flag = 4: custom marshalling[{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc226834.aspx
|title=OBJREF_CUSTOM
|access-date=2008-09-07
|work=MSDN
|publisher=Microsoft
}} |
24 | 16 | Class identifier of the custom proxy |
40 | 4 | 0 (reserved value) |
44 | 4 | Size of the data below |
48 | variable | Custom marshalling data |
colspan=3|Flag = 8: extended (also an extension of standard)[{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc226835.aspx
|title=OBJREF_EXTENDED
|access-date=2008-09-06
|work=MSDN
|publisher=Microsoft
}} |
64 | 4 | Signature 'VYSN' |
68 | variable | DUALSTRINGARRAY |
| 4 | 1 (historically the number of data elements below, but there always is only a single element) |
| 4 | Signature 'VYSN' |
colspan=3|Data element used to identify and marshal an envoy context:[{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc225397.aspx
|title=Context Properties
|access-date=2008-09-07
|work=MSDN
|publisher=Microsoft
}} [{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc225402.aspx
|title=Context Properties and Marshaling
|access-date=2008-09-07
|work=MSDN
|publisher=Microsoft
}} [{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc232153.aspx
|title=Windows Protocols Master Glossary: E
|access-date=2008-09-07
|work=MSDN
|publisher=Microsoft
|quote=envoy context: A context that is marshaled and returned to a client as a result of obtaining an object reference.
}} |
| 16 | Context identifier[{{cite web
]|url=http://msdn.microsoft.com/en-us/library/cc232151.aspx
|title=Windows Protocols Master Glossary: C
|access-date=2008-09-07
|work=MSDN
|publisher=Microsoft
|quote=context: A collection of context properties that describe an execution environment. sqq.
}} |
| 4 | Size of the data below, excluding padding |
| 4 | Size of the data below, including padding |
| 8n | A marshalled envoy context, padded to a multiple of eight bytes |
The layout of DUALSTRINGARRAY is:[{{cite web]
|url=http://msdn.microsoft.com/en-us/library/cc226837.aspx
|title=DUALSTRINGARRAY
|access-date=2008-09-06
|work=MSDN
|publisher=Microsoft
}}[{{cite book]
|last=Eddon
|first=Guy
|author2=Eddon, Henry
|editor=Stroo, Eric |editor2=Turner, Alice |editor3=Young, Marc |editor4=Chang, Ina
|title=Inside COM+ Base Services
|year=1999
|publisher=Microsoft Press
|location=Redmond
|isbn=0-7356-0728-1
|chapter=Marshaled Interface Pointers
}}
class="wikitable"
!Offset!!Size!!Description |
0 | 2 | Total number of entries in the arrays below, including nulls |
2 | 2 | Number of entries in the array that represent string bindings |
4 | 2n | String and security bindings |
The string bindings are null-terminated records specifying connection information, like IP addresses, and the security bindings are null-terminated records specifying authentication information. Both arrays are null-terminated too.