[ADVAPI33/EVENTLOG]
[reactos.git] / reactos / base / services / eventlog / file.c
index 245bb6b..ce80163 100644 (file)
@@ -870,18 +870,18 @@ BOOL LogfWriteData(PLOGFILE LogFile, DWORD BufSize, PBYTE Buffer)
 {
     DWORD dwWritten;
     DWORD dwRead;
-    SYSTEMTIME st;
     EVENTLOGEOF EofRec;
     PEVENTLOGRECORD RecBuf;
     LARGE_INTEGER logFileSize;
+    LARGE_INTEGER SystemTime;
     ULONG RecOffSet;
     ULONG WriteOffSet;
 
     if (!Buffer)
         return FALSE;
 
-    GetSystemTime(&st);
-    SystemTimeToEventTime(&st, &((PEVENTLOGRECORD) Buffer)->TimeWritten);
+    NtQuerySystemTime(&SystemTime);
+    RtlTimeToSecondsSince1970(&SystemTime, &((PEVENTLOGRECORD) Buffer)->TimeWritten);
 
     EnterCriticalSection(&LogFile->cs);
 
@@ -1125,6 +1125,7 @@ BOOL LogfAddOffsetInformation(PLOGFILE LogFile, ULONG ulNumber, ULONG ulOffset)
 
 PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
                                  DWORD   dwRecordNumber,
+                                 DWORD   dwTime,
                                  WORD    wType,
                                  WORD    wCategory,
                                  DWORD   dwEventId,
@@ -1139,7 +1140,6 @@ PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
 {
     DWORD dwRecSize;
     PEVENTLOGRECORD pRec;
-    SYSTEMTIME SysTime;
     WCHAR *str;
     UINT i, pos;
     PBYTE Buffer;
@@ -1148,8 +1148,8 @@ PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
         sizeof(EVENTLOGRECORD) + (lstrlenW(ComputerName) +
                                   lstrlenW(SourceName) + 2) * sizeof(WCHAR);
 
-    if (dwRecSize % 4 != 0)
-        dwRecSize += 4 - (dwRecSize % 4);
+    if (dwRecSize % sizeof(DWORD) != 0)
+        dwRecSize += sizeof(DWORD) - (dwRecSize % sizeof(DWORD));
 
     dwRecSize += dwSidLength;
 
@@ -1160,10 +1160,10 @@ PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
     }
 
     dwRecSize += dwDataSize;
-    if (dwRecSize % 4 != 0)
-        dwRecSize += 4 - (dwRecSize % 4);
+    if (dwRecSize % sizeof(DWORD) != 0)
+        dwRecSize += sizeof(DWORD) - (dwRecSize % sizeof(DWORD));
 
-    dwRecSize += 4;
+    dwRecSize += sizeof(DWORD);
 
     Buffer = HeapAlloc(MyHeap, HEAP_ZERO_MEMORY, dwRecSize);
 
@@ -1178,9 +1178,8 @@ PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
     pRec->Reserved = LOGFILE_SIGNATURE;
     pRec->RecordNumber = dwRecordNumber;
 
-    GetSystemTime(&SysTime);
-    SystemTimeToEventTime(&SysTime, &pRec->TimeGenerated);
-    SystemTimeToEventTime(&SysTime, &pRec->TimeWritten);
+    pRec->TimeGenerated = dwTime;
+    pRec->TimeWritten = dwTime;
 
     pRec->EventID = dwEventId;
     pRec->EventType = wType;
@@ -1195,8 +1194,8 @@ PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
 
     pRec->UserSidOffset = pos;
 
-    if (pos % 4 != 0)
-        pos += 4 - (pos % 4);
+    if (pos % sizeof(DWORD) != 0)
+        pos += sizeof(DWORD) - (pos % sizeof(DWORD));
 
     if (dwSidLength)
     {
@@ -1223,8 +1222,8 @@ PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
         pos += dwDataSize;
     }
 
-    if (pos % 4 != 0)
-        pos += 4 - (pos % 4);
+    if (pos % sizeof(DWORD) != 0)
+        pos += sizeof(DWORD) - (pos % sizeof(DWORD));
 
     *((PDWORD) (Buffer + pos)) = dwRecSize;
 
@@ -1249,6 +1248,8 @@ LogfReportEvent(WORD wType,
     DWORD lastRec;
     DWORD recSize;
     DWORD dwError;
+    DWORD dwTime;
+    LARGE_INTEGER SystemTime;
 
     if (!GetComputerNameW(szComputerName, &dwComputerNameLength))
     {
@@ -1261,9 +1262,13 @@ LogfReportEvent(WORD wType,
         return;
     }
 
+    NtQuerySystemTime(&SystemTime);
+    RtlTimeToSecondsSince1970(&SystemTime, &dwTime);
+
     lastRec = LogfGetCurrentRecord(pEventSource->LogFile);
 
     logBuffer = LogfAllocAndBuildNewRecord(&recSize,
+                                           dwTime,
                                            lastRec,
                                            wType,
                                            wCategory,