void IFastSerializable.ToStream(Serializer serializer) { if (driveNames == null) InitializeKernelNameMap(); // We mark the end of this set of variables so we can add to the end of it, since there is a // good chance we will have to change it. ForwardReference endOfKernelNameMap = serializer.GetForwardReference(); serializer.Write(endOfKernelNameMap); serializer.Write(1); // This is a version number. serializer.Write(driveNames.Length); serializer.Log("<WriteColection name=\"driveNames\" count=\"" + driveNames.Length + "\">\r\n"); for (int i = 0; i < driveNames.Length; i++) { serializer.Write(driveNames[i]); serializer.Write(kernelNameForDrives[i]); } serializer.Log("</WriteColection>\r\n"); serializer.Write(windows); serializer.Write(systemRoot); serializer.DefineForwardReference(endOfKernelNameMap); serializer.Write(threadIDtoProcessID.Count); serializer.Log("<WriteColection name=\"ProcessIDForThread\" count=\"" + threadIDtoProcessID.Count + "\">\r\n"); foreach (HistoryDictionary<int>.HistoryValue entry in threadIDtoProcessID.Entries) { serializer.Write((long)entry.Key); serializer.Write(entry.StartTime100ns); serializer.Write(entry.Value); } serializer.Log("</WriteColection>\r\n"); serializer.Log("<WriteColection name=\"fileIDToName\" count=\"" + fileIDToName.Count + "\">\r\n"); serializer.Write(fileIDToName.Count); foreach (HistoryDictionary<string>.HistoryValue entry in fileIDToName.Entries) { serializer.Write((long)entry.Key); serializer.Write(entry.StartTime100ns); serializer.Write(entry.Value); } serializer.Log("</WriteColection>\r\n"); }