27#include "fxsupportpch.hpp"
28#include "DriverFrameworks-UserMode-UmEvents.h"
31#include <TraceLoggingProvider.h>
32#include <telemetry\MicrosoftTelemetry.h>
37#if defined(EVENT_TRACING)
38#include "FxTelemetryUm.tmh"
45 (0x8ad60765, 0xa021, 0x4494, 0x85, 0x94, 0x93, 0x46, 0x97, 0x0c, 0xf5, 0x0f),
46 TraceLoggingOptionMicrosoftTelemetry());
80 EventRegisterMicrosoft_Windows_DriverFrameworks_UserMode();
82 TraceLoggingRegister(g_TelemetryProvider);
90 EventUnregisterMicrosoft_Windows_DriverFrameworks_UserMode();
92 TraceLoggingUnregister(g_TelemetryProvider);
111 &
Globals->TelemetryContext->DoOnceFlagsBitmap,
137 IWudfDeviceStack* devStack =
NULL;
146 devStack =
DriverGlobals->Driver->GetDriverObject()->WudfDevStack;
147 if (devStack !=
NULL) {
148 devStack->GetPdoProperties(&hardwareIds,
155 devStack =
Fdo->GetDeviceStack();
156 devStack->GetPdoProperties(&hardwareIds,
161 Fdo->RetrieveDeviceInfoRegistrySettings(&groupId, &devRegInfo);
179 if (groupId !=
NULL) {
200 devInfo =
Fdo->GetDeviceTelemetryInfoFlags();
201 Fdo->GetDeviceStackIoType(&readWritePreference, &ioControlPreference);
214 DriverInfo->bitmap.IsDirectHardwareAccessAllowed =
Fdo->IsDirectHardwareAccessAllowed();
215 DriverInfo->bitmap.IsUsingUserModemappingAccessMode =
Fdo->AreRegistersMappedToUsermode();
216 DriverInfo->bitmap.IsKernelModeClientAllowed = RegInfo->IsKernelModeClientAllowed;
217 DriverInfo->bitmap.IsNullFileObjectAllowed = RegInfo->IsNullFileObjectAllowed;
218 DriverInfo->bitmap.IsPoolingDisabled = RegInfo->IsHostProcessSharingDisabled;
219 DriverInfo->bitmap.IsMethodNeitherActionCopy = RegInfo->IsMethodNeitherActionCopy;
271 FxDriverGlobals->Driver->GetRegistryPathUnicodeString(),
276 "Unable to open driver's service key, %!STATUS!",
status);
283 status = FxRegKey::_QueryValue(FxDriverGlobals,
307 "Failed to allocate memory for image path string, %!STATUS!",
315 status = FxRegKey::_QueryValue(FxDriverGlobals,
324 "Failed to get Image name from service key, %!STATUS!",
347 "ERROR: string not terminated with NULL, %!status!\n",
360 if (imageName.
Length == 0x0) {
363 "ERROR: GetNameFromPath could not find a name, %!status!\n",
377 "ERROR: size computation failed, %!status!\n",
status);
389 "ERROR: ExAllocatePoolWithTag failed, %!status!\n",
status);
401 "ERROR: failed to copy string buffer, HRESULT 0x%x, %!status!\n",
BOOLEAN IsSxWakeEnabled(VOID)
BOOLEAN HasMultipleInterrupts(VOID)
BOOLEAN IsS0IdleSystemManaged(VOID)
BOOLEAN IsPowerPolicyOwner(VOID)
BOOLEAN IsS0IdleUsbSSEnabled(VOID)
BOOLEAN IsS0IdleWakeFromS0Enabled(VOID)
static __inline VOID MxFreePool(__in PVOID Ptr)
static __inline PVOID MxAllocatePoolWithTag(__in POOL_TYPE PoolType, __in SIZE_T NumberOfBytes, __in ULONG Tag)
CLIPBOARD_GLOBALS Globals
#define STATUS_OBJECT_TYPE_MISMATCH
#define NT_SUCCESS(StatCode)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
struct _FX_TELEMETRY_CONTEXT * PFX_TELEMETRY_CONTEXT
@ DriverObjectUmFlagsLoggingEnabled
void FxPoolFree(__in_xcount(ptr is at an offset from AllocationStart) PVOID ptr)
BOOLEAN __inline IsDeviceInfoFlagSet(_In_ USHORT DeviceInfo, _In_ FxDeviceInfoFlags Flag)
VOID GetNameFromPath(_In_ PCUNICODE_STRING Path, _Out_ PUNICODE_STRING Name)
#define FX_TELEMETRY_ENABLED(TraceHandle, Globals)
@ DeviceInfoLineBasedEdgeTriggeredInterrupt
@ DeviceInfoMsi22MultiMessageInterrupt
@ DeviceInfoMsiXOrSingleMsi22Interrupt
@ DeviceInfoLineBasedLevelTriggeredInterrupt
#define UMDF_FX_TRACE_LOGGING_PROVIDER_NAME
VOID RegisterTelemetryProvider(VOID)
_Must_inspect_result_ NTSTATUS GetImageName(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals, _Out_ PUNICODE_STRING ImageName)
VOID UnregisterTelemetryProvider(VOID)
VOID LogDeviceStartTelemetryEvent(_In_ PFX_DRIVER_GLOBALS Globals, _In_opt_ FxDevice *Fdo)
VOID AllocAndInitializeTelemetryContext(_In_ PFX_TELEMETRY_CONTEXT *TelemetryContext)
TRACELOGGING_DEFINE_PROVIDER(g_TelemetryProvider, UMDF_FX_TRACE_LOGGING_PROVIDER_NAME,(0x8ad60765, 0xa021, 0x4494, 0x85, 0x94, 0x93, 0x46, 0x97, 0x0c, 0xf5, 0x0f), TraceLoggingOptionMicrosoftTelemetry())
VOID GetDriverInfo(_In_ FxDevice *Fdo, _In_ PUMDF_DRIVER_REGSITRY_INFO RegInfo, _Out_ UFxTelemetryDriverInfo *DriverInfo)
VOID LogDriverInfoStream(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_ FxDevice *Fdo)
#define UMDF_CENSUS_EVT_WRITE_DEVICE_START(TraceHandle, Globals, DriverConfig, SetupClass, BusEnum, HwID, Manafacturer)
GLuint GLuint GLsizei GLenum type
GLuint GLsizei GLsizei * length
#define InterlockedBitTestAndSet
static const char * ImageName
DRIVER_INFORMATION DriverInfo
#define _Must_inspect_result_
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
RPC_STATUS WINAPI UuidCreate(UUID *Uuid)
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
#define TRACE_LEVEL_ERROR
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
#define DECLARE_CONST_UNICODE_STRING(_variablename, _string)
enum _WDF_DEVICE_IO_TYPE WDF_DEVICE_IO_TYPE
_Must_inspect_result_ _In_ WDFDEVICE Fdo
#define RPC_S_UUID_LOCAL_ONLY