Exemplo n.º 1
0
        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");
        }