2 * PROJECT: ReactOS services
3 * LICENSE: GPL - See COPYING in the top level directory
5 * PURPOSE: skeleton service
6 * COPYRIGHT: Copyright 2008 Ged Murphy <gedmurphy@reactos.org>
10 #include "myservice.h"
12 static LPTSTR lpEventSource
= _T("Skeleton service");
13 static LPTSTR lpLogFileName
= _T("C:\\skel_service.log");
14 static HANDLE hLogFile
;
18 LogToEventLog(LPCTSTR lpMsg
,
25 hEventLog
= RegisterEventSource(NULL
, lpEventSource
);
28 ReportEvent(hEventLog
,
29 (flags
& LOG_ERROR
) ? EVENTLOG_ERROR_TYPE
: EVENTLOG_SUCCESS
,
38 CloseEventLog(hEventLog
);
45 hLogFile
= CreateFile(lpLogFileName
,
50 FILE_ATTRIBUTE_NORMAL
,
52 if (hLogFile
== INVALID_HANDLE_VALUE
)
59 LogToFile(LPCTSTR lpMsg
,
64 LPTSTR lpFullMsg
= NULL
;
70 msgLen
= _tcslen(lpMsg
) + 1;
72 if (flags
& LOG_ERROR
)
77 eMsgLen
= FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_FROM_SYSTEM
,
80 MAKELANGID(LANG_NEUTRAL
, SUBLANG_DEFAULT
),
85 msgLen
= msgLen
+ eMsgLen
+ 40;
87 lpFullMsg
= HeapAlloc(GetProcessHeap(),
89 msgLen
* sizeof(TCHAR
));
94 _T("%s : %s\tErrNum = %lu ExitCode = %lu\r\n"),
108 lpFullMsg
= HeapAlloc(GetProcessHeap(),
110 msgLen
* sizeof(TCHAR
));
113 _sntprintf(lpFullMsg
,
124 SetFilePointer(hLogFile
, 0, NULL
, FILE_END
);
128 _tcslen(lpFullMsg
) * sizeof(TCHAR
),
131 if (bytesWritten
== 0)
133 LogToEventLog(_T("Failed to write to log file"),
136 LOG_EVENTLOG
| LOG_ERROR
);
139 HeapFree(GetProcessHeap(),
144 CloseHandle(hLogFile
);
147 ExitProcess(exitCode
);
152 LogEvent(LPCTSTR lpMsg
,
158 if (flags
& LOG_FILE
|| flags
& LOG_ERROR
)
159 LogToFile(lpMsg
, errNum
, exitCode
, flags
);
161 if (flags
& LOG_EVENTLOG
)
162 LogToEventLog(lpMsg
, errNum
, exitCode
, flags
);
169 WCHAR wcBom
= 0xFEFF;
171 DeleteFile(lpLogFileName
);
183 if (bytesWritten
== 0)
185 LogToEventLog(_T("Failed to write to log file"),
188 LOG_EVENTLOG
| LOG_ERROR
);
191 CloseHandle(hLogFile
);