diff options
-rw-r--r-- | api/adapter.c | 12 | ||||
-rw-r--r-- | api/registry.c | 11 | ||||
-rw-r--r-- | api/registry.h | 6 |
3 files changed, 17 insertions, 12 deletions
diff --git a/api/adapter.c b/api/adapter.c index d1e8786..878f6ba 100644 --- a/api/adapter.c +++ b/api/adapter.c @@ -391,10 +391,10 @@ GetNetCfgInstanceId(_In_ HDEVINFO DevInfo, _In_ SP_DEVINFO_DATA *DevInfoData, _O if (Key == INVALID_HANDLE_VALUE) return LOG_LAST_ERROR(L"Opening device registry key failed"); WCHAR *ValueStr; - DWORD Result = RegistryQueryString(Key, L"NetCfgInstanceId", &ValueStr); + DWORD Result = RegistryQueryString(Key, L"NetCfgInstanceId", &ValueStr, TRUE); if (Result != ERROR_SUCCESS) { - LOG_ERROR(L"Failed to query NetCfgInstanceId value", Result); + LOG(WINTUN_LOG_ERR, L"Failed to query NetCfgInstanceId value"); goto cleanupKey; } if (FAILED(CLSIDFromString(ValueStr, CfgInstanceID))) @@ -532,10 +532,10 @@ CreateAdapterData( /* Read the NetCfgInstanceId value and convert to GUID. */ WCHAR *ValueStr; - Result = RegistryQueryString(Key, L"NetCfgInstanceId", &ValueStr); + Result = RegistryQueryString(Key, L"NetCfgInstanceId", &ValueStr, TRUE); if (Result != ERROR_SUCCESS) { - LOG_ERROR(L"Failed to query NetCfgInstanceId value", Result); + LOG(WINTUN_LOG_ERR, L"Failed to query NetCfgInstanceId value"); goto cleanupAdapter; } if (FAILED(CLSIDFromString(ValueStr, &(*Adapter)->CfgInstanceID))) @@ -928,10 +928,10 @@ GetTcpipInterfaceRegPath(_In_ const WINTUN_ADAPTER *Adapter, _Out_cap_c_(MAX_REG if (Result != ERROR_SUCCESS) return LOG_ERROR(L"Failed to open registry key", Result); WCHAR *Paths; - Result = RegistryQueryString(TcpipAdapterRegKey, L"IpConfig", &Paths); + Result = RegistryQueryString(TcpipAdapterRegKey, L"IpConfig", &Paths, TRUE); if (Result != ERROR_SUCCESS) { - LOG_ERROR(L"Failed to query IpConfig value", Result); + LOG(WINTUN_LOG_ERR, L"Failed to query IpConfig value"); goto cleanupTcpipAdapterRegKey; } if (!Paths[0]) 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(); diff --git a/api/registry.h b/api/registry.h index 16322d3..783280a 100644 --- a/api/registry.h +++ b/api/registry.h @@ -81,11 +81,15 @@ RegistryGetMultiString(_Inout_ WCHAR **Buf, _In_ DWORD Len, _In_ DWORD ValueType * string from the multi-string is returned. The string must be released with * HeapFree(GetProcessHeap(), 0, Value) after use. * + * @Log Set to TRUE to log all failures; FALSE to skip logging the innermost errors. Skipping innermost + * errors reduces log clutter when we are using RegistryQueryString() from + * RegistryQueryStringWait() and some errors are expected to occur. + * * @return ERROR_SUCCESS on success; ERROR_INVALID_DATATYPE when the registry value is not a string; Win32 error code * otherwise. */ 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); /** * Reads string value from registry key. It waits for the registry value to become available. |