From 84c066fa798a4d669f9fa3145a29ed9d46db47d5 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Fri, 23 Oct 2020 22:04:40 +0200 Subject: api: revise logging RegistryQueryString() may produce one or more "File not found" errors when called from RegistryQueryStringWait() - which is expected while waiting. Those errors were annoying and awkward to read in the log. Furthermore, should RegistryQueryString() fail, it already displays detailed Windows error message and the parent's logging was simplified to prevent repetitions in the log. Signed-off-by: Simon Rozman --- api/registry.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'api/registry.c') diff --git a/api/registry.c b/api/registry.c index a36b27e..f1e2372 100644 --- a/api/registry.c +++ b/api/registry.c @@ -180,7 +180,8 @@ RegistryQuery( _In_opt_z_ const WCHAR *Name, _Out_opt_ DWORD *ValueType, _Out_ void **Buf, - _Inout_ DWORD *BufLen) + _Inout_ DWORD *BufLen, + _In_ BOOL Log) { HANDLE Heap = GetProcessHeap(); for (;;) @@ -193,15 +194,15 @@ RegistryQuery( return ERROR_SUCCESS; HeapFree(Heap, 0, *Buf); if (Result != ERROR_MORE_DATA) - return LOG_ERROR(L"Querying value failed", Result); + return Log ? LOG_ERROR(L"Querying value failed", Result) : Result; } } WINTUN_STATUS -RegistryQueryString(_In_ HKEY Key, _In_opt_z_ const WCHAR *Name, _Out_ WCHAR **Value) +RegistryQueryString(_In_ HKEY Key, _In_opt_z_ const WCHAR *Name, _Out_ WCHAR **Value, _In_ BOOL Log) { DWORD ValueType, Size = 256 * sizeof(WCHAR); - DWORD Result = RegistryQuery(Key, Name, &ValueType, Value, &Size); + DWORD Result = RegistryQuery(Key, Name, &ValueType, Value, &Size, Log); if (Result != ERROR_SUCCESS) return Result; switch (ValueType) @@ -236,7 +237,7 @@ RegistryQueryStringWait(_In_ HKEY Key, _In_opt_z_ const WCHAR *Name, _In_ DWORD LOG_ERROR(L"Failed to setup notification", Result); break; } - Result = RegistryQueryString(Key, Name, Value); + Result = RegistryQueryString(Key, Name, Value, FALSE); if (Result != ERROR_FILE_NOT_FOUND && Result != ERROR_PATH_NOT_FOUND) break; LONGLONG TimeLeft = Deadline - GetTickCount64(); -- cgit v1.2.3-59-g8ed1b