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_WIN_SRC_SANDBOX_TYPES_H_ 6 #define SANDBOX_WIN_SRC_SANDBOX_TYPES_H_ 7 8 namespace sandbox { 9 10 // Operation result codes returned by the sandbox API. 11 enum ResultCode { 12 SBOX_ALL_OK = 0, 13 // Error is originating on the win32 layer. Call GetlastError() for more 14 // information. 15 SBOX_ERROR_GENERIC = 1, 16 // An invalid combination of parameters was given to the API. 17 SBOX_ERROR_BAD_PARAMS = 2, 18 // The desired operation is not supported at this time. 19 SBOX_ERROR_UNSUPPORTED = 3, 20 // The request requires more memory that allocated or available. 21 SBOX_ERROR_NO_SPACE = 4, 22 // The ipc service requested does not exist. 23 SBOX_ERROR_INVALID_IPC = 5, 24 // The ipc service did not complete. 25 SBOX_ERROR_FAILED_IPC = 6, 26 // The requested handle was not found. 27 SBOX_ERROR_NO_HANDLE = 7, 28 // This function was not expected to be called at this time. 29 SBOX_ERROR_UNEXPECTED_CALL = 8, 30 // WaitForAllTargets is already called. 31 SBOX_ERROR_WAIT_ALREADY_CALLED = 9, 32 // A channel error prevented DoCall from executing. 33 SBOX_ERROR_CHANNEL_ERROR = 10, 34 // Failed to create the alternate desktop. 35 SBOX_ERROR_CANNOT_CREATE_DESKTOP = 11, 36 // Failed to create the alternate window station. 37 SBOX_ERROR_CANNOT_CREATE_WINSTATION = 12, 38 // Failed to switch back to the interactive window station. 39 SBOX_ERROR_FAILED_TO_SWITCH_BACK_WINSTATION = 13, 40 // The supplied AppContainer is not valid. 41 SBOX_ERROR_INVALID_APP_CONTAINER = 14, 42 // The supplied capability is not valid. 43 SBOX_ERROR_INVALID_CAPABILITY = 15, 44 // There is a failure initializing the AppContainer. 45 SBOX_ERROR_CANNOT_INIT_APPCONTAINER = 16, 46 // Initializing or updating ProcThreadAttributes failed. 47 SBOX_ERROR_PROC_THREAD_ATTRIBUTES = 17, 48 // Placeholder for last item of the enum. 49 SBOX_ERROR_LAST 50 }; 51 52 // If the sandbox cannot create a secure environment for the target, the 53 // target will be forcibly terminated. These are the process exit codes. 54 enum TerminationCodes { 55 SBOX_FATAL_INTEGRITY = 7006, // Could not set the integrity level. 56 SBOX_FATAL_DROPTOKEN = 7007, // Could not lower the token. 57 SBOX_FATAL_FLUSHANDLES = 7008, // Failed to flush registry handles. 58 SBOX_FATAL_CACHEDISABLE = 7009, // Failed to forbid HCKU caching. 59 SBOX_FATAL_CLOSEHANDLES = 7010, // Failed to close pending handles. 60 SBOX_FATAL_MITIGATION = 7011, // Could not set the mitigation policy. 61 SBOX_FATAL_LAST 62 }; 63 64 class BrokerServices; 65 class TargetServices; 66 67 // Contains the pointer to a target or broker service. 68 struct SandboxInterfaceInfo { 69 BrokerServices* broker_services; 70 TargetServices* target_services; 71 }; 72 73 #if SANDBOX_EXPORTS 74 #define SANDBOX_INTERCEPT extern "C" __declspec(dllexport) 75 #else 76 #define SANDBOX_INTERCEPT extern "C" 77 #endif 78 79 enum InterceptionType { 80 INTERCEPTION_INVALID = 0, 81 INTERCEPTION_SERVICE_CALL, // Trampoline of an NT native call 82 INTERCEPTION_EAT, 83 INTERCEPTION_SIDESTEP, // Preamble patch 84 INTERCEPTION_SMART_SIDESTEP, // Preamble patch but bypass internal calls 85 INTERCEPTION_UNLOAD_MODULE, // Unload the module (don't patch) 86 INTERCEPTION_LAST // Placeholder for last item in the enumeration 87 }; 88 89 } // namespace sandbox 90 91 #endif // SANDBOX_WIN_SRC_SANDBOX_TYPES_H_ 92