Beispiel #1
0
        private Dictionary <ReportedProcess, int> CreateAndSerializeProcessMap(BuildXLWriter writer)
        {
            var processMap = new Dictionary <ReportedProcess, int>();

            PopulateProcesses(Processes);
            PopulateProcesses(SurvivingChildProcesses);
            PopulateProcesses(FileAccesses?.Select(f => f.Process));
            PopulateProcesses(ExplicitlyReportedFileAccesses?.Select(f => f.Process));
            PopulateProcesses(AllUnexpectedFileAccesses?.Select(f => f.Process));

            ReportedProcess[] processes = new ReportedProcess[processMap.Count];
            foreach (var process in processMap)
            {
                processes[process.Value] = process.Key;
            }

            writer.WriteReadOnlyList(processes, (w, v) => v.Serialize(w));

            return(processMap);

            void PopulateProcesses(IEnumerable <ReportedProcess> processesToPopulate)
            {
                if (processesToPopulate != null)
                {
                    foreach (var process in processesToPopulate)
                    {
                        if (!processMap.ContainsKey(process))
                        {
                            processMap.Add(process, processMap.Count);
                        }
                    }
                }
            }
        }
Beispiel #2
0
 public static extern SafeFileHandle CreateFile(
    string lpFileName,
    FileAccesses dwDesiredAccess,
    FileShares dwShareMode,
    IntPtr lpSecurityAttributes,
    CreationDispositions dwCreationDisposition,
    FileOperateAttributes dwFlagsAndAttributes,
    IntPtr hTemplateFile);