handle_dispatcher.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 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#ifndef SANDBOX_SRC_HANDLE_DISPATCHER_H_
6#define SANDBOX_SRC_HANDLE_DISPATCHER_H_
7
8#include "base/basictypes.h"
9#include "sandbox/win/src/crosscall_server.h"
10#include "sandbox/win/src/sandbox_policy_base.h"
11
12namespace sandbox {
13
14// This class handles handle-related IPC calls.
15class HandleDispatcher : public Dispatcher {
16 public:
17  explicit HandleDispatcher(PolicyBase* policy_base);
18  ~HandleDispatcher() {}
19
20  // Dispatcher interface.
21  virtual bool SetupService(InterceptionManager* manager, int service);
22
23 private:
24  // Processes IPC requests coming from calls to
25  // TargetServices::DuplicateHandle() in the target.
26  bool DuplicateHandleProxy(IPCInfo* ipc, HANDLE source_handle,
27                            DWORD target_process_id, DWORD desired_access,
28                            DWORD options);
29
30  PolicyBase* policy_base_;
31  DISALLOW_COPY_AND_ASSIGN(HandleDispatcher);
32};
33
34}  // namespace sandbox
35
36#endif  // SANDBOX_SRC_HANDLE_DISPATCHER_H_
37
38