resource_util.cc revision c7f5f8508d98d5952d42ed7648c2a8f30a4da156
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
8namespace base {
9bool 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