void OOCore::CDRMessageMarshalFactory::UnmarshalInterface(Remoting::IMarshaller*, Remoting::IMessage* pMessage, const guid_t& iid, Remoting::MarshalFlags_t, IObject*& pObject) { uint32_t len = pMessage->ReadValue(string_t::constant("length")).cast<uint32_t>(); OOBase::CDRStream input(len); pMessage->ReadBytes(string_t::constant("data"),len,(byte_t*)input.buffer()->wr_ptr()); input.buffer()->wr_ptr(len); ObjectPtr<ObjectImpl<CDRMessage> > ptrInput = ObjectImpl<CDRMessage>::CreateObject(); ptrInput->init(input); pObject = ptrInput->QueryInterface(iid); }