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 "sandbox/win/src/internal_types.h" 11 12namespace sandbox { 13 14void InitObjectAttribs(const base::string16& name, 15 ULONG attributes, 16 HANDLE root, 17 OBJECT_ATTRIBUTES* obj_attr, 18 UNICODE_STRING* uni_name) { 19 static RtlInitUnicodeStringFunction RtlInitUnicodeString; 20 if (!RtlInitUnicodeString) { 21 HMODULE ntdll = ::GetModuleHandle(kNtdllName); 22 RtlInitUnicodeString = reinterpret_cast<RtlInitUnicodeStringFunction>( 23 GetProcAddress(ntdll, "RtlInitUnicodeString")); 24 DCHECK(RtlInitUnicodeString); 25 } 26 RtlInitUnicodeString(uni_name, name.c_str()); 27 InitializeObjectAttributes(obj_attr, uni_name, attributes, root, NULL); 28} 29 30} // namespace sandbox 31