mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-03 09:46:54 +02:00
63 lines
1.6 KiB
C
63 lines
1.6 KiB
C
|
|
#pragma once
|
||
|
|
|
||
|
|
#include "ProjectTelemetry.h"
|
||
|
|
|
||
|
|
#define TraceLoggingWriteWrapper(provider, eventName, ...) \
|
||
|
|
if (IsDataDiagnosticsEnabled()) \
|
||
|
|
{ \
|
||
|
|
TraceLoggingWrite(provider, eventName, __VA_ARGS__); \
|
||
|
|
}
|
||
|
|
|
||
|
|
namespace telemetry
|
||
|
|
{
|
||
|
|
|
||
|
|
constexpr inline const wchar_t* DataDiagnosticsRegKey = L"Software\\Classes\\PowerToys";
|
||
|
|
constexpr inline const wchar_t* DataDiagnosticsRegValueName = L"AllowDataDiagnostics";
|
||
|
|
|
||
|
|
class TraceBase
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
static void RegisterProvider()
|
||
|
|
{
|
||
|
|
TraceLoggingRegister(g_hProvider);
|
||
|
|
}
|
||
|
|
|
||
|
|
static void UnregisterProvider()
|
||
|
|
{
|
||
|
|
TraceLoggingUnregister(g_hProvider);
|
||
|
|
}
|
||
|
|
|
||
|
|
static bool IsDataDiagnosticsEnabled()
|
||
|
|
{
|
||
|
|
HKEY key{};
|
||
|
|
if (RegOpenKeyExW(HKEY_CURRENT_USER,
|
||
|
|
DataDiagnosticsRegKey,
|
||
|
|
0,
|
||
|
|
KEY_READ,
|
||
|
|
&key) != ERROR_SUCCESS)
|
||
|
|
{
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
DWORD isDataDiagnosticsEnabled = 0;
|
||
|
|
DWORD size = sizeof(isDataDiagnosticsEnabled);
|
||
|
|
|
||
|
|
if (RegGetValueW(
|
||
|
|
HKEY_CURRENT_USER,
|
||
|
|
DataDiagnosticsRegKey,
|
||
|
|
DataDiagnosticsRegValueName,
|
||
|
|
RRF_RT_REG_DWORD,
|
||
|
|
nullptr,
|
||
|
|
&isDataDiagnosticsEnabled,
|
||
|
|
&size) != ERROR_SUCCESS)
|
||
|
|
{
|
||
|
|
RegCloseKey(key);
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
RegCloseKey(key);
|
||
|
|
|
||
|
|
return isDataDiagnosticsEnabled;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
} // namespace telemetry
|