resource_loader.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2010 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// A helper class for loading resources out of portable executable files. 6 7#ifndef CHROME_INSTALLER_TEST_RESOURCE_LOADER_H_ 8#define CHROME_INSTALLER_TEST_RESOURCE_LOADER_H_ 9 10#include <windows.h> 11 12#include <string> 13#include <utility> 14 15#include "base/basictypes.h" 16 17namespace base { 18class FilePath; 19} 20 21namespace upgrade_test { 22 23// Loads resources in a PE image file. 24class ResourceLoader { 25 public: 26 ResourceLoader(); 27 ~ResourceLoader(); 28 29 // Loads |pe_image_path| in preparation for loading its resources. 30 bool Initialize(const base::FilePath& pe_image_path); 31 32 // Places the address and size of the resource |name| of |type| into 33 // |resource_data|, returning true on success. The address of the resource is 34 // valid only until this instance is destroyed. 35 bool Load(const std::wstring& name, const std::wstring& type, 36 std::pair<const uint8*, DWORD>* resource_data); 37 38 // Places the address and size of the resource |id| of |type| into 39 // |resource_data|, returning true on success. The address of the resource is 40 // valid only until this instance is destroyed. 41 bool Load(WORD id, WORD type, std::pair<const uint8*, DWORD>* resource_data); 42 43 private: 44 HMODULE module_; 45 DISALLOW_COPY_AND_ASSIGN(ResourceLoader); 46}; // class ResourceLoader 47 48} // namespace upgrade_test 49 50#endif // CHROME_INSTALLER_TEST_RESOURCE_LOADER_H_ 51