15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A helper class for loading resources out of portable executable files. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_INSTALLER_TEST_RESOURCE_LOADER_H_ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_INSTALLER_TEST_RESOURCE_LOADER_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <utility> 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FilePath; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace upgrade_test { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Loads resources in a PE image file. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResourceLoader { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceLoader(); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~ResourceLoader(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Loads |pe_image_path| in preparation for loading its resources. 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool Initialize(const base::FilePath& pe_image_path); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Places the address and size of the resource |name| of |type| into 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |resource_data|, returning true on success. The address of the resource is 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // valid only until this instance is destroyed. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool Load(const std::wstring& name, const std::wstring& type, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::pair<const uint8*, DWORD>* resource_data); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Places the address and size of the resource |id| of |type| into 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |resource_data|, returning true on success. The address of the resource is 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // valid only until this instance is destroyed. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool Load(WORD id, WORD type, std::pair<const uint8*, DWORD>* resource_data); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HMODULE module_; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ResourceLoader); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; // class ResourceLoader 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace upgrade_test 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_INSTALLER_TEST_RESOURCE_LOADER_H_ 51