|
22 | 22 |
|
23 | 23 | #include "service.h"
|
24 | 24 | #include "validate.h"
|
| 25 | +#include "eventmsg.h" |
25 | 26 |
|
26 | 27 | LPCWSTR service_instance = L"";
|
27 | 28 | static wchar_t win_sys_path[MAX_PATH];
|
@@ -203,25 +204,29 @@ GetLastErrorText(void)
|
203 | 204 | LPWSTR tmp = NULL;
|
204 | 205 |
|
205 | 206 | error = GetLastError();
|
206 |
| - len = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
207 |
| - | FORMAT_MESSAGE_ARGUMENT_ARRAY, |
208 |
| - NULL, error, LANG_NEUTRAL, tmp, 0, NULL); |
| 207 | + len = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
| 208 | + | FORMAT_MESSAGE_IGNORE_INSERTS, |
| 209 | + NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&tmp, 0, NULL); |
209 | 210 |
|
210 |
| - if (len == 0 || (long)_countof(buf) < (long)len + 14) |
| 211 | + if (!len || !tmp) |
211 | 212 | {
|
212 |
| - buf[0] = L'\0'; |
213 |
| - } |
214 |
| - else |
215 |
| - { |
216 |
| - tmp[wcslen(tmp) - 2] = L'\0'; /* remove CR/LF characters */ |
217 |
| - swprintf(buf, _countof(buf), L"%ls (0x%x)", tmp, error); |
| 213 | + swprintf(buf, _countof(buf), L"Unknown error (0x%lx)", error); |
| 214 | + if (tmp) |
| 215 | + { |
| 216 | + LocalFree(tmp); |
| 217 | + } |
| 218 | + return buf; |
218 | 219 | }
|
219 | 220 |
|
220 |
| - if (tmp) |
| 221 | + /* trim trailing CR / LF / spaces safely */ |
| 222 | + while (len && (tmp[len - 1] == L'\r' || tmp[len - 1] == L'\n' || tmp[len - 1] == L' ')) |
221 | 223 | {
|
222 |
| - LocalFree(tmp); |
| 224 | + tmp[--len] = L'\0'; |
223 | 225 | }
|
224 | 226 |
|
| 227 | + swprintf(buf, _countof(buf), L"%ls (0x%lx)", tmp, error); |
| 228 | + |
| 229 | + LocalFree(tmp); |
225 | 230 | return buf;
|
226 | 231 | }
|
227 | 232 |
|
@@ -253,8 +258,14 @@ MsgToEventLog(DWORD flags, LPCWSTR format, ...)
|
253 | 258 |
|
254 | 259 | const WCHAR *mesg[] = { msg[0], msg[1] };
|
255 | 260 | ReportEvent(hEventSource,
|
256 |
| - flags & MSG_FLAGS_ERROR ? EVENTLOG_ERROR_TYPE : EVENTLOG_INFORMATION_TYPE, 0, 0, |
257 |
| - NULL, 2, 0, mesg, NULL); |
| 261 | + flags & MSG_FLAGS_ERROR ? EVENTLOG_ERROR_TYPE : EVENTLOG_INFORMATION_TYPE, |
| 262 | + 0, |
| 263 | + EVT_TEXT_2, |
| 264 | + NULL, |
| 265 | + 2, |
| 266 | + 0, |
| 267 | + mesg, |
| 268 | + NULL); |
258 | 269 | DeregisterEventSource(hEventSource);
|
259 | 270 | }
|
260 | 271 |
|
|
0 commit comments