diff options
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) |