KeQuerySystemTime to "real" date

How do I convert system time from KeQuerySystemTime to a “real” date
including month, day, and year?

Thanks.

RtlTimeToTimeFields

----- Original Message -----
From: Neil R. Weicher
To: File Systems Developers
Sent: Saturday, June 10, 2000 2:06 AM
Subject: [ntfsd] KeQuerySystemTime to “real” date

> How do I convert system time from KeQuerySystemTime to a “real” date
> including month, day, and year?
>
> Thanks.
>
>
>
> —
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>

> How do I convert system time from KeQuerySystemTime to a “real” date

including month, day, and year?

Thanks.

Pass the system time to this func.

BOOLEAN FileTimeToDosDateTime(PLARGE_INTEGER Current_time,
// pointer to 64-bit file time
PSHORT pFatDate,
// pointer to variable for MS-DOS date
PSHORT pFatTime
// pointer to variable for MS-DOS time
)
{
TIME_FIELDS TimeFields;
SHORT Date;
SHORT Time;
SHORT YearOffset;

RtlTimeToTimeFields(lpFileTime,&TimeFields);
//Initialize to 0
Date = 0;

//bits 0-4 should be Day
Date |= (TimeFields.Day & 0x001f);

//Bits 5-8 Month
Date |= ((TimeFields.Month << 5) & 0x01E0);

if(TimeFields.Year < 1601)
{
DbgPrint(“\nFileTimeToDaosTime: year less than 1601”);
return FALSE;
}

//Year is offset from 1980.
if(TimeFields.Year <= 1980)
YearOffset = 1980 - TimeFields.Year;
else
YearOffset = TimeFields.Year - 1980;

//Bits 9-15 Year offset
Date |= ((YearOffset << 9) & 0xFE00);
*pFatDate = Date;
// DbgPrint(“\nFileTimeToDosTime : DosTime 0x%x”,*pFatDate);

//Initialize tine to 0
Time = 0;
//Bits 0-4 Seconds / 2
Time |= (TimeFields.Second & 0x001F) / 2;

//bits 5 - 10 Minute
Time |= ((TimeFields.Minute << 5) & 0x07E0);

//bits 11-15 Hour
Time |= ((TimeFields.Hour << 11 ) & 0xF800);
*pFatTime = Time;
// DbgPrint(“\nFileTimeToDosTime : DosTime 0x%x”,*pFatTime);
return TRUE;
}