Implemented RtlTimeToElapsedTimeFields.

diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c
index aee7e48..89d0804 100644
--- a/dlls/ntdll/time.c
+++ b/dlls/ntdll/time.c
@@ -545,23 +545,27 @@
 /******************************************************************************
  *       RtlTimeToElapsedTimeFields [NTDLL.@]
  *
- * ??
- *
- * PARAMS:
- *   liTime [?]: ??
- *   TimeFields [?]: ??
- *
  * RETURNS:
  *   Nothing.
- *
- * FIXME:
- *   Prototype guessed.
  */
-VOID WINAPI RtlTimeToElapsedTimeFields(
-	PLARGE_INTEGER liTime,
-	PTIME_FIELDS TimeFields)
+void WINAPI RtlTimeToElapsedTimeFields( const LARGE_INTEGER *Time, PTIME_FIELDS TimeFields )
 {
-	FIXME("(%p,%p): stub\n",liTime,TimeFields);
+    LONGLONG time;
+    UINT rem;
+
+    time = RtlExtendedLargeIntegerDivide( Time->QuadPart, TICKSPERSEC, &rem );
+    TimeFields->Milliseconds = rem / TICKSPERMSEC;
+
+    /* time is now in seconds */
+    TimeFields->Year  = 0;
+    TimeFields->Month = 0;
+    TimeFields->Day   = RtlExtendedLargeIntegerDivide( time, SECSPERDAY, &rem );
+
+    /* rem is now the remaining seconds in the last day */
+    TimeFields->Second = rem % 60;
+    rem /= 60;
+    TimeFields->Minute = rem % 60;
+    TimeFields->Hour = rem / 60;
 }
 
 /***********************************************************************
diff --git a/include/winternl.h b/include/winternl.h
index 44b885f..c3e71f2 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -1038,7 +1038,7 @@
 
 void      WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
 BOOLEAN   WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
-void      WINAPI RtlTimeToElapsedTimeFields(PLARGE_INTEGER,PTIME_FIELDS);
+void      WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
 BOOLEAN   WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,PULONG);
 BOOLEAN   WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
 BOOL      WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);