15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sandbox/win/src/nt_internals.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sandbox/win/src/sandbox_types.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SANDBOX_SRC_FILESYSTEM_INTERCEPTION_H__ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SANDBOX_SRC_FILESYSTEM_INTERCEPTION_H__ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace sandbox { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Interception of NtCreateFile on the child process. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtCreateFile( 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NtCreateFileFunction orig_CreateFile, PHANDLE file, 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ACCESS_MASK desired_access, POBJECT_ATTRIBUTES object_attributes, 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIO_STATUS_BLOCK io_status, PLARGE_INTEGER allocation_size, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG file_attributes, ULONG sharing, ULONG disposition, ULONG options, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PVOID ea_buffer, ULONG ea_length); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Interception of NtOpenFile on the child process. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtOpenFile( 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NtOpenFileFunction orig_OpenFile, PHANDLE file, ACCESS_MASK desired_access, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) POBJECT_ATTRIBUTES object_attributes, PIO_STATUS_BLOCK io_status, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG sharing, ULONG options); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Interception of NtQueryAtttributesFile on the child process. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// It should never be called directly. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtQueryAttributesFile( 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NtQueryAttributesFileFunction orig_QueryAttributes, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) POBJECT_ATTRIBUTES object_attributes, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PFILE_BASIC_INFORMATION file_attributes); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Interception of NtQueryFullAtttributesFile on the child process. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// It should never be called directly. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtQueryFullAttributesFile( 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NtQueryFullAttributesFileFunction orig_QueryAttributes, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) POBJECT_ATTRIBUTES object_attributes, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PFILE_NETWORK_OPEN_INFORMATION file_attributes); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Interception of NtSetInformationFile on the child process. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtSetInformationFile( 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NtSetInformationFileFunction orig_SetInformationFile, HANDLE file, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIO_STATUS_BLOCK io_status, PVOID file_information, ULONG length, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_INFORMATION_CLASS file_information_class); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // extern "C" 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace sandbox 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // SANDBOX_SRC_FILESYSTEM_INTERCEPTION_H__ 54