aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/adapter.c40
-rw-r--r--api/logger.c221
-rw-r--r--api/logger.h24
-rw-r--r--api/registry.c74
4 files changed, 214 insertions, 145 deletions
diff --git a/api/adapter.c b/api/adapter.c
index 2f397ac..7695463 100644
--- a/api/adapter.c
+++ b/api/adapter.c
@@ -444,17 +444,11 @@ static _Return_type_success_(return != FALSE) BOOL GetNetCfgInstanceIdFromHKEY(_
{
WCHAR *ValueStr = RegistryQueryString(Key, L"NetCfgInstanceId", TRUE);
if (!ValueStr)
- {
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- return RET_ERROR(TRUE, LOG(WINTUN_LOG_ERR, L"Failed to get %.*s\\NetCfgInstanceId", MAX_REG_PATH, RegPath));
- }
+ return RET_ERROR(TRUE, LOG(WINTUN_LOG_ERR, L"Failed to get %r\\NetCfgInstanceId", Key));
DWORD LastError = ERROR_SUCCESS;
if (FAILED(CLSIDFromString(ValueStr, CfgInstanceID)))
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG(WINTUN_LOG_ERR, L"%.*s\\NetCfgInstanceId is not a GUID: %s", MAX_REG_PATH, RegPath, ValueStr);
+ LOG(WINTUN_LOG_ERR, L"%r\\NetCfgInstanceId is not a GUID: %s", Key, ValueStr);
LastError = ERROR_INVALID_DATA;
}
Free(ValueStr);
@@ -593,17 +587,13 @@ static _Return_type_success_(return != NULL) WINTUN_ADAPTER
if (!RegistryQueryDWORD(Key, L"NetLuidIndex", &Adapter->LuidIndex, TRUE))
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %.*s\\NetLuidIndex", MAX_REG_PATH, RegPath);
+ LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %r\\NetLuidIndex", Key);
goto cleanupAdapter;
}
if (!RegistryQueryDWORD(Key, L"*IfType", &Adapter->IfType, TRUE))
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %.*s\\*IfType", MAX_REG_PATH, RegPath);
+ LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %r\\*IfType", Key);
goto cleanupAdapter;
}
@@ -781,11 +771,7 @@ static _Return_type_success_(return != FALSE) BOOL
LastError = ConvertInterfaceLuidToGuid(&Luid, Guid);
if (LastError != NO_ERROR)
{
- SetLastError(LOG_ERROR(
- LastError,
- L"Failed to convert interface %s LUID (%I64u) to GUID",
- Name,
- Luid.Value));
+ SetLastError(LOG_ERROR(LastError, L"Failed to convert interface %s LUID (%I64u) to GUID", Name, Luid.Value));
return FALSE;
}
return TRUE;
@@ -1514,9 +1500,7 @@ static _Return_type_success_(return != NULL) WINTUN_ADAPTER *CreateAdapter(
StringFromGUID2(RequestedGUID, RequestedGUIDStr, _countof(RequestedGUIDStr)) * sizeof(WCHAR));
if (LastError != ERROR_SUCCESS)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(NetDevRegKey, RegPath);
- LOG_ERROR(LastError, L"Failed to set %.*s\\NetSetupAnticipatedInstanceId", MAX_REG_PATH, RegPath);
+ LOG_ERROR(LastError, L"Failed to set %r\\NetSetupAnticipatedInstanceId", NetDevRegKey);
goto cleanupNetDevRegKey;
}
}
@@ -1560,25 +1544,19 @@ static _Return_type_success_(return != NULL) WINTUN_ADAPTER *CreateAdapter(
WCHAR *DummyStr = RegistryQueryStringWait(NetDevRegKey, L"NetCfgInstanceId", WAIT_FOR_REGISTRY_TIMEOUT);
if (!DummyStr)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(NetDevRegKey, RegPath);
- LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %.*s\\NetCfgInstanceId", MAX_REG_PATH, RegPath);
+ LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %r\\NetCfgInstanceId", NetDevRegKey);
goto cleanupNetDevRegKey;
}
Free(DummyStr);
DWORD DummyDWORD;
if (!RegistryQueryDWORDWait(NetDevRegKey, L"NetLuidIndex", WAIT_FOR_REGISTRY_TIMEOUT, &DummyDWORD))
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(NetDevRegKey, RegPath);
- LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %.*s\\NetLuidIndex", MAX_REG_PATH, RegPath);
+ LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %r\\NetLuidIndex", NetDevRegKey);
goto cleanupNetDevRegKey;
}
if (!RegistryQueryDWORDWait(NetDevRegKey, L"*IfType", WAIT_FOR_REGISTRY_TIMEOUT, &DummyDWORD))
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(NetDevRegKey, RegPath);
- LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %.*s\\*IfType", MAX_REG_PATH, RegPath);
+ LastError = LOG(WINTUN_LOG_ERR, L"Failed to get %r\\*IfType", NetDevRegKey);
goto cleanupNetDevRegKey;
}
diff --git a/api/logger.c b/api/logger.c
index 7907437..0a8461b 100644
--- a/api/logger.c
+++ b/api/logger.c
@@ -9,6 +9,9 @@
#include <winternl.h>
#include <wchar.h>
+#define _PRECISION_MAX ((size_t)-1)
+#define _PRECISION_RUNTIME ((size_t)-2)
+
static BOOL CALLBACK
NopLogger(_In_ WINTUN_LOGGER_LEVEL Level, _In_z_ const WCHAR *LogLine)
{
@@ -51,16 +54,187 @@ LoggerLog(_In_ WINTUN_LOGGER_LEVEL Level, _In_z_ const WCHAR *Function, _In_z_ c
return LastError;
}
+VOID
+LoggerGetRegistryKeyPath(_In_ HKEY Key, _Out_cap_c_(MAX_REG_PATH) WCHAR *Path)
+{
+ DWORD LastError = GetLastError();
+ if (Key == NULL)
+ {
+ wcscpy_s(Path, MAX_REG_PATH, L"<null>");
+ goto out;
+ }
+ if (_snwprintf_s(Path, MAX_REG_PATH, _TRUNCATE, L"0x%p", Key) == -1)
+ StrTruncate(Path, MAX_REG_PATH);
+ union
+ {
+ KEY_NAME_INFORMATION KeyNameInfo;
+ WCHAR Data[offsetof(KEY_NAME_INFORMATION, Name) + MAX_REG_PATH];
+ } Buffer;
+ DWORD Size;
+ if (!NT_SUCCESS(NtQueryKey(Key, 3, &Buffer, sizeof(Buffer), &Size)) ||
+ Size < offsetof(KEY_NAME_INFORMATION, Name) || Buffer.KeyNameInfo.NameLength >= MAX_REG_PATH * sizeof(WCHAR))
+ goto out;
+ Buffer.KeyNameInfo.NameLength /= sizeof(WCHAR);
+ wmemcpy_s(Path, MAX_REG_PATH, Buffer.KeyNameInfo.Name, Buffer.KeyNameInfo.NameLength);
+ Path[Buffer.KeyNameInfo.NameLength] = L'\0';
+out:
+ SetLastError(LastError);
+}
+
+_Success_(return >= 0)
+_Check_return_opt_ static ptrdiff_t
+PushTerminator(
+ _Out_writes_(BufferCount) _Always_(_Post_z_) wchar_t *Buffer,
+ _In_ size_t BufferCount,
+ _In_ size_t MaxCount,
+ _In_ size_t Count)
+{
+ if (Count < BufferCount)
+ {
+ Buffer[Count] = L'\0';
+ return Count;
+ }
+ if (MaxCount == _TRUNCATE)
+ {
+ Buffer[BufferCount - 1] = L'\0';
+ return -1;
+ }
+ _invalid_parameter_noinfo();
+ _set_errno(ERANGE);
+ Buffer[0] = L'\0';
+ return -1;
+}
+
+static ptrdiff_t
+PushChar(
+ _Out_writes_(BufferCount) wchar_t *Buffer,
+ _In_ size_t BufferCount,
+ _In_ size_t MaxCount,
+ _In_ size_t Count,
+ _In_ wchar_t Char)
+{
+ if (Count < BufferCount)
+ {
+ if (Count < MaxCount)
+ {
+ Buffer[Count] = Char;
+ return 1;
+ }
+ Buffer[MaxCount] = L'\0';
+ return -1;
+ }
+ if (MaxCount == _TRUNCATE)
+ {
+ Buffer[BufferCount - 1] = L'\0';
+ return -1;
+ }
+ _invalid_parameter_noinfo();
+ _set_errno(ERANGE);
+ Buffer[0] = L'\0';
+ return -1;
+}
+
+_Success_(return >= 0)
+_Check_return_opt_ static ptrdiff_t
+LoggerSPrintF(
+ _Out_writes_opt_(BufferCount) _Always_(_Post_z_) wchar_t *Buffer,
+ _In_ size_t BufferCount,
+ _In_ size_t MaxCount,
+ _In_z_ wchar_t const *Format,
+ va_list Args)
+{
+ if (!Buffer || !BufferCount || !Format)
+ {
+ _set_errno(EINVAL);
+ return -1;
+ }
+ for (size_t Count = 0;;)
+ {
+ ptrdiff_t Result;
+ if (*Format == L'\0')
+ return PushTerminator(Buffer, BufferCount, MaxCount, Count);
+ if (*Format != L'%')
+ {
+ Result = PushChar(Buffer, BufferCount, MaxCount, Count, *(Format++));
+ if (Result < 0)
+ return Result;
+ Count += Result;
+ continue;
+ }
+ const wchar_t *Flag = Format + 1, *FlagEnd = Flag + (wcschr(L"-+0 #", *Flag) ? 1 : 0);
+ const wchar_t *Width = FlagEnd, *WidthEnd = Width;
+#pragma warning(suppress : 6031)
+ wcstoul(Width, (wchar_t **)&WidthEnd, 10);
+ const wchar_t *Precision = WidthEnd, *PrecisionEnd = Precision;
+ size_t PrecisionVal = _PRECISION_MAX;
+ if (Precision[0] == L'.')
+ {
+ if (Precision[1] == L'*')
+ {
+ PrecisionVal = _PRECISION_RUNTIME;
+ PrecisionEnd = Precision + 2;
+ }
+ else
+ PrecisionVal = wcstoul(Precision + 1, (wchar_t **)&PrecisionEnd, 10);
+ }
+ size_t FieldPrecision;
+ const wchar_t *Size = PrecisionEnd, *SizeEnd = Size;
+ if (Size[0] == L'I' && (Size[1] == L'3' && Size[2] == L'2' || Size[1] == L'6' && Size[2] == L'4'))
+ SizeEnd = Size + 3;
+ else if (Size[0] == L'h' && Size[1] == L'h' || Size[0] == L'l' && Size[1] == L'l')
+ SizeEnd = Size + 2;
+ else if (
+ Size[0] == L'h' || Size[0] == L'I' || Size[0] == L'j' || Size[0] == L'l' || Size[0] == L'L' ||
+ Size[0] == L't' || Size[0] == L'w' || Size[0] == L'z')
+ SizeEnd = Size + 1;
+ const wchar_t *Type = SizeEnd, *TypeEnd = Type + 1;
+ if (*Type == L'r')
+ {
+ FieldPrecision = PrecisionVal == _PRECISION_RUNTIME ? va_arg(Args, unsigned long) : MAX_REG_PATH;
+ WCHAR RegPath[MAX_REG_PATH];
+ LoggerGetRegistryKeyPath(va_arg(Args, HKEY), RegPath);
+ for (size_t i = 0; i < FieldPrecision && RegPath[i];)
+ {
+ Result = PushChar(Buffer, BufferCount, MaxCount, Count, RegPath[i++]);
+ if (Result < 0)
+ return Result;
+ Count += Result;
+ }
+ Format = TypeEnd;
+ continue;
+ }
+ wchar_t FormatSub[100];
+ const size_t FormatSubCount = TypeEnd - Format;
+ if (FormatSubCount >= _countof(FormatSub))
+ {
+ _invalid_parameter(Format, _L(__FUNCTION__), _L(__FILE__), __LINE__, 0);
+ _set_errno(EINVAL);
+ Buffer[0] = L'\0';
+ return -1;
+ }
+ wmemcpy(FormatSub, Format, FormatSubCount);
+ FormatSub[FormatSubCount] = 0;
+ Result = _vsnwprintf_s(
+ Buffer + Count, BufferCount - Count, MaxCount != _TRUNCATE ? MaxCount - Count : _TRUNCATE, FormatSub, Args);
+ if (Result < 0)
+ return Result;
+ Count += Result;
+ Format = TypeEnd;
+#pragma warning(push)
+#pragma warning(disable : 6269)
+ if (PrecisionVal == _PRECISION_RUNTIME)
+ va_arg(Args, unsigned long);
+ va_arg(Args, int);
+#pragma warning(pop)
+ }
+}
+
_Post_equals_last_error_ DWORD
-LoggerLogV(
- _In_ WINTUN_LOGGER_LEVEL Level,
- _In_z_ const WCHAR *Function,
- _In_z_ _Printf_format_string_ const WCHAR *Format,
- _In_ va_list Args)
+LoggerLogV(_In_ WINTUN_LOGGER_LEVEL Level, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *Format, _In_ va_list Args)
{
DWORD LastError = GetLastError();
WCHAR LogLine[0x400];
- if (_vsnwprintf_s(LogLine, _countof(LogLine), _TRUNCATE, Format, Args) == -1)
+ if (LoggerSPrintF(LogLine, _countof(LogLine), _TRUNCATE, Format, Args) == -1)
StrTruncate(LogLine, _countof(LogLine));
if (Function)
LoggerLog(Level, Function, LogLine);
@@ -99,41 +273,10 @@ LoggerError(_In_ DWORD Error, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *
}
_Post_equals_last_error_ DWORD
-LoggerErrorV(
- _In_ DWORD Error,
- _In_z_ const WCHAR *Function,
- _In_z_ _Printf_format_string_ const WCHAR *Format,
- _In_ va_list Args)
+LoggerErrorV(_In_ DWORD Error, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *Format, _In_ va_list Args)
{
WCHAR Prefix[0x400];
- if (_vsnwprintf_s(Prefix, _countof(Prefix), _TRUNCATE, Format, Args) == -1)
+ if (LoggerSPrintF(Prefix, _countof(Prefix), _TRUNCATE, Format, Args) == -1)
StrTruncate(Prefix, _countof(Prefix));
return LoggerError(Error, Function, Prefix);
}
-
-VOID
-LoggerGetRegistryKeyPath(_In_ HKEY Key, _Out_cap_c_(MAX_REG_PATH) WCHAR *Path)
-{
- DWORD LastError = GetLastError();
- if (Key == NULL)
- {
- wcscpy_s(Path, MAX_REG_PATH, L"<null>");
- goto out;
- }
- if (_snwprintf_s(Path, MAX_REG_PATH, _TRUNCATE, L"0x%p", Key) == -1)
- StrTruncate(Path, MAX_REG_PATH);
- union
- {
- KEY_NAME_INFORMATION KeyNameInfo;
- WCHAR Data[offsetof(KEY_NAME_INFORMATION, Name) + MAX_REG_PATH];
- } Buffer;
- DWORD Size;
- if (!NT_SUCCESS(NtQueryKey(Key, 3, &Buffer, sizeof(Buffer), &Size)) ||
- Size < offsetof(KEY_NAME_INFORMATION, Name) || Buffer.KeyNameInfo.NameLength >= MAX_REG_PATH * sizeof(WCHAR))
- goto out;
- Buffer.KeyNameInfo.NameLength /= sizeof(WCHAR);
- wmemcpy_s(Path, MAX_REG_PATH, Buffer.KeyNameInfo.Name, Buffer.KeyNameInfo.NameLength);
- Path[Buffer.KeyNameInfo.NameLength] = L'\0';
-out:
- SetLastError(LastError);
-}
diff --git a/api/logger.h b/api/logger.h
index 3ffda6e..6568448 100644
--- a/api/logger.h
+++ b/api/logger.h
@@ -24,18 +24,10 @@ _Post_equals_last_error_ DWORD
LoggerLog(_In_ WINTUN_LOGGER_LEVEL Level, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *LogLine);
_Post_equals_last_error_ DWORD
-LoggerLogV(
- _In_ WINTUN_LOGGER_LEVEL Level,
- _In_z_ const WCHAR *Function,
- _In_z_ _Printf_format_string_ const WCHAR *Format,
- _In_ va_list Args);
+LoggerLogV(_In_ WINTUN_LOGGER_LEVEL Level, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *Format, _In_ va_list Args);
static inline _Post_equals_last_error_ DWORD
-LoggerLogFmt(
- _In_ WINTUN_LOGGER_LEVEL Level,
- _In_z_ const WCHAR *Function,
- _In_z_ _Printf_format_string_ const WCHAR *Format,
- ...)
+LoggerLogFmt(_In_ WINTUN_LOGGER_LEVEL Level, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *Format, ...)
{
va_list Args;
va_start(Args, Format);
@@ -48,14 +40,10 @@ _Post_equals_last_error_ DWORD
LoggerError(_In_ DWORD Error, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *Prefix);
_Post_equals_last_error_ DWORD
-LoggerErrorV(
- _In_ DWORD Error,
- _In_z_ const WCHAR *Function,
- _In_z_ _Printf_format_string_ const WCHAR *Format,
- _In_ va_list Args);
+LoggerErrorV(_In_ DWORD Error, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *Format, _In_ va_list Args);
static inline _Post_equals_last_error_ DWORD
-LoggerErrorFmt(_In_ DWORD Error, _In_z_ const WCHAR *Function, _In_z_ _Printf_format_string_ const WCHAR *Format, ...)
+LoggerErrorFmt(_In_ DWORD Error, _In_z_ const WCHAR *Function, _In_z_ const WCHAR *Format, ...)
{
va_list Args;
va_start(Args, Format);
@@ -65,7 +53,7 @@ LoggerErrorFmt(_In_ DWORD Error, _In_z_ const WCHAR *Function, _In_z_ _Printf_fo
}
static inline _Post_equals_last_error_ DWORD
-LoggerLastErrorV(_In_z_ const WCHAR *Function, _In_z_ _Printf_format_string_ const WCHAR *Format, _In_ va_list Args)
+LoggerLastErrorV(_In_z_ const WCHAR *Function, _In_z_ const WCHAR *Format, _In_ va_list Args)
{
DWORD LastError = GetLastError();
LoggerErrorV(LastError, Function, Format, Args);
@@ -74,7 +62,7 @@ LoggerLastErrorV(_In_z_ const WCHAR *Function, _In_z_ _Printf_format_string_ con
}
static inline _Post_equals_last_error_ DWORD
-LoggerLastErrorFmt(_In_z_ const WCHAR *Function, _In_z_ _Printf_format_string_ const WCHAR *Format, ...)
+LoggerLastErrorFmt(_In_z_ const WCHAR *Function, _In_z_ const WCHAR *Format, ...)
{
va_list Args;
va_start(Args, Format);
diff --git a/api/registry.c b/api/registry.c
index 4b28642..c5e5ca9 100644
--- a/api/registry.c
+++ b/api/registry.c
@@ -28,9 +28,7 @@ static _Return_type_success_(return != NULL) HKEY
LastError = RegNotifyChangeKeyValue(Key, FALSE, REG_NOTIFY_CHANGE_NAME, Event, TRUE);
if (LastError != ERROR_SUCCESS)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG_ERROR(LastError, L"Failed to setup registry key %.*s notification", MAX_REG_PATH, RegPath);
+ LOG_ERROR(LastError, L"Failed to setup registry key %r notification", Key);
break;
}
@@ -58,9 +56,7 @@ static _Return_type_success_(return != NULL) HKEY
}
if (LastError != ERROR_FILE_NOT_FOUND && LastError != ERROR_PATH_NOT_FOUND)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG_ERROR(LastError, L"Failed to open registry key %.*s\\%s", MAX_REG_PATH, RegPath, Path);
+ LOG_ERROR(LastError, L"Failed to open registry key %r\\%s", Key, Path);
break;
}
@@ -70,14 +66,7 @@ static _Return_type_success_(return != NULL) HKEY
DWORD Result = WaitForSingleObject(Event, (DWORD)TimeLeft);
if (Result != WAIT_OBJECT_0)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG(WINTUN_LOG_ERR,
- L"Timeout waiting for registry key %.*s\\%s (status: 0x%x)",
- MAX_REG_PATH,
- RegPath,
- Path,
- Result);
+ LOG(WINTUN_LOG_ERR, L"Timeout waiting for registry key %r\\%s (status: 0x%x)", Key, Path, Result);
break;
}
}
@@ -216,11 +205,7 @@ static _Return_type_success_(return != NULL) void *RegistryQuery(
if (LastError != ERROR_MORE_DATA)
{
if (Log)
- {
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG_ERROR(LastError, L"Querying registry value %.*s\\%s failed", MAX_REG_PATH, RegPath, Name);
- }
+ LOG_ERROR(LastError, L"Querying registry value %r\\%s failed", Key, Name);
SetLastError(LastError);
return NULL;
}
@@ -243,18 +228,10 @@ _Return_type_success_(
return Value;
LastError = GetLastError();
break;
- default: {
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG(WINTUN_LOG_ERR,
- L"Registry value %.*s\\%s is not a string (type: %u)",
- MAX_REG_PATH,
- RegPath,
- Name,
- ValueType);
+ default:
+ LOG(WINTUN_LOG_ERR, L"Registry value %r\\%s is not a string (type: %u)", Key, Name, ValueType);
LastError = ERROR_INVALID_DATATYPE;
}
- }
Free(Value);
SetLastError(LastError);
return NULL;
@@ -276,9 +253,7 @@ _Return_type_success_(
LastError = RegNotifyChangeKeyValue(Key, FALSE, REG_NOTIFY_CHANGE_LAST_SET, Event, TRUE);
if (LastError != ERROR_SUCCESS)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG_ERROR(LastError, L"Failed to setup registry key %.*s notification", MAX_REG_PATH, RegPath);
+ LOG_ERROR(LastError, L"Failed to setup registry key %r notification", Key);
break;
}
WCHAR *Value = RegistryQueryString(Key, Name, FALSE);
@@ -296,14 +271,7 @@ _Return_type_success_(
DWORD Result = WaitForSingleObject(Event, (DWORD)TimeLeft);
if (Result != WAIT_OBJECT_0)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG(WINTUN_LOG_ERR,
- L"Timeout waiting for registry value %.*s\\%s (status: 0x%x)",
- MAX_REG_PATH,
- RegPath,
- Name,
- Result);
+ LOG(WINTUN_LOG_ERR, L"Timeout waiting for registry value %r\\%s (status: 0x%x)", Key, Name, Result);
break;
}
}
@@ -320,27 +288,19 @@ _Return_type_success_(return != FALSE) BOOL
if (LastError != ERROR_SUCCESS)
{
if (Log)
- {
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG_ERROR(LastError, L"Querying registry value %.*s\\%s failed", MAX_REG_PATH, RegPath, Name);
- }
+ LOG_ERROR(LastError, L"Querying registry value %r\\%s failed", Key, Name);
SetLastError(LastError);
return FALSE;
}
if (ValueType != REG_DWORD)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG(WINTUN_LOG_ERR, L"Value %.*s\\%s is not a DWORD (type: %u)", MAX_REG_PATH, RegPath, Name, ValueType);
+ LOG(WINTUN_LOG_ERR, L"Value %r\\%s is not a DWORD (type: %u)", Key, Name, ValueType);
SetLastError(ERROR_INVALID_DATATYPE);
return FALSE;
}
if (Size != sizeof(DWORD))
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG(WINTUN_LOG_ERR, L"Value %.*s\\%s size is not 4 bytes (size: %u)", MAX_REG_PATH, RegPath, Name, Size);
+ LOG(WINTUN_LOG_ERR, L"Value %r\\%s size is not 4 bytes (size: %u)", Key, Name, Size);
SetLastError(ERROR_INVALID_DATA);
return FALSE;
}
@@ -363,9 +323,7 @@ _Return_type_success_(return != FALSE) BOOL
LastError = RegNotifyChangeKeyValue(Key, FALSE, REG_NOTIFY_CHANGE_LAST_SET, Event, TRUE);
if (LastError != ERROR_SUCCESS)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG_ERROR(LastError, L"Failed to setup registry key %.*s notification", MAX_REG_PATH, RegPath);
+ LOG_ERROR(LastError, L"Failed to setup registry key %r notification", Key);
break;
}
if (RegistryQueryDWORD(Key, Name, Value, FALSE))
@@ -382,9 +340,11 @@ _Return_type_success_(return != FALSE) BOOL
DWORD Result = WaitForSingleObject(Event, (DWORD)TimeLeft);
if (Result != WAIT_OBJECT_0)
{
- WCHAR RegPath[MAX_REG_PATH];
- LoggerGetRegistryKeyPath(Key, RegPath);
- LOG(WINTUN_LOG_ERR, L"Timeout waiting registry value %.*s\\%s (status: 0x%x)", MAX_REG_PATH, RegPath, Name, Result);
+ LOG(WINTUN_LOG_ERR,
+ L"Timeout waiting registry value %r\\%s (status: 0x%x)",
+ Key,
+ Name,
+ Result);
break;
}
}