| // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "base/logging.h" | 
 | #include "base/win/resource_util.h" | 
 |  | 
 | namespace base { | 
 | namespace win { | 
 |  | 
 | bool GetResourceFromModule(HMODULE module, | 
 |                            int resource_id, | 
 |                            LPCTSTR resource_type, | 
 |                            void** data, | 
 |                            size_t* length) { | 
 |   if (!module) | 
 |     return false; | 
 |  | 
 |   if (!IS_INTRESOURCE(resource_id)) { | 
 |     NOTREACHED(); | 
 |     return false; | 
 |   } | 
 |  | 
 |   HRSRC hres_info = FindResource(module, MAKEINTRESOURCE(resource_id), | 
 |                                  resource_type); | 
 |   if (NULL == hres_info) | 
 |     return false; | 
 |  | 
 |   DWORD data_size = SizeofResource(module, hres_info); | 
 |   HGLOBAL hres = LoadResource(module, hres_info); | 
 |   if (!hres) | 
 |     return false; | 
 |  | 
 |   void* resource = LockResource(hres); | 
 |   if (!resource) | 
 |     return false; | 
 |  | 
 |   *data = resource; | 
 |   *length = static_cast<size_t>(data_size); | 
 |   return true; | 
 | } | 
 |  | 
 | bool GetDataResourceFromModule(HMODULE module, | 
 |                                int resource_id, | 
 |                                void** data, | 
 |                                size_t* length) { | 
 |   return GetResourceFromModule(module, resource_id, L"BINDATA", data, length); | 
 | } | 
 |  | 
 | }  // namespace win | 
 | }  // namespace base |