1// 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.
4
5#include "sandbox/win/src/nt_internals.h"
6#include "sandbox/win/src/sandbox_types.h"
7
8#ifndef SANDBOX_SRC_POLICY_TARGET_H__
9#define SANDBOX_SRC_POLICY_TARGET_H__
10
11namespace sandbox {
12
13struct CountedParameterSetBase;
14
15// Performs a policy lookup and returns true if the request should be passed to
16// the broker process.
17bool QueryBroker(int ipc_id, CountedParameterSetBase* params);
18
19extern "C" {
20
21// Interception of NtSetInformationThread on the child process.
22// It should never be called directly.
23SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtSetInformationThread(
24    NtSetInformationThreadFunction orig_SetInformationThread, HANDLE thread,
25    NT_THREAD_INFORMATION_CLASS thread_info_class, PVOID thread_information,
26    ULONG thread_information_bytes);
27
28// Interception of NtOpenThreadToken on the child process.
29// It should never be called directly
30SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtOpenThreadToken(
31    NtOpenThreadTokenFunction orig_OpenThreadToken, HANDLE thread,
32    ACCESS_MASK desired_access, BOOLEAN open_as_self, PHANDLE token);
33
34// Interception of NtOpenThreadTokenEx on the child process.
35// It should never be called directly
36SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtOpenThreadTokenEx(
37    NtOpenThreadTokenExFunction orig_OpenThreadTokenEx, HANDLE thread,
38    ACCESS_MASK desired_access, BOOLEAN open_as_self, ULONG handle_attributes,
39    PHANDLE token);
40
41}  // extern "C"
42
43}  // namespace sandbox
44
45#endif  // SANDBOX_SRC_POLICY_TARGET_H__
46