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