12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/task_manager/os_resource_win.h" 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace task_manager { 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GetWinGDIHandles(base::ProcessHandle process, 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t* current, 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t* peak) { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *current = 0; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *peak = 0; 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Get a handle to |process| that has PROCESS_QUERY_INFORMATION rights. 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HANDLE current_process = GetCurrentProcess(); 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HANDLE process_with_query_rights; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (DuplicateHandle(current_process, process, current_process, 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &process_with_query_rights, PROCESS_QUERY_INFORMATION, 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) false, 0)) { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *current = GetGuiResources(process_with_query_rights, GR_GDIOBJECTS); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *peak = GetGuiResources(process_with_query_rights, GR_GDIOBJECTS_PEAK); 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CloseHandle(process_with_query_rights); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GetWinUSERHandles(base::ProcessHandle process, 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t* current, 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t* peak) { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *current = 0; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *peak = 0; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Get a handle to |process| that has PROCESS_QUERY_INFORMATION rights. 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HANDLE current_process = GetCurrentProcess(); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HANDLE process_with_query_rights; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (DuplicateHandle(current_process, process, current_process, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &process_with_query_rights, PROCESS_QUERY_INFORMATION, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) false, 0)) { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *current = GetGuiResources(process_with_query_rights, GR_USEROBJECTS); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *peak = GetGuiResources(process_with_query_rights, GR_USEROBJECTS_PEAK); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CloseHandle(process_with_query_rights); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace task_manager 44