Example #1
0
    void IFastSerializable.FromStream(Deserializer deserializer)
    {
        int countRCWCCW = deserializer.ReadInt();

        if (countRCWCCW == 0)
        {
            return;
        }

        m_countRCWs       = deserializer.ReadInt();
        m_countCCWs       = deserializer.ReadInt();
        m_countInterfaces = deserializer.ReadInt();
        m_countModules    = deserializer.ReadInt();

        m_listRCWInfo          = new List <RCWInfo>(m_countRCWs);
        m_listCCWInfo          = new List <CCWInfo>(m_countCCWs);
        m_listComInterfaceInfo = new List <ComInterfaceInfo>(m_countInterfaces);
        m_listModules          = new List <InteropModuleInfo>(m_countModules);

        m_countRCWInterfaces = 0;

        for (int i = 0; i < m_countRCWs; i++)
        {
            RCWInfo infoRCW = new RCWInfo();
            infoRCW.node         = (NodeIndex)deserializer.ReadInt();
            infoRCW.refCount     = deserializer.ReadInt();
            infoRCW.addrIUnknown = (Address)deserializer.ReadInt64();
            infoRCW.addrJupiter  = (Address)deserializer.ReadInt64();
            infoRCW.addrVTable   = (Address)deserializer.ReadInt64();
            infoRCW.firstComInf  = deserializer.ReadInt();
            infoRCW.countComInf  = deserializer.ReadInt();
            m_listRCWInfo.Add(infoRCW);
            m_countRCWInterfaces += infoRCW.countComInf;
        }

        for (int i = 0; i < m_countCCWs; i++)
        {
            CCWInfo infoCCW = new CCWInfo();
            infoCCW.node         = (NodeIndex)deserializer.ReadInt();
            infoCCW.refCount     = deserializer.ReadInt();
            infoCCW.addrIUnknown = (Address)deserializer.ReadInt64();
            infoCCW.addrHandle   = (Address)deserializer.ReadInt64();
            infoCCW.firstComInf  = deserializer.ReadInt();
            infoCCW.countComInf  = deserializer.ReadInt();
            m_listCCWInfo.Add(infoCCW);
        }

        for (int i = 0; i < m_countInterfaces; i++)
        {
            ComInterfaceInfo infoInterface = new ComInterfaceInfo();
            infoInterface.fRCW            = ((deserializer.ReadByte() == 1) ? true : false);
            infoInterface.owner           = deserializer.ReadInt();
            infoInterface.typeID          = (NodeTypeIndex)deserializer.ReadInt();
            infoInterface.addrInterface   = (Address)deserializer.ReadInt64();
            infoInterface.addrFirstVTable = (Address)deserializer.ReadInt64();
            infoInterface.addrFirstFunc   = (Address)deserializer.ReadInt64();
            m_listComInterfaceInfo.Add(infoInterface);
        }

        for (int i = 0; i < m_countModules; i++)
        {
            InteropModuleInfo infoModule = new InteropModuleInfo();
            infoModule.baseAddress = (Address)deserializer.ReadInt64();
            infoModule.fileSize    = (uint)deserializer.ReadInt();
            infoModule.timeStamp   = (uint)deserializer.ReadInt();
            deserializer.Read(out infoModule.fileName);
            infoModule.loadOrder = i;
            m_listModules.Add(infoModule);
        }

        m_listModules.Sort(InteropModuleInfo.CompareBase);
    }
Example #2
0
 public void AddRCW(RCWInfo rcwInfo)
 {
     m_listRCWInfo.Add(rcwInfo);
 }