ReactOS 0.4.15-dev-8096-ga0eec98
fxtelemetryum.hpp File Reference
#include "fxldrum.h"
Include dependency graph for fxtelemetryum.hpp:

Go to the source code of this file.

Classes

union  UFxTelemetryDriverInfo
 
struct  _UMDF_DRIVER_REGSITRY_INFO
 

Macros

#define UMDF_CENSUS_EVT_WRITE_DEVICE_START(TraceHandle, Globals, DriverConfig, SetupClass, BusEnum, HwID, Manafacturer)
 
#define TraceLoggingUmdfDriverConfigInfo(info, fieldName)
 

Typedefs

typedef struct _UMDF_DRIVER_REGSITRY_INFO UMDF_DRIVER_REGSITRY_INFO
 
typedef struct _UMDF_DRIVER_REGSITRY_INFOPUMDF_DRIVER_REGSITRY_INFO
 

Functions

VOID GetDriverInfo (_In_ FxDevice *Fdo, _In_ PUMDF_DRIVER_REGSITRY_INFO RegInfo, _Out_ UFxTelemetryDriverInfo *DriverInfo)
 

Macro Definition Documentation

◆ TraceLoggingUmdfDriverConfigInfo

#define TraceLoggingUmdfDriverConfigInfo (   info,
  fieldName 
)
Value:
\
TraceLoggingStruct(20, fieldName), \
\
TraceLoggingUInt8(info.bitmap.IsFilter, "IsFilter" ), \
TraceLoggingUInt8(info.bitmap.IsPowerPolicyOwner, "IsPowerPolicyOwner" ), \
TraceLoggingUInt8(info.bitmap.IsS0IdleWakeFromS0Enabled, "IsS0IdleWakeFromS0Enabled" ), \
TraceLoggingUInt8(info.bitmap.IsS0IdleUsbSSEnabled, "IsS0IdleUsbSSEnabled" ), \
TraceLoggingUInt8(info.bitmap.IsS0IdleSystemManaged, "IsS0IdleSystemManaged" ), \
\
TraceLoggingUInt8(info.bitmap.IsSxWakeEnabled, "IsSxWakeEnabled" ), \
TraceLoggingUInt8(info.bitmap.IsUsingLevelTriggeredLineInterrupt, "IsUsingLevelTriggeredLineInterrupt" ), \
TraceLoggingUInt8(info.bitmap.IsUsingEdgeTriggeredLineInterrupt, "IsUsingEdgeTriggeredLineInterrupt" ), \
TraceLoggingUInt8(info.bitmap.IsUsingMsiXOrSingleMsi22Interrupt, "IsUsingMsiXOrSingleMsi22Interrupt" ), \
TraceLoggingUInt8(info.bitmap.IsUsingMsi22MultiMessageInterrupt, "IsUsingMsi22MultiMessageInterrupt" ), \
\
TraceLoggingUInt8(info.bitmap.IsUsingMultipleInterrupt, "IsUsingMultipleInterrupt" ), \
TraceLoggingUInt8(info.bitmap.IsDirectHardwareAccessAllowed, "IsDirectHardwareAccessAllowed" ), \
TraceLoggingUInt8(info.bitmap.IsUsingUserModemappingAccessMode, "IsUsingUserModemappingAccessMode" ), \
TraceLoggingUInt8(info.bitmap.IsKernelModeClientAllowed, "IsKernelModeClientAllowed" ), \
TraceLoggingUInt8(info.bitmap.IsNullFileObjectAllowed, "IsNullFileObjectAllowed" ), \
\
TraceLoggingUInt8(info.bitmap.IsPoolingDisabled, "IsPoolingDisabled" ), \
TraceLoggingUInt8(info.bitmap.IsMethodNeitherActionCopy, "IsMethodNeitherActionCopy" ), \
TraceLoggingUInt8(info.bitmap.IsUsingDirectIoForReadWrite, "IsUsingDirectIoForReadWrite" ), \
TraceLoggingUInt8(info.bitmap.IsUsingDirectIoForIoctl, "IsUsingDirectIoForIoctl" ), \
TraceLoggingUInt8(info.bitmap.IsUsingDriverWppRecorder, "IsUsingDriverWppRecorder" ) \

Definition at line 57 of file fxtelemetryum.hpp.

◆ UMDF_CENSUS_EVT_WRITE_DEVICE_START

#define UMDF_CENSUS_EVT_WRITE_DEVICE_START (   TraceHandle,
  Globals,
  DriverConfig,
  SetupClass,
  BusEnum,
  HwID,
  Manafacturer 
)
Value:
TraceLoggingWrite(TraceHandle, \
"UmdfCensusEvtDeviceStart", \
TraceLoggingString((Globals)->Public.DriverName, "DriverServiceName"), \
TraceLoggingWideString(SetupClass, "SetupClass"), \
TraceLoggingWideString(BusEnum, "BusEnumerator"), \
TraceLoggingWideString(HwID, "HardwareId"), \
TraceLoggingWideString(Manafacturer, "ManufacturerString") \
);
CLIPBOARD_GLOBALS Globals
Definition: clipbrd.c:13
#define WDF_CENSUS_EVT_DATA_COMMON(FxGlobals)
Definition: fxtelemetry.hpp:48
#define WDF_TELEMETRY_EVT_KEYWORDS
#define TraceLoggingUmdfDriverConfigInfo(info, fieldName)
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PWDF_DRIVER_CONFIG DriverConfig
Definition: wdfdriver.h:219

Definition at line 41 of file fxtelemetryum.hpp.

Typedef Documentation

◆ PUMDF_DRIVER_REGSITRY_INFO

◆ UMDF_DRIVER_REGSITRY_INFO

Function Documentation

◆ GetDriverInfo()

VOID GetDriverInfo ( _In_ FxDevice Fdo,
_In_ PUMDF_DRIVER_REGSITRY_INFO  RegInfo,
_Out_ UFxTelemetryDriverInfo DriverInfo 
)

Definition at line 186 of file fxtelemetryum.cpp.

191{
192 FxPkgPnp* pnpPkg;
193 USHORT devInfo = 0;
194 WDF_DEVICE_IO_TYPE readWritePreference;
195 WDF_DEVICE_IO_TYPE ioControlPreference;
196 UMDF_DRIVER_REGSITRY_INFO devRegInfo = {0};
197 PWSTR groupId = NULL;
198
199 pnpPkg = (FxPkgPnp*)Fdo->GetFdoPkg();
200 devInfo = Fdo->GetDeviceTelemetryInfoFlags();
201 Fdo->GetDeviceStackIoType(&readWritePreference, &ioControlPreference);
202
203 DriverInfo->bitmap.IsFilter = Fdo->IsFilter();
204 DriverInfo->bitmap.IsPowerPolicyOwner = pnpPkg->IsPowerPolicyOwner();
205 DriverInfo->bitmap.IsS0IdleWakeFromS0Enabled = pnpPkg->IsS0IdleWakeFromS0Enabled();
206 DriverInfo->bitmap.IsS0IdleUsbSSEnabled = pnpPkg->IsS0IdleUsbSSEnabled();
207 DriverInfo->bitmap.IsS0IdleSystemManaged = pnpPkg->IsS0IdleSystemManaged();
208 DriverInfo->bitmap.IsSxWakeEnabled = pnpPkg->IsSxWakeEnabled();
209 DriverInfo->bitmap.IsUsingLevelTriggeredLineInterrupt = IsDeviceInfoFlagSet(devInfo, DeviceInfoLineBasedLevelTriggeredInterrupt);
210 DriverInfo->bitmap.IsUsingEdgeTriggeredLineInterrupt = IsDeviceInfoFlagSet(devInfo, DeviceInfoLineBasedEdgeTriggeredInterrupt);
211 DriverInfo->bitmap.IsUsingMsiXOrSingleMsi22Interrupt = IsDeviceInfoFlagSet(devInfo, DeviceInfoMsiXOrSingleMsi22Interrupt);
212 DriverInfo->bitmap.IsUsingMsi22MultiMessageInterrupt = IsDeviceInfoFlagSet(devInfo, DeviceInfoMsi22MultiMessageInterrupt);
213 DriverInfo->bitmap.IsUsingMultipleInterrupt = pnpPkg->HasMultipleInterrupts();
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;
220 DriverInfo->bitmap.IsUsingDirectIoForReadWrite = (readWritePreference == WdfDeviceIoDirect);
221 DriverInfo->bitmap.IsUsingDirectIoForIoctl = (ioControlPreference == WdfDeviceIoDirect);
222 DriverInfo->bitmap.IsUsingDriverWppRecorder = Fdo->GetDriver()->IsDriverObjectFlagSet(DriverObjectUmFlagsLoggingEnabled);
223
224 return;
225}
BOOLEAN IsSxWakeEnabled(VOID)
Definition: fxpkgpnp.hpp:3672
BOOLEAN HasMultipleInterrupts(VOID)
Definition: fxpkgpnp.hpp:4066
BOOLEAN IsS0IdleSystemManaged(VOID)
Definition: fxpkgpnp.hpp:3645
BOOLEAN IsPowerPolicyOwner(VOID)
Definition: fxpkgpnp.hpp:3612
BOOLEAN IsS0IdleUsbSSEnabled(VOID)
Definition: fxpkgpnp.hpp:3658
BOOLEAN IsS0IdleWakeFromS0Enabled(VOID)
Definition: fxpkgpnp.hpp:3632
#define NULL
Definition: types.h:112
@ DriverObjectUmFlagsLoggingEnabled
Definition: fxldrum.h:126
BOOLEAN __inline IsDeviceInfoFlagSet(_In_ USHORT DeviceInfo, _In_ FxDeviceInfoFlags Flag)
@ DeviceInfoLineBasedEdgeTriggeredInterrupt
@ DeviceInfoMsi22MultiMessageInterrupt
@ DeviceInfoMsiXOrSingleMsi22Interrupt
@ DeviceInfoLineBasedLevelTriggeredInterrupt
Definition: fxtelemetry.hpp:99
DRIVER_INFORMATION DriverInfo
Definition: main.c:59
unsigned short USHORT
Definition: pedump.c:61
uint16_t * PWSTR
Definition: typedefs.h:56
enum _WDF_DEVICE_IO_TYPE WDF_DEVICE_IO_TYPE
@ WdfDeviceIoDirect
Definition: wdfdevice.h:453
_Must_inspect_result_ _In_ WDFDEVICE Fdo
Definition: wdffdo.h:461

Referenced by LogDriverInfoStream().