Home | History | Annotate | Download | only in win
      1 // Copyright (c) 2006-2008 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 #include "base/logging.h"
      6 #include "base/win/resource_util.h"
      7 
      8 namespace base {
      9 namespace win {
     10 
     11 bool GetResourceFromModule(HMODULE module,
     12                            int resource_id,
     13                            LPCTSTR resource_type,
     14                            void** data,
     15                            size_t* length) {
     16   if (!module)
     17     return false;
     18 
     19   if (!IS_INTRESOURCE(resource_id)) {
     20     NOTREACHED();
     21     return false;
     22   }
     23 
     24   HRSRC hres_info = FindResource(module, MAKEINTRESOURCE(resource_id),
     25                                  resource_type);
     26   if (NULL == hres_info)
     27     return false;
     28 
     29   DWORD data_size = SizeofResource(module, hres_info);
     30   HGLOBAL hres = LoadResource(module, hres_info);
     31   if (!hres)
     32     return false;
     33 
     34   void* resource = LockResource(hres);
     35   if (!resource)
     36     return false;
     37 
     38   *data = resource;
     39   *length = static_cast<size_t>(data_size);
     40   return true;
     41 }
     42 
     43 bool GetDataResourceFromModule(HMODULE module,
     44                                int resource_id,
     45                                void** data,
     46                                size_t* length) {
     47   return GetResourceFromModule(module, resource_id, L"BINDATA", data, length);
     48 }
     49 
     50 }  // namespace win
     51 }  // namespace base
     52