Previous Table of Contents Next


20.9.2 COM Chain Bypass


   The technique used for COM chain bypass is very similar to the technique used in CORBA. The only difference is the result of the fact that DCOM extents are not propagated into subsequent calls unlike CORBA service contexts.

   struct ResolvedRef

   {IResolver resolver;ObjectSystemID objSysID;unsigned long chainDataFormat;BYTE chainDataVersion;OpaqueData chainData;

   OpaqueRef reference;};

   struct ResolvableRefChain

   {unsigned long len;unsigned long maxlen;ResolvableRef [size_is(len,)]**data;

   };

   struct ChainBypassCheck // Outgoing extent body{};

   struct ChainBypassInfo // Reply extent body

   {ResolvableRefChain chain;

   };

   The ChainBypassCheck extent is sent out with the first outgoing request. If a reply extent, ChainBypassInfo, is received with the reply message, then a view has been detected. The information in the ResolvedRefChain can be used to bypass intermediate views. Each ResolvedRef is identical to a ResolvableRef except that it also contains the result of the resolution -- the reference member contains the data that would be returned if Resolve were called on the included resolver. If the reference field of ResolvedRef is an empty sequence, then the marshaled object reference is assumed to be identical to the chainData.

   The UUID for the request and reply extents are both:

   1eba96a0-20b1-11d1-8a22-006097cc044d