From 2493f3790e0e7c6f1361dd3b115a2bd6f19c267b Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Wed, 9 Feb 2022 12:04:48 +0100 Subject: [PATCH] Add event_log Signed-off-by: Simon Rozman --- include/WinStd/Win.h | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/include/WinStd/Win.h b/include/WinStd/Win.h index 6ca3fb31..84cc6672 100644 --- a/include/WinStd/Win.h +++ b/include/WinStd/Win.h @@ -2255,5 +2255,55 @@ namespace winstd } }; + /// + /// Event log handle wrapper + /// + class event_log : public handle + { + WINSTD_HANDLE_IMPL(event_log, NULL) + + public: + /// + /// Closes an event log handle. + /// + /// \sa [DeregisterEventSource function](https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-deregistereventsource) + /// + virtual ~event_log() + { + if (m_h != invalid) + free_internal(); + } + + /// + /// Retrieves a registered handle to the specified event log. + /// + /// \sa [RegisterEventSource function](https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-registereventsourcew) + /// + /// \return + /// - \c true when succeeds; + /// - \c false when fails. Use `GetLastError()` for failure reason. + /// + bool open(_In_z_ LPCTSTR lpUNCServerName, _In_z_ LPCTSTR lpSourceName) noexcept + { + handle_type h = RegisterEventSource(lpUNCServerName, lpSourceName); + if (h != invalid) { + attach(h); + return true; + } else + return false; + } + + protected: + /// + /// Closes an event log handle. + /// + /// \sa [DeregisterEventSource function](https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-deregistereventsource) + /// + void free_internal() noexcept override + { + DeregisterEventSource(m_h); + } + }; + /// @} }