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 *);