Release 1.3.7.
[wine/gsoc-2012-control.git] / dlls / advapi32 / eventlog.c
blob14285886dc874709e5fa30d191531787bd685d7d
1 /*
2 * Win32 advapi functions
4 * Copyright 1995 Sven Verdoolaege
5 * Copyright 1998 Juergen Schmied
6 * Copyright 2003 Mike Hearn
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 #include <stdarg.h>
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winerror.h"
28 #include "winternl.h"
29 #include "wmistr.h"
30 #include "evntrace.h"
31 #include "evntprov.h"
33 #include "wine/unicode.h"
34 #include "wine/debug.h"
36 WINE_DEFAULT_DEBUG_CHANNEL(advapi);
37 WINE_DECLARE_DEBUG_CHANNEL(eventlog);
39 static inline LPWSTR SERV_dup( LPCSTR str )
41 UINT len;
42 LPWSTR wstr;
44 if( !str )
45 return NULL;
46 len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
47 wstr = HeapAlloc( GetProcessHeap(), 0, len*sizeof (WCHAR) );
48 MultiByteToWideChar( CP_ACP, 0, str, -1, wstr, len );
49 return wstr;
52 /******************************************************************************
53 * BackupEventLogA [ADVAPI32.@]
55 * Saves the event log to a backup file.
57 * PARAMS
58 * hEventLog [I] Handle to event log to backup.
59 * lpBackupFileName [I] Name of the backup file.
61 * RETURNS
62 * Success: nonzero. File lpBackupFileName will contain the contents of
63 * hEvenLog.
64 * Failure: zero.
66 BOOL WINAPI BackupEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName )
68 LPWSTR backupW;
69 BOOL ret;
71 backupW = SERV_dup(lpBackupFileName);
72 ret = BackupEventLogW(hEventLog, backupW);
73 HeapFree(GetProcessHeap(), 0, backupW);
75 return ret;
78 /******************************************************************************
79 * BackupEventLogW [ADVAPI32.@]
81 * See BackupEventLogA.
83 BOOL WINAPI BackupEventLogW( HANDLE hEventLog, LPCWSTR lpBackupFileName )
85 FIXME("(%p,%s) stub\n", hEventLog, debugstr_w(lpBackupFileName));
87 if (!lpBackupFileName)
89 SetLastError(ERROR_INVALID_PARAMETER);
90 return FALSE;
93 if (!hEventLog)
95 SetLastError(ERROR_INVALID_HANDLE);
96 return FALSE;
99 if (GetFileAttributesW(lpBackupFileName) != INVALID_FILE_ATTRIBUTES)
101 SetLastError(ERROR_ALREADY_EXISTS);
102 return FALSE;
105 return TRUE;
108 /******************************************************************************
109 * ClearEventLogA [ADVAPI32.@]
111 * Clears the event log and optionally saves the log to a backup file.
113 * PARAMS
114 * hEvenLog [I] Handle to event log to clear.
115 * lpBackupFileName [I] Name of the backup file.
117 * RETURNS
118 * Success: nonzero. if lpBackupFileName != NULL, lpBackupFileName will
119 * contain the contents of hEvenLog and the log will be cleared.
120 * Failure: zero. Fails if the event log is empty or if lpBackupFileName
121 * exists.
123 BOOL WINAPI ClearEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName )
125 LPWSTR backupW;
126 BOOL ret;
128 backupW = SERV_dup(lpBackupFileName);
129 ret = ClearEventLogW(hEventLog, backupW);
130 HeapFree(GetProcessHeap(), 0, backupW);
132 return ret;
135 /******************************************************************************
136 * ClearEventLogW [ADVAPI32.@]
138 * See ClearEventLogA.
140 BOOL WINAPI ClearEventLogW( HANDLE hEventLog, LPCWSTR lpBackupFileName )
142 FIXME("(%p,%s) stub\n", hEventLog, debugstr_w(lpBackupFileName));
144 if (!hEventLog)
146 SetLastError(ERROR_INVALID_HANDLE);
147 return FALSE;
150 return TRUE;
153 /******************************************************************************
154 * CloseEventLog [ADVAPI32.@]
156 * Closes a read handle to the event log.
158 * PARAMS
159 * hEventLog [I/O] Handle of the event log to close.
161 * RETURNS
162 * Success: nonzero
163 * Failure: zero
165 BOOL WINAPI CloseEventLog( HANDLE hEventLog )
167 FIXME("(%p) stub\n", hEventLog);
169 if (!hEventLog)
171 SetLastError(ERROR_INVALID_HANDLE);
172 return FALSE;
175 return TRUE;
178 /******************************************************************************
179 * ControlTraceW [ADVAPI32.@]
181 * Control a givel event trace session
184 ULONG WINAPI ControlTraceW( TRACEHANDLE hSession, LPCWSTR SessionName, PEVENT_TRACE_PROPERTIES Properties, ULONG control )
186 FIXME("(%s, %s, %p, %d) stub\n", wine_dbgstr_longlong(hSession), debugstr_w(SessionName), Properties, control);
187 return ERROR_SUCCESS;
190 /******************************************************************************
191 * ControlTraceA [ADVAPI32.@]
193 * See ControlTraceW.
196 ULONG WINAPI ControlTraceA( TRACEHANDLE hSession, LPCSTR SessionName, PEVENT_TRACE_PROPERTIES Properties, ULONG control )
198 FIXME("(%s, %s, %p, %d) stub\n", wine_dbgstr_longlong(hSession), debugstr_a(SessionName), Properties, control);
199 return ERROR_SUCCESS;
202 /******************************************************************************
203 * FlushTraceA [ADVAPI32.@]
205 ULONG WINAPI FlushTraceA ( TRACEHANDLE hSession, LPCSTR SessionName, PEVENT_TRACE_PROPERTIES Properties )
207 return ControlTraceA( hSession, SessionName, Properties, EVENT_TRACE_CONTROL_FLUSH );
210 /******************************************************************************
211 * FlushTraceW [ADVAPI32.@]
213 ULONG WINAPI FlushTraceW ( TRACEHANDLE hSession, LPCWSTR SessionName, PEVENT_TRACE_PROPERTIES Properties )
215 return ControlTraceW( hSession, SessionName, Properties, EVENT_TRACE_CONTROL_FLUSH );
219 /******************************************************************************
220 * DeregisterEventSource [ADVAPI32.@]
222 * Closes a write handle to an event log
224 * PARAMS
225 * hEventLog [I/O] Handle of the event log.
227 * RETURNS
228 * Success: nonzero
229 * Failure: zero
231 BOOL WINAPI DeregisterEventSource( HANDLE hEventLog )
233 FIXME("(%p) stub\n", hEventLog);
234 return TRUE;
237 /******************************************************************************
238 * EnableTrace [ADVAPI32.@]
240 ULONG WINAPI EnableTrace( ULONG enable, ULONG flag, ULONG level, LPCGUID guid, TRACEHANDLE hSession )
242 FIXME("(%d, 0x%x, %d, %s, %s): stub\n", enable, flag, level,
243 debugstr_guid(guid), wine_dbgstr_longlong(hSession));
245 return ERROR_SUCCESS;
248 /******************************************************************************
249 * GetEventLogInformation [ADVAPI32.@]
251 * Retrieve some information about an event log.
253 * PARAMS
254 * hEventLog [I] Handle to an open event log.
255 * dwInfoLevel [I] Level of information (only EVENTLOG_FULL_INFO)
256 * lpBuffer [I/O] The buffer for the returned information
257 * cbBufSize [I] The size of the buffer
258 * pcbBytesNeeded [O] The needed bytes to hold the information
260 * RETURNS
261 * Success: TRUE. lpBuffer will hold the information and pcbBytesNeeded shows
262 * the needed buffer size.
263 * Failure: FALSE.
265 BOOL WINAPI GetEventLogInformation( HANDLE hEventLog, DWORD dwInfoLevel, LPVOID lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded)
267 EVENTLOG_FULL_INFORMATION *efi;
269 FIXME("(%p, %d, %p, %d, %p) stub\n", hEventLog, dwInfoLevel, lpBuffer, cbBufSize, pcbBytesNeeded);
271 if (dwInfoLevel != EVENTLOG_FULL_INFO)
273 SetLastError(ERROR_INVALID_LEVEL);
274 return FALSE;
277 if (!hEventLog)
279 SetLastError(ERROR_INVALID_HANDLE);
280 return FALSE;
283 if (!lpBuffer || !pcbBytesNeeded)
285 /* FIXME: This will be handled properly when eventlog is moved
286 * to a higher level
288 SetLastError(RPC_X_NULL_REF_POINTER);
289 return FALSE;
292 *pcbBytesNeeded = sizeof(EVENTLOG_FULL_INFORMATION);
293 if (cbBufSize < sizeof(EVENTLOG_FULL_INFORMATION))
295 SetLastError(ERROR_INSUFFICIENT_BUFFER);
296 return FALSE;
299 /* Pretend the log is not full */
300 efi = (EVENTLOG_FULL_INFORMATION *)lpBuffer;
301 efi->dwFull = 0;
303 return TRUE;
306 /******************************************************************************
307 * GetNumberOfEventLogRecords [ADVAPI32.@]
309 * Retrieves the number of records in an event log.
311 * PARAMS
312 * hEventLog [I] Handle to an open event log.
313 * NumberOfRecords [O] Number of records in the log.
315 * RETURNS
316 * Success: nonzero. NumberOfRecords will contain the number of records in
317 * the log.
318 * Failure: zero
320 BOOL WINAPI GetNumberOfEventLogRecords( HANDLE hEventLog, PDWORD NumberOfRecords )
322 FIXME("(%p,%p) stub\n", hEventLog, NumberOfRecords);
324 if (!NumberOfRecords)
326 SetLastError(ERROR_INVALID_PARAMETER);
327 return FALSE;
330 if (!hEventLog)
332 SetLastError(ERROR_INVALID_HANDLE);
333 return FALSE;
336 *NumberOfRecords = 0;
338 return TRUE;
341 /******************************************************************************
342 * GetOldestEventLogRecord [ADVAPI32.@]
344 * Retrieves the absolute record number of the oldest record in an even log.
346 * PARAMS
347 * hEventLog [I] Handle to an open event log.
348 * OldestRecord [O] Absolute record number of the oldest record.
350 * RETURNS
351 * Success: nonzero. OldestRecord contains the record number of the oldest
352 * record in the log.
353 * Failure: zero
355 BOOL WINAPI GetOldestEventLogRecord( HANDLE hEventLog, PDWORD OldestRecord )
357 FIXME("(%p,%p) stub\n", hEventLog, OldestRecord);
359 if (!OldestRecord)
361 SetLastError(ERROR_INVALID_PARAMETER);
362 return FALSE;
365 if (!hEventLog)
367 SetLastError(ERROR_INVALID_HANDLE);
368 return FALSE;
371 *OldestRecord = 0;
373 return TRUE;
376 /******************************************************************************
377 * NotifyChangeEventLog [ADVAPI32.@]
379 * Enables an application to receive notification when an event is written
380 * to an event log.
382 * PARAMS
383 * hEventLog [I] Handle to an event log.
384 * hEvent [I] Handle to a manual-reset event object.
386 * RETURNS
387 * Success: nonzero
388 * Failure: zero
390 BOOL WINAPI NotifyChangeEventLog( HANDLE hEventLog, HANDLE hEvent )
392 FIXME("(%p,%p) stub\n", hEventLog, hEvent);
393 return TRUE;
396 /******************************************************************************
397 * OpenBackupEventLogA [ADVAPI32.@]
399 * Opens a handle to a backup event log.
401 * PARAMS
402 * lpUNCServerName [I] Universal Naming Convention name of the server on which
403 * this will be performed.
404 * lpFileName [I] Specifies the name of the backup file.
406 * RETURNS
407 * Success: Handle to the backup event log.
408 * Failure: NULL
410 HANDLE WINAPI OpenBackupEventLogA( LPCSTR lpUNCServerName, LPCSTR lpFileName )
412 LPWSTR uncnameW, filenameW;
413 HANDLE handle;
415 uncnameW = SERV_dup(lpUNCServerName);
416 filenameW = SERV_dup(lpFileName);
417 handle = OpenBackupEventLogW(uncnameW, filenameW);
418 HeapFree(GetProcessHeap(), 0, uncnameW);
419 HeapFree(GetProcessHeap(), 0, filenameW);
421 return handle;
424 /******************************************************************************
425 * OpenBackupEventLogW [ADVAPI32.@]
427 * See OpenBackupEventLogA.
429 HANDLE WINAPI OpenBackupEventLogW( LPCWSTR lpUNCServerName, LPCWSTR lpFileName )
431 FIXME("(%s,%s) stub\n", debugstr_w(lpUNCServerName), debugstr_w(lpFileName));
433 if (!lpFileName)
435 SetLastError(ERROR_INVALID_PARAMETER);
436 return NULL;
439 if (lpUNCServerName && lpUNCServerName[0])
441 FIXME("Remote server not supported\n");
442 SetLastError(RPC_S_SERVER_UNAVAILABLE);
443 return NULL;
446 if (GetFileAttributesW(lpFileName) == INVALID_FILE_ATTRIBUTES)
448 SetLastError(ERROR_FILE_NOT_FOUND);
449 return NULL;
452 return (HANDLE)0xcafe4242;
455 /******************************************************************************
456 * OpenEventLogA [ADVAPI32.@]
458 * Opens a handle to the specified event log.
460 * PARAMS
461 * lpUNCServerName [I] UNC name of the server on which the event log is
462 * opened.
463 * lpSourceName [I] Name of the log.
465 * RETURNS
466 * Success: Handle to an event log.
467 * Failure: NULL
469 HANDLE WINAPI OpenEventLogA( LPCSTR uncname, LPCSTR source )
471 LPWSTR uncnameW, sourceW;
472 HANDLE handle;
474 uncnameW = SERV_dup(uncname);
475 sourceW = SERV_dup(source);
476 handle = OpenEventLogW(uncnameW, sourceW);
477 HeapFree(GetProcessHeap(), 0, uncnameW);
478 HeapFree(GetProcessHeap(), 0, sourceW);
480 return handle;
483 /******************************************************************************
484 * OpenEventLogW [ADVAPI32.@]
486 * See OpenEventLogA.
488 HANDLE WINAPI OpenEventLogW( LPCWSTR uncname, LPCWSTR source )
490 FIXME("(%s,%s) stub\n", debugstr_w(uncname), debugstr_w(source));
492 if (!source)
494 SetLastError(ERROR_INVALID_PARAMETER);
495 return NULL;
498 if (uncname && uncname[0])
500 FIXME("Remote server not supported\n");
501 SetLastError(RPC_S_SERVER_UNAVAILABLE);
502 return NULL;
505 return (HANDLE)0xcafe4242;
508 /******************************************************************************
509 * QueryAllTracesW [ADVAPI32.@]
511 * Query information for started event trace sessions
514 ULONG WINAPI QueryAllTracesW( PEVENT_TRACE_PROPERTIES * parray, ULONG arraycount, PULONG psessioncount )
516 FIXME("(%p, %d, %p) stub\n", parray, arraycount, psessioncount);
518 if (psessioncount) *psessioncount = 0;
519 return ERROR_SUCCESS;
522 /******************************************************************************
523 * QueryAllTracesA [ADVAPI32.@]
525 * See QueryAllTracesW.
527 ULONG WINAPI QueryAllTracesA( PEVENT_TRACE_PROPERTIES * parray, ULONG arraycount, PULONG psessioncount )
529 FIXME("(%p, %d, %p) stub\n", parray, arraycount, psessioncount);
531 if (psessioncount) *psessioncount = 0;
532 return ERROR_SUCCESS;
535 /******************************************************************************
536 * ReadEventLogA [ADVAPI32.@]
538 * Reads a whole number of entries from an event log.
540 * PARAMS
541 * hEventLog [I] Handle of the event log to read.
542 * dwReadFlags [I] see MSDN doc.
543 * dwRecordOffset [I] Log-entry record number to start at.
544 * lpBuffer [O] Buffer for the data read.
545 * nNumberOfBytesToRead [I] Size of lpBuffer.
546 * pnBytesRead [O] Receives number of bytes read.
547 * pnMinNumberOfBytesNeeded [O] Receives number of bytes required for the
548 * next log entry.
550 * RETURNS
551 * Success: nonzero
552 * Failure: zero
554 BOOL WINAPI ReadEventLogA( HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset,
555 LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded )
557 FIXME("(%p,0x%08x,0x%08x,%p,0x%08x,%p,%p) stub\n", hEventLog, dwReadFlags,
558 dwRecordOffset, lpBuffer, nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
559 return FALSE;
562 /******************************************************************************
563 * ReadEventLogW [ADVAPI32.@]
565 * See ReadEventLogA.
567 BOOL WINAPI ReadEventLogW( HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset,
568 LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded )
570 FIXME("(%p,0x%08x,0x%08x,%p,0x%08x,%p,%p) stub\n", hEventLog, dwReadFlags,
571 dwRecordOffset, lpBuffer, nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
572 return FALSE;
575 /******************************************************************************
576 * RegisterEventSourceA [ADVAPI32.@]
578 * Returns a registered handle to an event log.
580 * PARAMS
581 * lpUNCServerName [I] UNC name of the source server.
582 * lpSourceName [I] Specifies the name of the event source to retrieve.
584 * RETURNS
585 * Success: Handle to the event log.
586 * Failure: NULL. Returns ERROR_INVALID_HANDLE if lpSourceName specifies the
587 * Security event log.
589 HANDLE WINAPI RegisterEventSourceA( LPCSTR lpUNCServerName, LPCSTR lpSourceName )
591 UNICODE_STRING lpUNCServerNameW;
592 UNICODE_STRING lpSourceNameW;
593 HANDLE ret;
595 FIXME("(%s,%s): stub\n", debugstr_a(lpUNCServerName), debugstr_a(lpSourceName));
597 RtlCreateUnicodeStringFromAsciiz(&lpUNCServerNameW, lpUNCServerName);
598 RtlCreateUnicodeStringFromAsciiz(&lpSourceNameW, lpSourceName);
599 ret = RegisterEventSourceW(lpUNCServerNameW.Buffer,lpSourceNameW.Buffer);
600 RtlFreeUnicodeString (&lpUNCServerNameW);
601 RtlFreeUnicodeString (&lpSourceNameW);
602 return ret;
605 /******************************************************************************
606 * RegisterEventSourceW [ADVAPI32.@]
608 * See RegisterEventSourceA.
610 HANDLE WINAPI RegisterEventSourceW( LPCWSTR lpUNCServerName, LPCWSTR lpSourceName )
612 FIXME("(%s,%s): stub\n", debugstr_w(lpUNCServerName), debugstr_w(lpSourceName));
613 return (HANDLE)0xcafe4242;
616 /******************************************************************************
617 * ReportEventA [ADVAPI32.@]
619 * Writes an entry at the end of an event log.
621 * PARAMS
622 * hEventLog [I] Handle of an event log.
623 * wType [I] See MSDN doc.
624 * wCategory [I] Event category.
625 * dwEventID [I] Event identifier.
626 * lpUserSid [I] Current user's security identifier.
627 * wNumStrings [I] Number of insert strings in lpStrings.
628 * dwDataSize [I] Size of event-specific raw data to write.
629 * lpStrings [I] Buffer containing an array of string to be merged.
630 * lpRawData [I] Buffer containing the binary data.
632 * RETURNS
633 * Success: nonzero. Entry was written to the log.
634 * Failure: zero.
636 * NOTES
637 * The ReportEvent function adds the time, the entry's length, and the
638 * offsets before storing the entry in the log. If lpUserSid != NULL, the
639 * username is also logged.
641 BOOL WINAPI ReportEventA ( HANDLE hEventLog, WORD wType, WORD wCategory, DWORD dwEventID,
642 PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCSTR *lpStrings, LPVOID lpRawData)
644 LPWSTR *wideStrArray;
645 UNICODE_STRING str;
646 int i;
647 BOOL ret;
649 FIXME("(%p,0x%04x,0x%04x,0x%08x,%p,0x%04x,0x%08x,%p,%p): stub\n", hEventLog,
650 wType, wCategory, dwEventID, lpUserSid, wNumStrings, dwDataSize, lpStrings, lpRawData);
652 if (wNumStrings == 0) return TRUE;
653 if (!lpStrings) return TRUE;
655 wideStrArray = HeapAlloc(GetProcessHeap(), 0, sizeof(LPWSTR) * wNumStrings);
656 for (i = 0; i < wNumStrings; i++)
658 RtlCreateUnicodeStringFromAsciiz(&str, lpStrings[i]);
659 wideStrArray[i] = str.Buffer;
661 ret = ReportEventW(hEventLog, wType, wCategory, dwEventID, lpUserSid,
662 wNumStrings, dwDataSize, (LPCWSTR *)wideStrArray, lpRawData);
663 for (i = 0; i < wNumStrings; i++)
665 HeapFree( GetProcessHeap(), 0, wideStrArray[i] );
667 HeapFree(GetProcessHeap(), 0, wideStrArray);
668 return ret;
671 /******************************************************************************
672 * ReportEventW [ADVAPI32.@]
674 * See ReportEventA.
676 BOOL WINAPI ReportEventW( HANDLE hEventLog, WORD wType, WORD wCategory, DWORD dwEventID,
677 PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCWSTR *lpStrings, LPVOID lpRawData )
679 int i;
681 FIXME("(%p,0x%04x,0x%04x,0x%08x,%p,0x%04x,0x%08x,%p,%p): stub\n", hEventLog,
682 wType, wCategory, dwEventID, lpUserSid, wNumStrings, dwDataSize, lpStrings, lpRawData);
684 /* partial stub */
686 if (wNumStrings == 0) return TRUE;
687 if (!lpStrings) return TRUE;
689 for (i = 0; i < wNumStrings; i++)
691 switch (wType)
693 case EVENTLOG_SUCCESS:
694 TRACE_(eventlog)("%s\n", debugstr_w(lpStrings[i]));
695 break;
696 case EVENTLOG_ERROR_TYPE:
697 ERR_(eventlog)("%s\n", debugstr_w(lpStrings[i]));
698 break;
699 case EVENTLOG_WARNING_TYPE:
700 WARN_(eventlog)("%s\n", debugstr_w(lpStrings[i]));
701 break;
702 default:
703 TRACE_(eventlog)("%s\n", debugstr_w(lpStrings[i]));
704 break;
707 return TRUE;
710 /******************************************************************************
711 * RegisterTraceGuidsW [ADVAPI32.@]
713 * Register an event trace provider and the event trace classes that it uses
714 * to generate events.
716 * PARAMS
717 * RequestAddress [I] ControlCallback function
718 * RequestContext [I] Optional provider-defined context
719 * ControlGuid [I] GUID of the registering provider
720 * GuidCount [I] Number of elements in the TraceGuidReg array
721 * TraceGuidReg [I/O] Array of TRACE_GUID_REGISTRATION structures
722 * MofImagePath [I] not supported, set to NULL
723 * MofResourceNmae [I] not supported, set to NULL
724 * RegistrationHandle [O] Provider's registration handle
726 * RETURNS
727 * Success: ERROR_SUCCESS
728 * Failure: System error code
730 * FIXME
731 * Stub.
733 ULONG WINAPI RegisterTraceGuidsW( WMIDPREQUEST RequestAddress,
734 PVOID RequestContext, LPCGUID ControlGuid, ULONG GuidCount,
735 PTRACE_GUID_REGISTRATION TraceGuidReg, LPCWSTR MofImagePath,
736 LPCWSTR MofResourceName, PTRACEHANDLE RegistrationHandle )
738 FIXME("(%p, %p, %s, %u, %p, %s, %s, %p,)\n", RequestAddress, RequestContext,
739 debugstr_guid(ControlGuid), GuidCount, TraceGuidReg, debugstr_w(MofImagePath),
740 debugstr_w(MofResourceName), RegistrationHandle);
741 return ERROR_CALL_NOT_IMPLEMENTED;
744 /******************************************************************************
745 * RegisterTraceGuidsA [ADVAPI32.@]
747 * See RegisterTraceGuidsW.
749 * FIXME
750 * Stub.
752 ULONG WINAPI RegisterTraceGuidsA( WMIDPREQUEST RequestAddress,
753 PVOID RequestContext, LPCGUID ControlGuid, ULONG GuidCount,
754 PTRACE_GUID_REGISTRATION TraceGuidReg, LPCSTR MofImagePath,
755 LPCSTR MofResourceName, PTRACEHANDLE RegistrationHandle )
757 FIXME("(%p, %p, %s, %u, %p, %s, %s, %p,)\n", RequestAddress, RequestContext,
758 debugstr_guid(ControlGuid), GuidCount, TraceGuidReg, debugstr_a(MofImagePath),
759 debugstr_a(MofResourceName), RegistrationHandle);
760 return ERROR_CALL_NOT_IMPLEMENTED;
763 /******************************************************************************
764 * StartTraceW [ADVAPI32.@]
766 * Register and start an event trace session
769 ULONG WINAPI StartTraceW( PTRACEHANDLE pSessionHandle, LPCWSTR SessionName, PEVENT_TRACE_PROPERTIES Properties )
771 FIXME("(%p, %s, %p) stub\n", pSessionHandle, debugstr_w(SessionName), Properties);
772 if (pSessionHandle) *pSessionHandle = 0xcafe4242;
773 return ERROR_SUCCESS;
776 /******************************************************************************
777 * StartTraceA [ADVAPI32.@]
779 * See StartTraceW.
782 ULONG WINAPI StartTraceA( PTRACEHANDLE pSessionHandle, LPCSTR SessionName, PEVENT_TRACE_PROPERTIES Properties )
784 FIXME("(%p, %s, %p) stub\n", pSessionHandle, debugstr_a(SessionName), Properties);
785 if (pSessionHandle) *pSessionHandle = 0xcafe4242;
786 return ERROR_SUCCESS;
789 /******************************************************************************
790 * TraceEvent [ADVAPI32.@]
792 ULONG WINAPI TraceEvent( TRACEHANDLE SessionHandle, PEVENT_TRACE_HEADER EventTrace )
794 FIXME("%s %p\n", wine_dbgstr_longlong(SessionHandle), EventTrace);
795 return ERROR_CALL_NOT_IMPLEMENTED;
798 /******************************************************************************
799 * UnregisterTraceGuids [ADVAPI32.@]
801 * See RegisterTraceGuids
803 * FIXME
804 * Stub.
806 ULONG WINAPI UnregisterTraceGuids( TRACEHANDLE RegistrationHandle )
808 FIXME("%s: stub\n", wine_dbgstr_longlong(RegistrationHandle));
809 return ERROR_CALL_NOT_IMPLEMENTED;
812 /******************************************************************************
813 * EventRegister [ADVAPI32.@]
815 ULONG WINAPI EventRegister( LPCGUID provider, PENABLECALLBACK callback, PVOID context, PREGHANDLE handle )
817 FIXME("%s, %p, %p, %p\n", debugstr_guid(provider), callback, context, handle);
818 return ERROR_CALL_NOT_IMPLEMENTED;
821 /******************************************************************************
822 * EventEnabled [ADVAPI32.@]
825 BOOLEAN WINAPI EventEnabled( REGHANDLE handle, PCEVENT_DESCRIPTOR descriptor )
827 FIXME("(%s, %p): stub\n", wine_dbgstr_longlong(handle), descriptor);
828 return FALSE;
831 /******************************************************************************
832 * QueryTraceW [ADVAPI32.@]
834 ULONG WINAPI QueryTraceW( TRACEHANDLE handle, LPCWSTR sessionname, PEVENT_TRACE_PROPERTIES properties )
836 FIXME("%s %s %p: stub\n", wine_dbgstr_longlong(handle), debugstr_w(sessionname), properties);
837 return ERROR_CALL_NOT_IMPLEMENTED;