/* * @implemented */ BOOL WINAPI SetTimeZoneInformation(CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation) { NTSTATUS Status; DPRINT("SetTimeZoneInformation()\n"); Status = RtlSetTimeZoneInformation((LPTIME_ZONE_INFORMATION)lpTimeZoneInformation); if (!NT_SUCCESS(Status)) { DPRINT1("RtlSetTimeZoneInformation() failed (Status %lx)\n", Status); BaseSetLastNTError(Status); return FALSE; } Status = NtSetSystemInformation(SystemCurrentTimeZoneInformation, (PVOID)lpTimeZoneInformation, sizeof(TIME_ZONE_INFORMATION)); if (!NT_SUCCESS(Status)) { DPRINT1("NtSetSystemInformation() failed (Status %lx)\n", Status); BaseSetLastNTError(Status); return FALSE; } return TRUE; }
/*********************************************************************** * SetTimeZoneInformation (KERNEL32.@) * * Change the settings of the current local time zone. * * PARAMS * tzinfo [in] The new time zone. * * RETURNS * Success: TRUE. The time zone was updated with the settings from tzinfo. * Failure: FALSE. */ BOOL WINAPI SetTimeZoneInformation( const TIME_ZONE_INFORMATION *tzinfo ) { NTSTATUS status; status = RtlSetTimeZoneInformation( (const RTL_TIME_ZONE_INFORMATION *)tzinfo ); if ( status != STATUS_SUCCESS ) SetLastError( RtlNtStatusToDosError(status) ); return !status; }
/* * @implemented */ BOOL WINAPI SetTimeZoneInformation(CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation) { RTL_TIME_ZONE_INFORMATION TimeZoneInformation; NTSTATUS Status; DPRINT("SetTimeZoneInformation()\n"); TimeZoneInformation.Bias = lpTimeZoneInformation->Bias; wcsncpy(TimeZoneInformation.StandardName, lpTimeZoneInformation->StandardName, ARRAYSIZE(TimeZoneInformation.StandardName)); TimeZoneInformation.StandardDate.Year = lpTimeZoneInformation->StandardDate.wYear; TimeZoneInformation.StandardDate.Month = lpTimeZoneInformation->StandardDate.wMonth; TimeZoneInformation.StandardDate.Day = lpTimeZoneInformation->StandardDate.wDay; TimeZoneInformation.StandardDate.Hour = lpTimeZoneInformation->StandardDate.wHour; TimeZoneInformation.StandardDate.Minute = lpTimeZoneInformation->StandardDate.wMinute; TimeZoneInformation.StandardDate.Second = lpTimeZoneInformation->StandardDate.wSecond; TimeZoneInformation.StandardDate.Milliseconds = lpTimeZoneInformation->StandardDate.wMilliseconds; TimeZoneInformation.StandardDate.Weekday = lpTimeZoneInformation->StandardDate.wDayOfWeek; TimeZoneInformation.StandardBias = lpTimeZoneInformation->StandardBias; wcsncpy(TimeZoneInformation.DaylightName, lpTimeZoneInformation->DaylightName, ARRAYSIZE(TimeZoneInformation.DaylightName)); TimeZoneInformation.DaylightDate.Year = lpTimeZoneInformation->DaylightDate.wYear; TimeZoneInformation.DaylightDate.Month = lpTimeZoneInformation->DaylightDate.wMonth; TimeZoneInformation.DaylightDate.Day = lpTimeZoneInformation->DaylightDate.wDay; TimeZoneInformation.DaylightDate.Hour = lpTimeZoneInformation->DaylightDate.wHour; TimeZoneInformation.DaylightDate.Minute = lpTimeZoneInformation->DaylightDate.wMinute; TimeZoneInformation.DaylightDate.Second = lpTimeZoneInformation->DaylightDate.wSecond; TimeZoneInformation.DaylightDate.Milliseconds = lpTimeZoneInformation->DaylightDate.wMilliseconds; TimeZoneInformation.DaylightDate.Weekday = lpTimeZoneInformation->DaylightDate.wDayOfWeek; TimeZoneInformation.DaylightBias = lpTimeZoneInformation->DaylightBias; Status = RtlSetTimeZoneInformation(&TimeZoneInformation); if (!NT_SUCCESS(Status)) { DPRINT1("RtlSetTimeZoneInformation() failed (Status %lx)\n", Status); BaseSetLastNTError(Status); return FALSE; } Status = NtSetSystemInformation(SystemCurrentTimeZoneInformation, (PVOID)&TimeZoneInformation, sizeof(RTL_TIME_ZONE_INFORMATION)); if (!NT_SUCCESS(Status)) { DPRINT1("NtSetSystemInformation() failed (Status %lx)\n", Status); BaseSetLastNTError(Status); return FALSE; } return TRUE; }