diff options
author | Simon Rozman <simon@rozman.si> | 2020-10-13 19:40:52 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-10-30 16:50:59 +0100 |
commit | f316c13b3e9548d8694bad9a1d634c15f31fa52d (patch) | |
tree | 1e9967655a2094425ce3f4f2d078025dfdf0c736 /api/logger.h | |
parent | api: split api.h (diff) | |
download | wintun-f316c13b3e9548d8694bad9a1d634c15f31fa52d.tar.xz wintun-f316c13b3e9548d8694bad9a1d634c15f31fa52d.zip |
api: introduce logging
And other unifications with installer before merging.
Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'api/logger.h')
-rw-r--r-- | api/logger.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/api/logger.h b/api/logger.h new file mode 100644 index 0000000..15b6bbb --- /dev/null +++ b/api/logger.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0 + * + * Copyright (C) 2018-2020 WireGuard LLC. All Rights Reserved. + */ + +#pragma once + +#include <Windows.h> + +typedef enum _WINTUN_LOGGER_LEVEL +{ + WINTUN_LOG_INFO = 0, + WINTUN_LOG_WARN, + WINTUN_LOG_ERR +} WINTUN_LOGGER_LEVEL; + +typedef VOID(CALLBACK *WINTUN_LOGGER_FUNC)(_In_ WINTUN_LOGGER_LEVEL Level, _In_z_ const WCHAR *Message); + +extern WINTUN_LOGGER_FUNC Logger; + +VOID WINAPI +WintunSetLogger(_In_ WINTUN_LOGGER_FUNC NewLogger); + +_Post_equals_last_error_ DWORD +LoggerError(_In_z_ const WCHAR *Prefix, _In_ DWORD Error); + +inline _Post_equals_last_error_ DWORD +LoggerLastError(_In_z_ const WCHAR *Prefix) +{ + DWORD Error = GetLastError(); + LoggerError(Prefix, Error); + SetLastError(Error); + return Error; +} + +#define WINTUN_LOGGER(lvl, msg) Logger((lvl), _L(__FUNCTION__) L": " msg) +#define WINTUN_LOGGER_ERROR(msg, err) LoggerError(_L(__FUNCTION__) L": " msg, (err)) +#define WINTUN_LOGGER_LAST_ERROR(msg) LoggerLastError(_L(__FUNCTION__) L": " msg) |