private static void FireWinSQMEvent( WinSQMWrapper.EventDescriptor eventDescriptor, uint dataPointID, uint dataPointValue) { Guid empty = Guid.Empty; if (!WinSQMWrapper.WinSqmEventEnabled(ref eventDescriptor, ref empty)) { return; } IntPtr num1 = Marshal.AllocHGlobal(Marshal.SizeOf((object)WinSQMWrapper.WINDOWS_SQM_GLOBALSESSION)); IntPtr num2 = Marshal.AllocHGlobal(4); IntPtr num3 = Marshal.AllocHGlobal(4); try { Marshal.StructureToPtr((object)WinSQMWrapper.WINDOWS_SQM_GLOBALSESSION, num1, true); Marshal.StructureToPtr((object)dataPointID, num2, true); Marshal.StructureToPtr((object)dataPointValue, num3, true); WinSQMWrapper.FireWinSQMEvent(eventDescriptor, num1, num2, num3); } finally { Marshal.FreeHGlobal(num1); Marshal.FreeHGlobal(num2); Marshal.FreeHGlobal(num3); } }
public static void NoteRunspaceEnd(Guid rsInstanceId) { if (!PSSQMAPI.isWinSQMEnabled) { return; } long ticks1 = DateTime.Now.Ticks; long num = ticks1; lock (PSSQMAPI.syncObject) { if (!PSSQMAPI.runspaceDurationData.ContainsKey(rsInstanceId)) { return; } num = PSSQMAPI.runspaceDurationData[rsInstanceId]; PSSQMAPI.runspaceDurationData.Remove(rsInstanceId); } try { long ticks2 = ticks1 - num; if (ticks2 < PSSQMAPI.timeValueThreshold) { return; } WinSQMWrapper.WinSqmAddToStream(3088U, new TimeSpan(ticks2).TotalMinutes.ToString((IFormatProvider)CultureInfo.InvariantCulture)); } catch (Exception ex) { CommandProcessorBase.CheckForSevereException(ex); } }
private static void FireWinSQMEvent( WinSQMWrapper.EventDescriptor eventDescriptor, Dictionary <uint, uint> dataToWrite) { Guid empty = Guid.Empty; if (!WinSQMWrapper.WinSqmEventEnabled(ref eventDescriptor, ref empty)) { return; } IntPtr num1 = Marshal.AllocHGlobal(Marshal.SizeOf((object)WinSQMWrapper.WINDOWS_SQM_GLOBALSESSION)); IntPtr num2 = Marshal.AllocHGlobal(4); IntPtr num3 = Marshal.AllocHGlobal(4); try { Marshal.StructureToPtr((object)WinSQMWrapper.WINDOWS_SQM_GLOBALSESSION, num1, true); foreach (uint key in dataToWrite.Keys) { uint num4 = dataToWrite[key]; Marshal.StructureToPtr((object)key, num2, true); Marshal.StructureToPtr((object)num4, num3, true); WinSQMWrapper.FireWinSQMEvent(eventDescriptor, num1, num2, num3); } } finally { Marshal.FreeHGlobal(num1); Marshal.FreeHGlobal(num2); Marshal.FreeHGlobal(num3); } }
public static void WinSqmAddToStream(uint dataPointID, string stringData) { WinSQMWrapper.SqmStreamEntry[] streamEntries = new WinSQMWrapper.SqmStreamEntry[1] { WinSQMWrapper.SqmStreamEntry.CreateStringSqmStreamEntry(stringData) }; WinSQMWrapper.WinSqmAddToStream(WinSQMWrapper.HGLOBALSESSION, dataPointID, streamEntries.Length, streamEntries); }
public static void WinSqmAddToStream(uint dataPointID, string stringData, uint numericalData) { WinSQMWrapper.SqmStreamEntry[] streamEntries = new WinSQMWrapper.SqmStreamEntry[2] { WinSQMWrapper.SqmStreamEntry.CreateStringSqmStreamEntry(stringData), WinSQMWrapper.SqmStreamEntry.CreateStringSqmStreamEntry(numericalData.ToString((IFormatProvider)CultureInfo.InvariantCulture)) }; WinSQMWrapper.WinSqmAddToStream(WinSQMWrapper.HGLOBALSESSION, dataPointID, streamEntries.Length, streamEntries); }
public static bool IsWinSqmOptedIn() { try { return(WinSQMWrapper.WinSqmIsOptedIn()); } catch (Exception ex) { CommandProcessorBase.CheckForSevereException(ex); } return(false); }
private static void FireWinSQMEvent( WinSQMWrapper.EventDescriptor eventDescriptor, IntPtr sessionHandle, IntPtr dataPointIDHandle, IntPtr dataValueHandle) { WinSQMWrapper.EventDataDescriptor[] userData = new WinSQMWrapper.EventDataDescriptor[3] { new WinSQMWrapper.EventDataDescriptor(sessionHandle, Marshal.SizeOf((object)WinSQMWrapper.WINDOWS_SQM_GLOBALSESSION)), new WinSQMWrapper.EventDataDescriptor(dataPointIDHandle, 4), new WinSQMWrapper.EventDataDescriptor(dataValueHandle, 4) }; int num = (int)WinSQMWrapper.WinSqmEventWrite(ref eventDescriptor, userData.Length, userData); }
static PSSQMAPI() { if (!WinSQMWrapper.IsWinSqmOptedIn()) { return; } PSSQMAPI.dataValueCache = new Dictionary <uint, uint>(); PSSQMAPI.cmdletData = new Dictionary <string, uint>((IEqualityComparer <string>)StringComparer.OrdinalIgnoreCase); PSSQMAPI.runspaceDurationData = new Dictionary <Guid, long>(); PSSQMAPI.timeValueThreshold = 600000000L; AppDomain.CurrentDomain.ProcessExit += new EventHandler(PSSQMAPI.CurrentDomain_ProcessExit); PSSQMAPI.startedAtTick = DateTime.Now.Ticks; PSSQMAPI.isWinSQMEnabled = true; }
private static void FlushDataSuppressExceptions() { try { uint num = 3086; if (PSSQMAPI.dataValueCache.ContainsKey(num)) { WinSQMWrapper.WinSqmSet(num, PSSQMAPI.dataValueCache[num]); PSSQMAPI.dataValueCache.Remove(num); } WinSQMWrapper.WinSqmIncrement(PSSQMAPI.dataValueCache); PSSQMAPI.dataValueCache.Clear(); foreach (string key in PSSQMAPI.cmdletData.Keys) { WinSQMWrapper.WinSqmAddToStream(3079U, key, PSSQMAPI.cmdletData[key]); } PSSQMAPI.cmdletData.Clear(); } catch (Exception ex) { CommandProcessorBase.CheckForSevereException(ex); } }
public static void WinSqmSet(uint dataPointID, uint dataPointValue) => WinSQMWrapper.FireWinSQMEvent(new WinSQMWrapper.EventDescriptor((ushort)5, (byte)0, (byte)0, (byte)4, (byte)0, (ushort)0, 2251799813685248UL), dataPointID, dataPointValue);
public static void WinSqmIncrement(Dictionary <uint, uint> dataToWrite) => WinSQMWrapper.FireWinSQMEvent(new WinSQMWrapper.EventDescriptor((ushort)6, (byte)0, (byte)0, (byte)4, (byte)2, (ushort)0, 2251799813685248UL), dataToWrite);
public static void WinSqmIncrement(uint dataPointID, uint incAmount) => WinSQMWrapper.FireWinSQMEvent(new WinSQMWrapper.EventDescriptor((ushort)6, (byte)0, (byte)0, (byte)4, (byte)2, (ushort)0, 2251799813685248UL), dataPointID, incAmount);