фиксы windows 7
This commit is contained in:
@@ -53,7 +53,7 @@ public class SetTimeOption : IOption
|
||||
for (var i = 0; i < 3; i++)
|
||||
{
|
||||
// FIXME: вызывает падение на windows 7
|
||||
var dt = DateTime.Now;
|
||||
var dt = WindowsTimeUtils.Now();
|
||||
DeviceWriters.SetTime(device, dt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,12 +7,17 @@
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<PublishAot>true</PublishAot>
|
||||
<TrimMode>link</TrimMode>
|
||||
<TrimmerSingleWarn>false</TrimmerSingleWarn>
|
||||
<InvariantGlobalization>true</InvariantGlobalization>
|
||||
<RootNamespace>RTCSync</RootNamespace>
|
||||
<IlcOptimizationPreference>Size</IlcOptimizationPreference>
|
||||
<IlcDisableReflection>true</IlcDisableReflection>
|
||||
<OptimizationPreference>Speed</OptimizationPreference>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="LibUsbDotNet" Version="3.0.224" />
|
||||
<PackageReference Include="LibUsbDotNet" Version="3.0.224"/>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -12,15 +12,34 @@ public abstract class WindowsTimeUtils
|
||||
public static extern void GetSystemTime(ref SystemTime time);
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct SystemTime(DateTime dt)
|
||||
public struct SystemTime
|
||||
{
|
||||
public ushort Year = (ushort)dt.Year;
|
||||
public ushort Month = (ushort)dt.Month;
|
||||
public ushort DayOfWeek = (ushort)dt.DayOfWeek;
|
||||
public ushort Day = (ushort)dt.Day;
|
||||
public ushort Hour = (ushort)dt.Hour;
|
||||
public ushort Minute = (ushort)dt.Minute;
|
||||
public ushort Second = (ushort)dt.Second;
|
||||
public ushort Milliseconds = (ushort)dt.Millisecond;
|
||||
public ushort Year, Month, DayOfWeek, Day;
|
||||
public ushort Hour, Minute, Second, Milliseconds;
|
||||
|
||||
public SystemTime() { }
|
||||
|
||||
public SystemTime(DateTime dt)
|
||||
{
|
||||
Year = (ushort)dt.Year;
|
||||
Month = (ushort)dt.Month;
|
||||
DayOfWeek = (ushort)dt.DayOfWeek;
|
||||
Day = (ushort)dt.Day;
|
||||
Hour = (ushort)dt.Hour;
|
||||
Minute = (ushort)dt.Minute;
|
||||
Second = (ushort)dt.Second;
|
||||
Milliseconds = (ushort)dt.Millisecond;
|
||||
}
|
||||
}
|
||||
|
||||
// Фикс для Windows 7 SP1 без обновлений
|
||||
// DataTime.Now использует слишком новый API
|
||||
public static DateTime Now()
|
||||
{
|
||||
var st = new SystemTime();
|
||||
GetSystemTime(ref st);
|
||||
return new DateTime(st.Year, st.Month, st.Day,
|
||||
st.Hour, st.Minute, st.Second, st.Milliseconds,
|
||||
DateTimeKind.Utc).ToLocalTime();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user