- add sources.
[platform/framework/web/crosswalk.git] / src / sandbox / win / src / sandbox_utils.cc
1 // Copyright (c) 2011 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 "sandbox/win/src/sandbox_utils.h"
6
7 #include <windows.h>
8
9 #include "base/logging.h"
10 #include "base/win/windows_version.h"
11 #include "sandbox/win/src/internal_types.h"
12
13 namespace sandbox {
14
15 bool IsXPSP2OrLater() {
16   base::win::Version version = base::win::GetVersion();
17   return (version > base::win::VERSION_XP) ||
18       ((version == base::win::VERSION_XP) &&
19        (base::win::OSInfo::GetInstance()->service_pack().major >= 2));
20 }
21
22 void InitObjectAttribs(const std::wstring& name,
23                        ULONG attributes,
24                        HANDLE root,
25                        OBJECT_ATTRIBUTES* obj_attr,
26                        UNICODE_STRING* uni_name) {
27   static RtlInitUnicodeStringFunction RtlInitUnicodeString;
28   if (!RtlInitUnicodeString) {
29     HMODULE ntdll = ::GetModuleHandle(kNtdllName);
30     RtlInitUnicodeString = reinterpret_cast<RtlInitUnicodeStringFunction>(
31       GetProcAddress(ntdll, "RtlInitUnicodeString"));
32     DCHECK(RtlInitUnicodeString);
33   }
34   RtlInitUnicodeString(uni_name, name.c_str());
35   InitializeObjectAttributes(obj_attr, uni_name, attributes, root, NULL);
36 }
37
38 };  // namespace sandbox