blob: 7c7a519257d13a6b49b012b74570a89da9503d6d [file] [log] [blame]
license.botbf09a502008-08-24 00:55:551// 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.
initial.commitd7cae122008-07-26 21:49:384
initial.commitd7cae122008-07-26 21:49:385#include "base/logging.h"
[email protected]7d0d8af2008-10-08 19:29:126#include "base/resource_util.h"
initial.commitd7cae122008-07-26 21:49:387
8namespace base {
9bool GetDataResourceFromModule(HMODULE module, int resource_id,
10 void** data, size_t* length) {
11 if (!module)
12 return false;
13
[email protected]7d0d8af2008-10-08 19:29:1214 if (!IS_INTRESOURCE(resource_id)) {
15 NOTREACHED();
16 return false;
17 }
18
initial.commitd7cae122008-07-26 21:49:3819 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);
initial.commitd7cae122008-07-26 21:49:3825 HGLOBAL hres = LoadResource(module, hres_info);
[email protected]7d0d8af2008-10-08 19:29:1226 if (!hres)
initial.commitd7cae122008-07-26 21:49:3827 return false;
28
[email protected]7d0d8af2008-10-08 19:29:1229 void* resource = LockResource(hres);
30 if (!resource)
31 return false;
32
33 *data = resource;
initial.commitd7cae122008-07-26 21:49:3834 *length = static_cast<size_t>(data_size);
35 return true;
36}
37} // namespace