mirror of
https://github.com/reactos/reactos.git
synced 2025-03-10 10:14:44 +00:00
130 lines
6.3 KiB
C++
130 lines
6.3 KiB
C++
/*++
|
|
|
|
Copyright (c) Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
FxTelemetryUm.hpp
|
|
|
|
Abstract:
|
|
|
|
This is header file for telemetry methods.
|
|
|
|
Author:
|
|
|
|
|
|
|
|
Environment:
|
|
|
|
User mode only
|
|
|
|
Revision History:
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
|
|
#pragma once
|
|
|
|
#include "fxldrum.h"
|
|
|
|
//
|
|
// Event name: UmdfCensusEvtDeviceStart
|
|
//
|
|
// Source: Mode agnostic (UMDF and KMDF)
|
|
//
|
|
// Description: Written when a FDO completes start successfully.
|
|
//
|
|
// Frequency: If FX_TELEMETRY_ENABLED, once per driver session. This is tracked using the
|
|
// DoOnceFlag in the telemetry context.
|
|
//
|
|
#define UMDF_CENSUS_EVT_WRITE_DEVICE_START(TraceHandle , Globals, DriverConfig, SetupClass, BusEnum, HwID, Manafacturer) \
|
|
TraceLoggingWrite(TraceHandle, \
|
|
"UmdfCensusEvtDeviceStart", \
|
|
WDF_TELEMETRY_EVT_KEYWORDS, \
|
|
WDF_CENSUS_EVT_DATA_COMMON(Globals), \
|
|
TraceLoggingString((Globals)->Public.DriverName, "DriverServiceName"), \
|
|
TraceLoggingUmdfDriverConfigInfo(DriverConfig, "DriverConfigInfo"), \
|
|
TraceLoggingWideString(SetupClass, "SetupClass"), \
|
|
TraceLoggingWideString(BusEnum, "BusEnumerator"), \
|
|
TraceLoggingWideString(HwID, "HardwareId"), \
|
|
TraceLoggingWideString(Manafacturer, "ManufacturerString") \
|
|
);
|
|
|
|
//
|
|
// This is part of the data for UmdfCensusEvtDeviceStart event.
|
|
//
|
|
#define TraceLoggingUmdfDriverConfigInfo(info, fieldName) \
|
|
\
|
|
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" ) \
|
|
|
|
//
|
|
// bit-map for driver info stream
|
|
//
|
|
// When changing the structure, do update TraceLoggingUmdfDriverConfigInfo
|
|
// for fields name and TraceLoggingStruct(count) as well. It is good to keep
|
|
// fields order the same but it is not required.
|
|
//
|
|
union UFxTelemetryDriverInfo {
|
|
struct {
|
|
DWORD IsFilter : 1;
|
|
DWORD IsPowerPolicyOwner : 1;
|
|
DWORD IsS0IdleWakeFromS0Enabled : 1;
|
|
DWORD IsS0IdleUsbSSEnabled : 1;
|
|
DWORD IsS0IdleSystemManaged : 1;
|
|
DWORD IsSxWakeEnabled : 1;
|
|
DWORD IsUsingLevelTriggeredLineInterrupt : 1;
|
|
DWORD IsUsingEdgeTriggeredLineInterrupt : 1;
|
|
DWORD IsUsingMsiXOrSingleMsi22Interrupt : 1;
|
|
DWORD IsUsingMsi22MultiMessageInterrupt : 1;
|
|
DWORD IsUsingMultipleInterrupt : 1;
|
|
DWORD IsDirectHardwareAccessAllowed : 1;
|
|
DWORD IsUsingUserModemappingAccessMode : 1;
|
|
DWORD IsKernelModeClientAllowed : 1;
|
|
DWORD IsNullFileObjectAllowed : 1;
|
|
DWORD IsPoolingDisabled : 1;
|
|
DWORD IsMethodNeitherActionCopy : 1;
|
|
DWORD IsUsingDirectIoForReadWrite : 1;
|
|
DWORD IsUsingDirectIoForIoctl : 1;
|
|
DWORD IsUsingDriverWppRecorder : 1;
|
|
} bitmap;
|
|
DWORD Dword;
|
|
};
|
|
|
|
typedef struct _UMDF_DRIVER_REGSITRY_INFO {
|
|
BOOLEAN IsKernelModeClientAllowed;
|
|
BOOLEAN IsNullFileObjectAllowed;
|
|
BOOLEAN IsMethodNeitherActionCopy;
|
|
BOOLEAN IsHostProcessSharingDisabled;
|
|
} UMDF_DRIVER_REGSITRY_INFO, *PUMDF_DRIVER_REGSITRY_INFO;
|
|
|
|
VOID
|
|
GetDriverInfo(
|
|
_In_ FxDevice* Fdo,
|
|
_In_ PUMDF_DRIVER_REGSITRY_INFO RegInfo,
|
|
_Out_ UFxTelemetryDriverInfo* DriverInfo
|
|
);
|