Home | History | Annotate | Download | only in base
      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/resource_util.h"
      7 
      8 namespace base {
      9 bool GetDataResourceFromModule(HMODULE module, int resource_id,
     10                                void** data, size_t* length) {
     11   if (!module)
     12     return false;
     13 
     14   if (!IS_INTRESOURCE(resource_id)) {
     15     NOTREACHED();
     16     return false;
     17   }
     18 
     19   HRSRC hres_info = FindResource(module, MAKEINTRESOURCE(resource_id),
     20                                  L"BINDATA");
     21   if (NULL == hres_info)
     22     return false;
     23 
     24   DWORD data_size = SizeofResource(module, hres_info);
     25   HGLOBAL hres = LoadResource(module, hres_info);
     26   if (!hres)
     27     return false;
     28 
     29   void* resource = LockResource(hres);
     30   if (!resource)
     31     return false;
     32 
     33   *data = resource;
     34   *length = static_cast<size_t>(data_size);
     35   return true;
     36 }
     37 }  // namespace
     38