mirror of
https://github.com/ReneLergner/WPinternals.git
synced 2026-06-14 03:16:40 +10:00
Project: Convert to .NET 5.0
This commit is contained in:
@@ -5,6 +5,7 @@ using System;
|
||||
namespace SevenZip.Compression.LZMA
|
||||
{
|
||||
using RangeCoder;
|
||||
using System.Threading;
|
||||
|
||||
public class Decoder : ICoder, ISetDecoderProperties // ,System.IO.Stream
|
||||
{
|
||||
@@ -228,7 +229,7 @@ namespace SevenZip.Compression.LZMA
|
||||
}
|
||||
|
||||
public void Code(System.IO.Stream inStream, System.IO.Stream outStream,
|
||||
Int64 inSize, Int64 outSize, ICodeProgress progress)
|
||||
Int64 inSize, Int64 outSize, ICodeProgress progress, CancellationToken? token = null)
|
||||
{
|
||||
Init(inStream, outStream);
|
||||
|
||||
@@ -247,8 +248,13 @@ namespace SevenZip.Compression.LZMA
|
||||
m_OutWindow.PutByte(b);
|
||||
nowPos64++;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
while (nowPos64 < outSize64)
|
||||
{
|
||||
token?.ThrowIfCancellationRequested();
|
||||
|
||||
// UInt64 next = Math.Min(nowPos64 + (1 << 18), outSize64);
|
||||
// while(nowPos64 < next)
|
||||
{
|
||||
@@ -341,6 +347,12 @@ namespace SevenZip.Compression.LZMA
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
m_OutWindow.Flush();
|
||||
m_OutWindow.ReleaseStream();
|
||||
m_RangeDecoder.ReleaseStream();
|
||||
|
||||
@@ -5,6 +5,7 @@ using System;
|
||||
namespace SevenZip.Compression.LZMA
|
||||
{
|
||||
using RangeCoder;
|
||||
using System.Threading;
|
||||
|
||||
public class Encoder : ICoder, ISetCoderProperties, IWriteCoderProperties
|
||||
{
|
||||
@@ -1271,7 +1272,7 @@ namespace SevenZip.Compression.LZMA
|
||||
|
||||
|
||||
public void Code(System.IO.Stream inStream, System.IO.Stream outStream,
|
||||
Int64 inSize, Int64 outSize, ICodeProgress progress)
|
||||
Int64 inSize, Int64 outSize, ICodeProgress progress, CancellationToken? token = null)
|
||||
{
|
||||
_needReleaseMFStream = false;
|
||||
try
|
||||
@@ -1279,6 +1280,7 @@ namespace SevenZip.Compression.LZMA
|
||||
SetStreams(inStream, outStream, inSize, outSize);
|
||||
while (true)
|
||||
{
|
||||
token?.ThrowIfCancellationRequested();
|
||||
Int64 processedInSize;
|
||||
Int64 processedOutSize;
|
||||
bool finished;
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
// ICoder.h
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
|
||||
namespace SevenZip
|
||||
{
|
||||
@@ -58,7 +59,7 @@ namespace SevenZip
|
||||
/// if input stream is not valid
|
||||
/// </exception>
|
||||
void Code(System.IO.Stream inStream, System.IO.Stream outStream,
|
||||
Int64 inSize, Int64 outSize, ICodeProgress progress);
|
||||
Int64 inSize, Int64 outSize, ICodeProgress progress, CancellationToken? token = null);
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -34,6 +34,7 @@ namespace DiscUtils.Fat
|
||||
|
||||
internal FatFileSystemOptions()
|
||||
{
|
||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||||
FileNameEncoding = Encoding.GetEncoding(437);
|
||||
}
|
||||
|
||||
@@ -45,6 +46,7 @@ namespace DiscUtils.Fat
|
||||
}
|
||||
else
|
||||
{
|
||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||||
FileNameEncoding = Encoding.GetEncoding(437);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +166,8 @@ namespace WPinternals
|
||||
FlowDirection.LeftToRight,
|
||||
new Typeface(PathTextBlock.FontFamily, PathTextBlock.FontStyle, PathTextBlock.FontWeight, PathTextBlock.FontStretch),
|
||||
FontSize,
|
||||
Foreground
|
||||
Foreground,
|
||||
VisualTreeHelper.GetDpi(this).PixelsPerDip
|
||||
);
|
||||
#endif
|
||||
|
||||
@@ -198,7 +199,8 @@ namespace WPinternals
|
||||
FlowDirection.LeftToRight,
|
||||
new Typeface(CaptionTextBlock.FontFamily, CaptionTextBlock.FontStyle, CaptionTextBlock.FontWeight, CaptionTextBlock.FontStretch),
|
||||
FontSize,
|
||||
Foreground
|
||||
Foreground,
|
||||
VisualTreeHelper.GetDpi(this).PixelsPerDip
|
||||
);
|
||||
#endif
|
||||
double CaptionWidth = formatted.Width;
|
||||
@@ -238,7 +240,8 @@ namespace WPinternals
|
||||
FlowDirection.LeftToRight,
|
||||
new Typeface(PathTextBlock.FontFamily, PathTextBlock.FontStyle, PathTextBlock.FontWeight, PathTextBlock.FontStretch),
|
||||
FontSize,
|
||||
Foreground
|
||||
Foreground,
|
||||
VisualTreeHelper.GetDpi(this).PixelsPerDip
|
||||
);
|
||||
#endif
|
||||
if (NewWidth < 0)
|
||||
@@ -321,7 +324,8 @@ namespace WPinternals
|
||||
FlowDirection.LeftToRight,
|
||||
new Typeface(PathTextBlock.FontFamily, PathTextBlock.FontStyle, PathTextBlock.FontWeight, PathTextBlock.FontStretch),
|
||||
FontSize,
|
||||
Foreground
|
||||
Foreground,
|
||||
VisualTreeHelper.GetDpi(this).PixelsPerDip
|
||||
);
|
||||
#endif
|
||||
|
||||
|
||||
+6
-6
@@ -375,18 +375,18 @@ namespace WPinternals
|
||||
HasChanged = true;
|
||||
}
|
||||
|
||||
if ((NewPartition.PartitionGuid == null) || (NewPartition.PartitionGuid != CurrentPartition.PartitionGuid))
|
||||
if ((NewPartition.PartitionGuid != Guid.Empty) || (NewPartition.PartitionGuid != CurrentPartition.PartitionGuid))
|
||||
HasChanged = true;
|
||||
if (NewPartition.PartitionGuid != null)
|
||||
if (NewPartition.PartitionGuid != Guid.Empty)
|
||||
CurrentPartition.PartitionGuid = NewPartition.PartitionGuid;
|
||||
if (CurrentPartition.PartitionGuid == null)
|
||||
if (CurrentPartition.PartitionGuid != Guid.Empty)
|
||||
CurrentPartition.PartitionGuid = Guid.NewGuid();
|
||||
|
||||
if ((NewPartition.PartitionTypeGuid == null) || (NewPartition.PartitionTypeGuid != CurrentPartition.PartitionTypeGuid))
|
||||
if ((NewPartition.PartitionTypeGuid != Guid.Empty) || (NewPartition.PartitionTypeGuid != CurrentPartition.PartitionTypeGuid))
|
||||
HasChanged = true;
|
||||
if (NewPartition.PartitionTypeGuid != null)
|
||||
if (NewPartition.PartitionTypeGuid != Guid.Empty)
|
||||
CurrentPartition.PartitionTypeGuid = NewPartition.PartitionTypeGuid;
|
||||
if (CurrentPartition.PartitionTypeGuid == null)
|
||||
if (CurrentPartition.PartitionTypeGuid != Guid.Empty)
|
||||
CurrentPartition.PartitionTypeGuid = Guid.NewGuid();
|
||||
|
||||
for (int i = this.Partitions.Count - 1; i >= 0; i--)
|
||||
|
||||
+11
-3
@@ -92,6 +92,8 @@ namespace WPinternals
|
||||
private Stream stream;
|
||||
private bool LeaveOpen;
|
||||
private Thread WorkThread;
|
||||
private CancellationTokenSource source;
|
||||
private CancellationToken token;
|
||||
|
||||
public LZMACompressionStream(Stream stream, CompressionMode mode, bool LeaveOpen, int DictionarySize, int PosStateBits,
|
||||
int LitContextBits, int LitPosBits, int Algorithm, int NumFastBytes, string MatchFinder, bool EndMarker)
|
||||
@@ -99,6 +101,8 @@ namespace WPinternals
|
||||
this.stream = stream;
|
||||
this.LeaveOpen = LeaveOpen;
|
||||
BufferStream = new PumpStream();
|
||||
source = new CancellationTokenSource();
|
||||
token = source.Token;
|
||||
|
||||
if (mode == CompressionMode.Compress)
|
||||
{
|
||||
@@ -130,14 +134,14 @@ namespace WPinternals
|
||||
|
||||
private void Encode()
|
||||
{
|
||||
Encoder.Code(BufferStream, stream, -1, -1, null);
|
||||
Encoder.Code(BufferStream, stream, -1, -1, null, token);
|
||||
if (LeaveOpen == false)
|
||||
stream.Close();
|
||||
}
|
||||
|
||||
private void Decode()
|
||||
{
|
||||
Decoder.Code(stream, BufferStream, -1, -1, null);
|
||||
Decoder.Code(stream, BufferStream, -1, -1, null, token);
|
||||
BufferStream.Close();
|
||||
if (LeaveOpen == false)
|
||||
stream.Close();
|
||||
@@ -148,7 +152,11 @@ namespace WPinternals
|
||||
if (Encoder != null)
|
||||
BufferStream.Close();
|
||||
else if (WorkThread.IsAlive)
|
||||
WorkThread.Abort();
|
||||
{
|
||||
if (source != null)
|
||||
source.Cancel();
|
||||
WorkThread.Join();
|
||||
}
|
||||
}
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
|
||||
+1
-12
@@ -118,14 +118,12 @@ namespace WPinternals
|
||||
[DllImport(
|
||||
KERNEL32,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern bool CloseHandle(IntPtr handle);
|
||||
|
||||
[DllImport(
|
||||
ADVAPI32,
|
||||
CharSet = CharSet.Unicode,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern bool AdjustTokenPrivileges(
|
||||
[In] SafeTokenHandle TokenHandle,
|
||||
[In] bool DisableAllPrivileges,
|
||||
@@ -138,7 +136,6 @@ namespace WPinternals
|
||||
ADVAPI32,
|
||||
CharSet = CharSet.Auto,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern
|
||||
bool RevertToSelf();
|
||||
|
||||
@@ -147,7 +144,6 @@ namespace WPinternals
|
||||
EntryPoint = "LookupPrivilegeValueW",
|
||||
CharSet = CharSet.Auto,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern
|
||||
bool LookupPrivilegeValue(
|
||||
[In] string lpSystemName,
|
||||
@@ -158,7 +154,6 @@ namespace WPinternals
|
||||
KERNEL32,
|
||||
CharSet = CharSet.Auto,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern
|
||||
IntPtr GetCurrentProcess();
|
||||
|
||||
@@ -166,7 +161,6 @@ namespace WPinternals
|
||||
KERNEL32,
|
||||
CharSet = CharSet.Auto,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern
|
||||
IntPtr GetCurrentThread();
|
||||
|
||||
@@ -174,7 +168,6 @@ namespace WPinternals
|
||||
ADVAPI32,
|
||||
CharSet = CharSet.Unicode,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern
|
||||
bool OpenProcessToken(
|
||||
[In] IntPtr ProcessToken,
|
||||
@@ -185,7 +178,6 @@ namespace WPinternals
|
||||
(ADVAPI32,
|
||||
CharSet = CharSet.Unicode,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern
|
||||
bool OpenThreadToken(
|
||||
[In] IntPtr ThreadToken,
|
||||
@@ -197,7 +189,6 @@ namespace WPinternals
|
||||
(ADVAPI32,
|
||||
CharSet = CharSet.Unicode,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern
|
||||
bool DuplicateTokenEx(
|
||||
[In] SafeTokenHandle ExistingToken,
|
||||
@@ -211,7 +202,6 @@ namespace WPinternals
|
||||
(ADVAPI32,
|
||||
CharSet = CharSet.Unicode,
|
||||
SetLastError = true)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
internal static extern
|
||||
bool SetThreadToken(
|
||||
[In] IntPtr Thread,
|
||||
@@ -301,8 +291,7 @@ namespace WPinternals
|
||||
}
|
||||
|
||||
[DllImport(NativeMethods.KERNEL32, SetLastError = true),
|
||||
SuppressUnmanagedCodeSecurity,
|
||||
ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
|
||||
SuppressUnmanagedCodeSecurity]
|
||||
private static extern bool CloseHandle(IntPtr handle);
|
||||
|
||||
override protected bool ReleaseHandle()
|
||||
|
||||
@@ -20,8 +20,6 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Specialized;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.ConstrainedExecution;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
|
||||
@@ -93,7 +91,6 @@ namespace WPinternals
|
||||
// of privilege names to luids
|
||||
//
|
||||
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
private static Luid LuidFromPrivilege(string privilege)
|
||||
{
|
||||
Luid luid;
|
||||
@@ -104,8 +101,6 @@ namespace WPinternals
|
||||
// Look up the privilege LUID inside the cache
|
||||
//
|
||||
|
||||
RuntimeHelpers.PrepareConstrainedRegions();
|
||||
|
||||
try
|
||||
{
|
||||
privilegeLock.AcquireReaderLock(Timeout.Infinite);
|
||||
@@ -206,8 +201,6 @@ namespace WPinternals
|
||||
}
|
||||
}
|
||||
|
||||
RuntimeHelpers.PrepareConstrainedRegions();
|
||||
|
||||
try
|
||||
{
|
||||
// Open the thread token; if there is no thread token,
|
||||
@@ -382,19 +375,16 @@ namespace WPinternals
|
||||
#endregion
|
||||
|
||||
#region Public methods and properties
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
public void Enable()
|
||||
{
|
||||
this.ToggleState(true);
|
||||
}
|
||||
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
public void Disable()
|
||||
{
|
||||
this.ToggleState(false);
|
||||
}
|
||||
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
public void Revert()
|
||||
{
|
||||
int error = 0;
|
||||
@@ -413,8 +403,6 @@ namespace WPinternals
|
||||
|
||||
// This code must be eagerly prepared and non-interruptible.
|
||||
|
||||
RuntimeHelpers.PrepareConstrainedRegions();
|
||||
|
||||
try
|
||||
{
|
||||
// The payload is entirely in the finally block
|
||||
@@ -492,8 +480,6 @@ namespace WPinternals
|
||||
|
||||
Privilege p = new Privilege(privilege);
|
||||
|
||||
RuntimeHelpers.PrepareConstrainedRegions();
|
||||
|
||||
try
|
||||
{
|
||||
if (enabled)
|
||||
@@ -520,7 +506,6 @@ namespace WPinternals
|
||||
#endregion
|
||||
|
||||
#region Private implementation
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||||
private void ToggleState(bool enable)
|
||||
{
|
||||
int error = 0;
|
||||
@@ -542,8 +527,6 @@ namespace WPinternals
|
||||
// Need to make this block of code non-interruptible so that it would preserve
|
||||
// consistency of thread oken state even in the face of catastrophic exceptions
|
||||
|
||||
RuntimeHelpers.PrepareConstrainedRegions();
|
||||
|
||||
try
|
||||
{
|
||||
// The payload is entirely in the finally block
|
||||
@@ -635,11 +618,8 @@ namespace WPinternals
|
||||
}
|
||||
}
|
||||
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
|
||||
private void Reset()
|
||||
{
|
||||
RuntimeHelpers.PrepareConstrainedRegions();
|
||||
|
||||
try
|
||||
{
|
||||
// Payload is in the finally block
|
||||
|
||||
+16
-946
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user