public GroupInfoDetails( Guid iid, bool shared, AppMemoryUsageLevel cLevel, ulong cLimit, ulong pCommit, ulong tCommit, AppResourceGroupExecutionState ex, AppResourceGroupEnergyQuotaState eq, IList <AppResourceGroupBackgroundTaskReport> tasks, IList <ProcessInfoDetails> p) { InstanceId = iid; IsShared = shared; CommitUsageLevel = cLevel; CommitUsageLimit = cLimit; PrivateCommitUsage = pCommit; TotalCommitUsage = tCommit; ExecutionState = ex; EnergyQuotaState = eq; BgTasks = tasks; Processes = p; }
private AppInfoDetails CreateDetailsFromDiagnostics(AppRowInfo ari) { Debug.WriteLine("CreateDetailsFromDiagnostics: aumid={0}, name={1}", ari.Adi.AppInfo.AppUserModelId, ari.Adi.AppInfo.DisplayInfo.DisplayName); AppInfoDetails appDetails = null; try { // Create an AppInfoDetails from this AppRowInfo.AppDiagnosticInfo. IList <GroupInfoDetails> groupDetails = new List <GroupInfoDetails>(); IList <AppResourceGroupInfo> groups = ari.Adi.GetResourceGroups(); if (groups != null && groups.Count > 0) { foreach (AppResourceGroupInfo group in groups) { Debug.WriteLine("group Id: {0}", group.InstanceId); IList <ProcessInfoDetails> pDetails = new List <ProcessInfoDetails>(); IList <ProcessDiagnosticInfo> pInfos = group.GetProcessDiagnosticInfos(); if (pInfos != null && pInfos.Count > 0) { foreach (ProcessDiagnosticInfo pInfo in pInfos) { TimeSpan kernel = TimeSpan.Zero; TimeSpan user = TimeSpan.Zero; ulong npp = 0; ulong pp = 0; ulong pFault = 0; ulong pFile = 0; ulong pNpp = 0; ulong pPP = 0; ulong ppFile = 0; ulong pVirt = 0; ulong pWSet = 0; ulong ppc = 0; ulong vm = 0; ulong ws = 0; long br = 0; long bw = 0; long ob = 0; long oo = 0; long ro = 0; long wo = 0; ProcessCpuUsageReport pcReport = pInfo.CpuUsage.GetReport(); if (pcReport != null) { kernel = pcReport.KernelTime; user = pcReport.UserTime; } ProcessMemoryUsageReport pmReport = pInfo.MemoryUsage.GetReport(); if (pmReport != null) { npp = pmReport.NonPagedPoolSizeInBytes; pp = pmReport.PagedPoolSizeInBytes; pFault = pmReport.PageFaultCount; pFile = pmReport.PageFileSizeInBytes; pNpp = pmReport.PeakNonPagedPoolSizeInBytes; pPP = pmReport.PeakPagedPoolSizeInBytes; ppFile = pmReport.PeakPageFileSizeInBytes; pVirt = pmReport.PeakVirtualMemorySizeInBytes; pWSet = pmReport.PeakWorkingSetSizeInBytes; ppc = pmReport.PrivatePageCount; vm = pmReport.VirtualMemorySizeInBytes; ws = pmReport.WorkingSetSizeInBytes; } ProcessDiskUsageReport pdReport = pInfo.DiskUsage.GetReport(); if (pdReport != null) { br = pdReport.BytesReadCount; bw = pdReport.BytesWrittenCount; ob = pdReport.OtherBytesCount; oo = pdReport.OtherOperationCount; ro = pdReport.ReadOperationCount; wo = pdReport.WriteOperationCount; } ProcessInfoDetails pDetail = new ProcessInfoDetails( pInfo.ProcessId, pInfo.ExecutableFileName, pInfo.ProcessStartTime, kernel, user, npp, pp, pFault, pFile, pNpp, pPP, ppFile, pVirt, pWSet, ppc, vm, ws, br, bw, ob, oo, ro, wo); pDetails.Add(pDetail); } } AppMemoryUsageLevel usageLevel = AppMemoryUsageLevel.Low; ulong commitLimit = 0; ulong privateCommit = 0; ulong totalCommit = 0; AppResourceGroupExecutionState ex = AppResourceGroupExecutionState.Unknown; AppResourceGroupEnergyQuotaState eq = AppResourceGroupEnergyQuotaState.Unknown; AppResourceGroupMemoryReport mReport = group.GetMemoryReport(); AppResourceGroupStateReport sReport = group.GetStateReport(); IList <AppResourceGroupBackgroundTaskReport> bgReports = new List <AppResourceGroupBackgroundTaskReport>(); bgReports = group.GetBackgroundTaskReports(); if (mReport != null) { usageLevel = mReport.CommitUsageLevel; commitLimit = mReport.CommitUsageLimit; privateCommit = mReport.PrivateCommitUsage; totalCommit = mReport.TotalCommitUsage; } if (sReport != null) { ex = sReport.ExecutionState; eq = sReport.EnergyQuotaState; } GroupInfoDetails groupDetail = new GroupInfoDetails( group.InstanceId, group.IsShared, usageLevel, commitLimit, privateCommit, totalCommit, ex, eq, bgReports, pDetails); groupDetails.Add(groupDetail); } // We'll save time and get the cached Logo from the ARI, and get the rest of the data from the ADI. appDetails = new AppInfoDetails( ari.Logo, ari.Adi.AppInfo.AppUserModelId, ari.Adi.AppInfo.Id, ari.Adi.AppInfo.PackageFamilyName, ari.Adi.AppInfo.DisplayInfo.DisplayName, ari.Adi.AppInfo.DisplayInfo.Description, groupDetails); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } return(appDetails); }