• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_INFO_H_
6 #define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_INFO_H_
7 
8 #include "base/strings/string16.h"
9 
10 // Represents and facilitates operations on the address range corresponding to a
11 // loaded module.
12 struct ModuleInfo {
ModuleInfoModuleInfo13   ModuleInfo() : base_address(0), size(0) {
14   }
15 
ModuleInfoModuleInfo16   ModuleInfo(const base::char16* const module_name,
17              uintptr_t module_base_address,
18              uint32_t module_size)
19       : base_address(module_base_address),
20         size(module_size),
21         name(module_name) {
22   }
23 
24   // Sorts modules by their base address.
25   bool operator< (const ModuleInfo& compare) const {
26     return base_address < compare.base_address;
27   }
28 
29   // Identifies if an address is within a module.
ContainsAddressModuleInfo30   bool ContainsAddress(uintptr_t address) const {
31     return address >= base_address && address < base_address + size;
32   }
33 
34   base::string16 name;
35   uintptr_t base_address;
36   uint32_t size;
37 };
38 
39 #endif  // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_INFO_H_
40