mirror of
https://github.com/reactos/reactos.git
synced 2024-12-29 10:35:28 +00:00
[TIMEDATE] Avoid the use of DisplayWin32Error in time sync utility functions. CORE-13001
This commit is contained in:
parent
aa24ad7429
commit
1938b7484e
3 changed files with 60 additions and 36 deletions
|
@ -204,8 +204,15 @@ InetTimePageProc(HWND hwndDlg,
|
|||
{
|
||||
case IDC_UPDATEBUTTON:
|
||||
{
|
||||
DWORD dwError;
|
||||
|
||||
SetNTPServer(hwndDlg);
|
||||
SyncTimeNow();
|
||||
|
||||
dwError = SyncTimeNow();
|
||||
if (dwError != ERROR_SUCCESS)
|
||||
{
|
||||
DisplayWin32Error(dwError);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ ULONG GetServerTime(LPWSTR lpAddress);
|
|||
|
||||
|
||||
/* w32time.c */
|
||||
VOID SyncTimeNow(VOID);
|
||||
DWORD SyncTimeNow(VOID);
|
||||
|
||||
|
||||
/* monthcal.c */
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#include "timedate.h"
|
||||
|
||||
/* Get the domain name from the registry */
|
||||
static BOOL
|
||||
static DWORD
|
||||
GetNTPServerAddress(LPWSTR *lpAddress)
|
||||
{
|
||||
HKEY hKey;
|
||||
|
@ -16,13 +16,16 @@ GetNTPServerAddress(LPWSTR *lpAddress)
|
|||
DWORD dwSize;
|
||||
LONG lRet;
|
||||
|
||||
*lpAddress = NULL;
|
||||
hKey = NULL;
|
||||
|
||||
lRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
|
||||
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DateTime\\Servers",
|
||||
0,
|
||||
KEY_QUERY_VALUE,
|
||||
&hKey);
|
||||
if (lRet != ERROR_SUCCESS)
|
||||
goto fail;
|
||||
goto Exit;
|
||||
|
||||
/* Get data from default value */
|
||||
dwSize = 4 * sizeof(WCHAR);
|
||||
|
@ -33,7 +36,7 @@ GetNTPServerAddress(LPWSTR *lpAddress)
|
|||
(LPBYTE)szSel,
|
||||
&dwSize);
|
||||
if (lRet != ERROR_SUCCESS)
|
||||
goto fail;
|
||||
goto Exit;
|
||||
|
||||
dwSize = 0;
|
||||
lRet = RegQueryValueExW(hKey,
|
||||
|
@ -43,7 +46,7 @@ GetNTPServerAddress(LPWSTR *lpAddress)
|
|||
NULL,
|
||||
&dwSize);
|
||||
if (lRet != ERROR_SUCCESS)
|
||||
goto fail;
|
||||
goto Exit;
|
||||
|
||||
(*lpAddress) = (LPWSTR)HeapAlloc(GetProcessHeap(),
|
||||
0,
|
||||
|
@ -51,7 +54,7 @@ GetNTPServerAddress(LPWSTR *lpAddress)
|
|||
if ((*lpAddress) == NULL)
|
||||
{
|
||||
lRet = ERROR_NOT_ENOUGH_MEMORY;
|
||||
goto fail;
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
lRet = RegQueryValueExW(hKey,
|
||||
|
@ -61,38 +64,42 @@ GetNTPServerAddress(LPWSTR *lpAddress)
|
|||
(LPBYTE)*lpAddress,
|
||||
&dwSize);
|
||||
if (lRet != ERROR_SUCCESS)
|
||||
goto fail;
|
||||
goto Exit;
|
||||
|
||||
RegCloseKey(hKey);
|
||||
|
||||
return TRUE;
|
||||
|
||||
fail:
|
||||
DisplayWin32Error(lRet);
|
||||
Exit:
|
||||
if (hKey)
|
||||
RegCloseKey(hKey);
|
||||
if (lRet != ERROR_SUCCESS)
|
||||
HeapFree(GetProcessHeap(), 0, *lpAddress);
|
||||
return FALSE;
|
||||
|
||||
return lRet;
|
||||
}
|
||||
|
||||
|
||||
/* Request the time from the current NTP server */
|
||||
static ULONG
|
||||
GetTimeFromServer(VOID)
|
||||
static DWORD
|
||||
GetTimeFromServer(PULONG pulTime)
|
||||
{
|
||||
LPWSTR lpAddress = NULL;
|
||||
ULONG ulTime = 0;
|
||||
LPWSTR lpAddress;
|
||||
DWORD dwError;
|
||||
|
||||
if (GetNTPServerAddress(&lpAddress))
|
||||
dwError = GetNTPServerAddress(&lpAddress);
|
||||
if (dwError != ERROR_SUCCESS)
|
||||
{
|
||||
ulTime = GetServerTime(lpAddress);
|
||||
return dwError;
|
||||
}
|
||||
|
||||
*pulTime = GetServerTime(lpAddress);
|
||||
if (*pulTime == 0)
|
||||
{
|
||||
dwError = ERROR_GEN_FAILURE;
|
||||
}
|
||||
|
||||
HeapFree(GetProcessHeap(),
|
||||
0,
|
||||
lpAddress);
|
||||
}
|
||||
|
||||
return ulTime;
|
||||
return dwError;
|
||||
}
|
||||
|
||||
|
||||
|
@ -158,7 +165,7 @@ SystemSetTime(LPSYSTEMTIME lpSystemTime)
|
|||
* 1st Jan, 1900. The time returned from the server
|
||||
* needs adding to that date to get the current Gregorian time
|
||||
*/
|
||||
static VOID
|
||||
static DWORD
|
||||
UpdateSystemTime(ULONG ulTime)
|
||||
{
|
||||
FILETIME ftNew;
|
||||
|
@ -177,8 +184,7 @@ UpdateSystemTime(ULONG ulTime)
|
|||
/* Convert to a file time */
|
||||
if (!SystemTimeToFileTime(&stNew, &ftNew))
|
||||
{
|
||||
DisplayWin32Error(GetLastError());
|
||||
return;
|
||||
return GetLastError();
|
||||
}
|
||||
|
||||
/* Add on the time passed since 1st Jan 1900 */
|
||||
|
@ -189,23 +195,34 @@ UpdateSystemTime(ULONG ulTime)
|
|||
/* Convert back to a system time */
|
||||
if (!FileTimeToSystemTime(&ftNew, &stNew))
|
||||
{
|
||||
DisplayWin32Error(GetLastError());
|
||||
return;
|
||||
return GetLastError();
|
||||
}
|
||||
|
||||
if (!SystemSetTime(&stNew))
|
||||
{
|
||||
DisplayWin32Error(GetLastError());
|
||||
return GetLastError();
|
||||
}
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
DWORD
|
||||
SyncTimeNow(VOID)
|
||||
{
|
||||
DWORD dwError;
|
||||
ULONG ulTime;
|
||||
ulTime = GetTimeFromServer();
|
||||
dwError = GetTimeFromServer(&ulTime);
|
||||
if (dwError != ERROR_SUCCESS)
|
||||
{
|
||||
return dwError;
|
||||
}
|
||||
|
||||
if (ulTime != 0)
|
||||
UpdateSystemTime(ulTime);
|
||||
{
|
||||
dwError = UpdateSystemTime(ulTime);
|
||||
}
|
||||
|
||||
return dwError;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue