Beispiel #1
0
        public static byte[] AsZipArchive(this Snapshot snapshot)
        {
            if (snapshot == null)
            {
                return(null);
            }
            MemoryStream memoryStream = new MemoryStream();

            RangeOfPages[] obj            = snapshot?.ProcessSnapshot?.RangeOfPages?.Select((RangeOfPages rangeOfPages) => new RangeOfPages(rangeOfPages.BasicInfo))?.ToArray();
            byte[]         entryListOctet = obj.SerializeToUtf8();
            ZipArchive     zipArchive     = new ZipArchive(memoryStream, ZipArchiveMode.Create, leaveOpen: true);

            try
            {
                zipArchive.EntryCreateAndWrite("Process\\RangeOfPages", entryListOctet);
                snapshot?.ProcessSnapshot?.MemoryBaseAddressAndListOctet?.ForEach(delegate(KeyValuePair <long, byte[]> memoryBaseAddressAndListOctet)
                {
                    if (!memoryBaseAddressAndListOctet.Value.IsNullOrEmpty())
                    {
                        zipArchive.EntryCreateAndWrite("Process\\Memory\\" + MemoryEntryName(memoryBaseAddressAndListOctet.Key), memoryBaseAddressAndListOctet.Value);
                    }
                });
                BitmapSource bitmapSource    = Bib3.FCL.Extension.BitmapSourceB8G8R8A8FromRasterO8R8G8B8HeightOut(snapshot.MainWindowSnapshot.ClientRectRaster.Key, snapshot.MainWindowSnapshot.ClientRectRaster.Value, 4.0, 4.0);
                byte[]       entryListOctet2 = bitmapSource.AsListOctetWindowMediaImagingPng();
                zipArchive.EntryCreateAndWrite("MainWindow\\ClientRect.Raster", entryListOctet2);
            }
            finally
            {
                if (zipArchive != null)
                {
                    ((IDisposable)zipArchive).Dispose();
                }
            }
            memoryStream.Seek(0L, SeekOrigin.Begin);
            return(memoryStream.LeeseGesamt());
        }