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_SYNC_INTERCEPTION_H__
9#define SANDBOX_SRC_SYNC_INTERCEPTION_H__
10
11namespace sandbox {
12
13extern "C" {
14
15typedef NTSTATUS (WINAPI* NtCreateEventFunction) (
16    PHANDLE EventHandle,
17    ACCESS_MASK DesiredAccess,
18    POBJECT_ATTRIBUTES ObjectAttributes,
19    EVENT_TYPE EventType,
20    BOOLEAN InitialState);
21
22typedef NTSTATUS (WINAPI *NtOpenEventFunction) (
23    PHANDLE EventHandle,
24    ACCESS_MASK DesiredAccess,
25    POBJECT_ATTRIBUTES ObjectAttributes);
26
27// Interceptors for NtCreateEvent/NtOpenEvent
28SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtCreateEvent(
29    NtCreateEventFunction orig_CreateEvent,
30    PHANDLE event_handle,
31    ACCESS_MASK desired_access,
32    POBJECT_ATTRIBUTES object_attributes,
33    EVENT_TYPE event_type,
34    BOOLEAN initial_state);
35
36SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtOpenEvent(
37    NtOpenEventFunction orig_OpenEvent,
38    PHANDLE event_handle,
39    ACCESS_MASK desired_access,
40    POBJECT_ATTRIBUTES object_attributes);
41
42}  // extern "C"
43
44}  // namespace sandbox
45
46#endif  // SANDBOX_SRC_SYNC_INTERCEPTION_H__
47