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); }
public void AddCCW(CCWInfo ccwInfo) { m_listCCWInfo.Add(ccwInfo); }