1 // Copyright 2014 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 "mojo/edk/embedder/platform_handle_utils.h"
6 
7 #include <windows.h>
8 
9 #include "base/logging.h"
10 
11 namespace mojo {
12 namespace edk {
13 
DuplicatePlatformHandle(PlatformHandle platform_handle)14 ScopedPlatformHandle DuplicatePlatformHandle(PlatformHandle platform_handle) {
15   DCHECK(platform_handle.is_valid());
16 
17   HANDLE new_handle;
18   CHECK_NE(platform_handle.handle, INVALID_HANDLE_VALUE);
19   if (!DuplicateHandle(GetCurrentProcess(), platform_handle.handle,
20                        GetCurrentProcess(), &new_handle, 0, TRUE,
21                        DUPLICATE_SAME_ACCESS))
22     return ScopedPlatformHandle();
23   DCHECK_NE(new_handle, INVALID_HANDLE_VALUE);
24   return ScopedPlatformHandle(PlatformHandle(new_handle));
25 }
26 
27 }  // namespace edk
28 }  // namespace mojo
29