Index: /trunk/src/VBox/Additions/WINNT/VBoxGuest/VBoxGuest.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxGuest/VBoxGuest.cpp	(revision 16953)
+++ /trunk/src/VBox/Additions/WINNT/VBoxGuest/VBoxGuest.cpp	(revision 16954)
@@ -1363,6 +1363,6 @@
 
 /**
- * Worker thread to do periodic things such as synchronize the
- * system time and notify other drivers of events.
+ * Worker thread to do periodic things such as notify other
+ * drivers of events.
  *
  * @param   pDevExt device extension pointer
@@ -1375,14 +1375,4 @@
     dprintf(("VBoxGuest::vboxWorkerThread entered\n"));
 
-    VMMDevReqHostTime *req = NULL;
-
-    int rc = VbglGRAlloc ((VMMDevRequestHeader **)&req, sizeof (VMMDevReqHostTime), VMMDevReq_GetHostTime);
-
-    if (RT_FAILURE(rc))
-    {
-        dprintf(("VBoxGuest::vboxWorkerThread: could not allocate request buffer, exiting rc = %d!\n", rc));
-        return;
-    }
-
     /* perform the hypervisor address space reservation */
     reserveHypervisorMemory(pDevExt);
@@ -1390,35 +1380,5 @@
     do
     {
-        /*
-         * Do the time sync
-         */
-        {
-            LARGE_INTEGER systemTime;
-            #define TICKSPERSEC  10000000
-            #define TICKSPERMSEC 10000
-            #define SECSPERDAY   86400
-            #define SECS_1601_TO_1970  ((369 * 365 + 89) * (uint64_t)SECSPERDAY)
-            #define TICKS_1601_TO_1970 (SECS_1601_TO_1970 * TICKSPERSEC)
-
-
-            req->header.rc = VERR_GENERAL_FAILURE;
-
-            rc = VbglGRPerform (&req->header);
-
-            if (RT_SUCCESS(rc) && RT_SUCCESS(req->header.rc))
-            {
-                uint64_t hostTime = req->time;
-
-                // Windows was originally designed in 1601...
-                systemTime.QuadPart = hostTime * (uint64_t)TICKSPERMSEC + (uint64_t)TICKS_1601_TO_1970;
-                dprintf(("VBoxGuest::vboxWorkerThread: synching time with host time (msec/UTC): %llu\n", hostTime));
-                ZwSetSystemTime(&systemTime, NULL);
-            }
-            else
-            {
-                dprintf(("VBoxGuest::PowerStateRequest: error performing request to VMMDev."
-                          "rc = %d, VMMDev rc = %Rrc\n", rc, req->header.rc));
-            }
-        }
+        /* Nothing to do here yet. */
 
         /*
@@ -1440,7 +1400,4 @@
 
     dprintf(("VBoxGuest::vboxWorkerThread: we've been asked to terminate!\n"));
-
-    /* free our request buffer */
-    VbglGRFree (&req->header);
 
     if (pDevExt->workerThread)
Index: /trunk/src/VBox/Additions/WINNT/VBoxService/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxService/Makefile.kmk	(revision 16953)
+++ /trunk/src/VBox/Additions/WINNT/VBoxService/Makefile.kmk	(revision 16954)
@@ -33,6 +33,6 @@
 	VBoxService.cpp \
 	VBoxUtils.cpp \
-	VBoxService.rc
-
+	VBoxService.rc \
+	VBoxTimeSync.cpp
 ifdef VBOX_WITH_GUEST_PROPS
  VBoxService_SOURCES += \
Index: /trunk/src/VBox/Additions/WINNT/VBoxService/VBoxService.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxService/VBoxService.cpp	(revision 16953)
+++ /trunk/src/VBox/Additions/WINNT/VBoxService/VBoxService.cpp	(revision 16954)
@@ -24,4 +24,5 @@
     #include "VBoxVMInfo.h"
 #endif
+#include "VBoxTimeSync.h"
 #include "resource.h"
 
@@ -53,4 +54,10 @@
     },
 #endif
+    {
+        "TimeSync",
+        vboxTimeSyncInit,
+        vboxTimeSyncThread,
+        vboxTimeSyncDestroy,
+    },
     {
         NULL
Index: /trunk/src/VBox/Additions/WINNT/VBoxService/VBoxService.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxService/VBoxService.h	(revision 16953)
+++ /trunk/src/VBox/Additions/WINNT/VBoxService/VBoxService.h	(revision 16954)
@@ -35,6 +35,7 @@
 #include <iprt/assert.h>
 #include <iprt/initterm.h>
+#include <iprt/log.h>
 #include <iprt/string.h>
-#include <iprt/log.h>
+#include <iprt/time.h>
 
 #include <VBox/version.h>
Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk	(revision 16953)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk	(revision 16954)
@@ -98,5 +98,6 @@
 	VBoxGuestR3LibGR.cpp \
 	$(if $(VBOX_WITH_GUEST_PROPS),VBoxGuestR3LibGuestProp.cpp,) \
-	VBoxGuestR3LibMisc.cpp
+	VBoxGuestR3LibMisc.cpp \
+	VBoxGuestR3LibTime.cpp
 endif
 
