RtlpSetTimeZoneInformationWorker
INT64 __fastcall RtlpSetTimeZoneInformationWorker(
_RTL_DYNAMIC_TIME_ZONE_INFORMATION *DynamicTimeZoneInformation,
UINT64 TimeZoneInformationSize){
wchar_t *StandardName;
unsigned int v3;
size_t v5;
int v6;
size_t v7;
BOOL v8;
int v9;
size_t v10;
int v11;
INT64 result;
int v13;
int *p_DynamicDaylightTimeDisabled;
UINT64 ValueLength;
UINT64 ValueLengtha;
UINT64 ValueLengthb;
int v18;
int DynamicDaylightTimeDisabled;
PCWSTR Path;
Path = 0i64;
StandardName = DynamicTimeZoneInformation->tzi.StandardName;
v3 = TimeZoneInformationSize;
v5 = wcsnlen(DynamicTimeZoneInformation->tzi.StandardName, 0x20ui64);
v6 = v5;
if( v5 >= 0x20 )
return 3221225485i64;
v7 = wcsnlen(DynamicTimeZoneInformation->tzi.DaylightName, 0x20ui64);
v9 = v7;
if( v7 >= 0x20 )
return 3221225485i64;
if( v3 < 0x1B0 )
{
v11 = 0;
}
else
{
v10 = wcsnlen(DynamicTimeZoneInformation->TimeZoneKeyName, 0x80ui64);
v11 = v10;
if( v10 >= 0x80 )
return 3221225485i64;
}
LOBYTE(v8) = 1;
LODWORD(result) = RtlpGetTimeZoneInfoHandle(v8, (PHANDLE)&Path);
if( (int)result >= 0 )
{
LODWORD(ValueLength) = 4;
if( (int)RtlWriteRegistryValue(0x40000000ui64, Path, L"Bias", 4ui64, DynamicTimeZoneInformation, ValueLength) < 0
|| (LODWORD(ValueLengtha) = 2 * v6 + 2,
(int)RtlWriteRegistryValue(0x40000000ui64, Path, L"StandardName", 1ui64, StandardName, ValueLengtha) < 0)
|| (LODWORD(ValueLengtha) = 4,
(int)RtlWriteRegistryValue(
0x40000000ui64,
Path,
L"StandardBias",
4ui64,
&DynamicTimeZoneInformation->tzi.StandardBias,
ValueLengtha) < 0)
|| (LODWORD(ValueLengtha) = 16,
(int)RtlWriteRegistryValue(
0x40000000ui64,
Path,
L"StandardStart",
3ui64,
&DynamicTimeZoneInformation->tzi.StandardStart,
ValueLengtha) < 0)
|| (LODWORD(ValueLengtha) = 2 * v9 + 2,
(int)RtlWriteRegistryValue(
0x40000000ui64,
Path,
L"DaylightName",
1ui64,
DynamicTimeZoneInformation->tzi.DaylightName,
ValueLengtha) < 0)
|| (LODWORD(ValueLengtha) = 4,
(int)RtlWriteRegistryValue(
0x40000000ui64,
Path,
L"DaylightBias",
4ui64,
&DynamicTimeZoneInformation->tzi.DaylightBias,
ValueLengtha) < 0)
|| (LODWORD(ValueLengtha) = 16,
(int)RtlWriteRegistryValue(
0x40000000ui64,
Path,
L"DaylightStart",
3ui64,
&DynamicTimeZoneInformation->tzi.DaylightStart,
ValueLengtha) < 0)
|| v3 < 0x1B0 )
{
LODWORD(ValueLengtha) = 2;
LOWORD(v18) = 0;
v13 = RtlWriteRegistryValue(0x40000000ui64, Path, L"TimeZoneKeyName", 1ui64, &v18, ValueLengtha);
if( v13 >= 0 )
{
DynamicDaylightTimeDisabled = DynamicTimeZoneInformation->DynamicDaylightTimeDisabled;
p_DynamicDaylightTimeDisabled = &DynamicDaylightTimeDisabled;
goto LABEL_21;
}
}
else
{
LODWORD(ValueLengtha) = 2 * v11 + 2;
v13 = RtlWriteRegistryValue(
0x40000000ui64,
Path,
L"TimeZoneKeyName",
1ui64,
DynamicTimeZoneInformation->TimeZoneKeyName,
ValueLengtha);
if( v13 >= 0 )
{
v18 = DynamicTimeZoneInformation->DynamicDaylightTimeDisabled;
p_DynamicDaylightTimeDisabled = &v18;
LABEL_21:
LODWORD(ValueLengthb) = 4;
v13 = RtlWriteRegistryValue(
0x40000000ui64,
Path,
L"DynamicDaylightTimeDisabled",
4ui64,
p_DynamicDaylightTimeDisabled,
ValueLengthb);
}
}
ZwClose((HANDLE)Path);
return(unsigned int)v13;
}
return result;
}Referenced by:
ExpRefreshTimeZoneInformation
ExpSetTimeZoneInformation
RtlSetDynamicTimeZoneInformation
RtlSetTimeZoneInformation