xref: /aosp_15_r20/external/crosvm/sandbox/bindings.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1 // Copyright 2022 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // If this file changes, update this file upstream and update windows pre-built libraries
6 // that upstream uses.
7 //
8 // TODO(b/239836957): Add how to generate and update pre-built library.
9 
10 #![allow(deref_nullptr)]
11 
12 /* automatically generated by rust-bindgen 0.56.0 */
13 
14 pub const JOB_OBJECT_UILIMIT_NONE: u32 = 0;
15 pub const JOB_OBJECT_UILIMIT_HANDLES: u32 = 1;
16 pub const JOB_OBJECT_UILIMIT_READCLIPBOARD: u32 = 2;
17 pub const JOB_OBJECT_UILIMIT_WRITECLIPBOARD: u32 = 4;
18 pub const JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS: u32 = 8;
19 pub const JOB_OBJECT_UILIMIT_DISPLAYSETTINGS: u32 = 16;
20 pub const JOB_OBJECT_UILIMIT_GLOBALATOMS: u32 = 32;
21 pub const JOB_OBJECT_UILIMIT_DESKTOP: u32 = 64;
22 pub const JOB_OBJECT_UILIMIT_EXITWINDOWS: u32 = 128;
23 pub const JOB_OBJECT_UILIMIT_ALL: u32 = 255;
24 pub type size_t = ::std::os::raw::c_ulonglong;
25 pub type wchar_t = ::std::os::raw::c_ushort;
26 pub type DWORD = ::std::os::raw::c_ulong;
27 pub type HANDLE = *mut ::std::os::raw::c_void;
28 #[repr(C)]
29 #[derive(Debug, Copy, Clone)]
30 pub struct _PROCESS_INFORMATION {
31     pub hProcess: HANDLE,
32     pub hThread: HANDLE,
33     pub dwProcessId: DWORD,
34     pub dwThreadId: DWORD,
35 }
36 #[test]
bindgen_test_layout__PROCESS_INFORMATION()37 fn bindgen_test_layout__PROCESS_INFORMATION() {
38     assert_eq!(
39         ::std::mem::size_of::<_PROCESS_INFORMATION>(),
40         24usize,
41         concat!("Size of: ", stringify!(_PROCESS_INFORMATION))
42     );
43     assert_eq!(
44         ::std::mem::align_of::<_PROCESS_INFORMATION>(),
45         8usize,
46         concat!("Alignment of ", stringify!(_PROCESS_INFORMATION))
47     );
48     assert_eq!(
49         unsafe { &(*(::std::ptr::null::<_PROCESS_INFORMATION>())).hProcess as *const _ as usize },
50         0usize,
51         concat!(
52             "Offset of field: ",
53             stringify!(_PROCESS_INFORMATION),
54             "::",
55             stringify!(hProcess)
56         )
57     );
58     assert_eq!(
59         unsafe { &(*(::std::ptr::null::<_PROCESS_INFORMATION>())).hThread as *const _ as usize },
60         8usize,
61         concat!(
62             "Offset of field: ",
63             stringify!(_PROCESS_INFORMATION),
64             "::",
65             stringify!(hThread)
66         )
67     );
68     assert_eq!(
69         unsafe {
70             &(*(::std::ptr::null::<_PROCESS_INFORMATION>())).dwProcessId as *const _ as usize
71         },
72         16usize,
73         concat!(
74             "Offset of field: ",
75             stringify!(_PROCESS_INFORMATION),
76             "::",
77             stringify!(dwProcessId)
78         )
79     );
80     assert_eq!(
81         unsafe { &(*(::std::ptr::null::<_PROCESS_INFORMATION>())).dwThreadId as *const _ as usize },
82         20usize,
83         concat!(
84             "Offset of field: ",
85             stringify!(_PROCESS_INFORMATION),
86             "::",
87             stringify!(dwThreadId)
88         )
89     );
90 }
91 pub type PROCESS_INFORMATION = _PROCESS_INFORMATION;
92 #[repr(i32)]
93 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
94 pub enum ResultCode {
95     SBOX_ALL_OK = 0,
96     SBOX_ERROR_GENERIC = 1,
97     SBOX_ERROR_BAD_PARAMS = 2,
98     SBOX_ERROR_UNSUPPORTED = 3,
99     SBOX_ERROR_NO_SPACE = 4,
100     SBOX_ERROR_INVALID_IPC = 5,
101     SBOX_ERROR_FAILED_IPC = 6,
102     SBOX_ERROR_NO_HANDLE = 7,
103     SBOX_ERROR_UNEXPECTED_CALL = 8,
104     SBOX_ERROR_WAIT_ALREADY_CALLED = 9,
105     SBOX_ERROR_CHANNEL_ERROR = 10,
106     SBOX_ERROR_CANNOT_CREATE_DESKTOP = 11,
107     SBOX_ERROR_CANNOT_CREATE_WINSTATION = 12,
108     SBOX_ERROR_FAILED_TO_SWITCH_BACK_WINSTATION = 13,
109     SBOX_ERROR_INVALID_APP_CONTAINER = 14,
110     SBOX_ERROR_INVALID_CAPABILITY = 15,
111     SBOX_ERROR_CANNOT_INIT_APPCONTAINER = 16,
112     SBOX_ERROR_PROC_THREAD_ATTRIBUTES = 17,
113     SBOX_ERROR_CREATE_PROCESS = 18,
114     SBOX_ERROR_DELEGATE_PRE_SPAWN = 19,
115     SBOX_ERROR_ASSIGN_PROCESS_TO_JOB_OBJECT = 20,
116     SBOX_ERROR_SET_THREAD_TOKEN = 21,
117     SBOX_ERROR_GET_THREAD_CONTEXT = 22,
118     SBOX_ERROR_DUPLICATE_TARGET_INFO = 23,
119     SBOX_ERROR_SET_LOW_BOX_TOKEN = 24,
120     SBOX_ERROR_CREATE_FILE_MAPPING = 25,
121     SBOX_ERROR_DUPLICATE_SHARED_SECTION = 26,
122     SBOX_ERROR_MAP_VIEW_OF_SHARED_SECTION = 27,
123     SBOX_ERROR_APPLY_ASLR_MITIGATIONS = 28,
124     SBOX_ERROR_SETUP_BASIC_INTERCEPTIONS = 29,
125     SBOX_ERROR_SETUP_INTERCEPTION_SERVICE = 30,
126     SBOX_ERROR_INITIALIZE_INTERCEPTIONS = 31,
127     SBOX_ERROR_SETUP_NTDLL_IMPORTS = 32,
128     SBOX_ERROR_SETUP_HANDLE_CLOSER = 33,
129     SBOX_ERROR_CANNOT_GET_WINSTATION = 34,
130     SBOX_ERROR_CANNOT_QUERY_WINSTATION_SECURITY = 35,
131     SBOX_ERROR_CANNOT_GET_DESKTOP = 36,
132     SBOX_ERROR_CANNOT_QUERY_DESKTOP_SECURITY = 37,
133     SBOX_ERROR_CANNOT_SETUP_INTERCEPTION_CONFIG_BUFFER = 38,
134     SBOX_ERROR_CANNOT_COPY_DATA_TO_CHILD = 39,
135     SBOX_ERROR_CANNOT_SETUP_INTERCEPTION_THUNK = 40,
136     SBOX_ERROR_CANNOT_RESOLVE_INTERCEPTION_THUNK = 41,
137     SBOX_ERROR_CANNOT_WRITE_INTERCEPTION_THUNK = 42,
138     SBOX_ERROR_CANNOT_FIND_BASE_ADDRESS = 43,
139     SBOX_ERROR_CREATE_APPCONTAINER = 44,
140     SBOX_ERROR_CREATE_APPCONTAINER_ACCESS_CHECK = 45,
141     SBOX_ERROR_CREATE_APPCONTAINER_CAPABILITY = 46,
142     SBOX_ERROR_CANNOT_INIT_JOB = 47,
143     SBOX_ERROR_INVALID_LOWBOX_SID = 48,
144     SBOX_ERROR_CANNOT_CREATE_RESTRICTED_TOKEN = 49,
145     SBOX_ERROR_CANNOT_SET_DESKTOP_INTEGRITY = 50,
146     SBOX_ERROR_CANNOT_CREATE_LOWBOX_TOKEN = 51,
147     SBOX_ERROR_CANNOT_MODIFY_LOWBOX_TOKEN_DACL = 52,
148     SBOX_ERROR_CANNOT_CREATE_RESTRICTED_IMP_TOKEN = 53,
149     SBOX_ERROR_CANNOT_DUPLICATE_PROCESS_HANDLE = 54,
150     SBOX_ERROR_CANNOT_LOADLIBRARY_EXECUTABLE = 55,
151     SBOX_ERROR_CANNOT_FIND_VARIABLE_ADDRESS = 56,
152     SBOX_ERROR_CANNOT_WRITE_VARIABLE_VALUE = 57,
153     SBOX_ERROR_INVALID_WRITE_VARIABLE_SIZE = 58,
154     SBOX_ERROR_CANNOT_INIT_BROKERSERVICES = 59,
155     SBOX_ERROR_CANNOT_UPDATE_JOB_PROCESS_LIMIT = 60,
156     SBOX_ERROR_CANNOT_CREATE_LOWBOX_IMPERSONATION_TOKEN = 61,
157     SBOX_ERROR_UNSANDBOXED_PROCESS = 62,
158     SBOX_ERROR_LAST = 63,
159 }
160 #[repr(i32)]
161 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
162 pub enum IntegrityLevel {
163     INTEGRITY_LEVEL_SYSTEM = 0,
164     INTEGRITY_LEVEL_HIGH = 1,
165     INTEGRITY_LEVEL_MEDIUM = 2,
166     INTEGRITY_LEVEL_MEDIUM_LOW = 3,
167     INTEGRITY_LEVEL_LOW = 4,
168     INTEGRITY_LEVEL_BELOW_LOW = 5,
169     INTEGRITY_LEVEL_UNTRUSTED = 6,
170     INTEGRITY_LEVEL_LAST = 7,
171 }
172 #[repr(i32)]
173 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
174 pub enum TokenLevel {
175     USER_LOCKDOWN = 0,
176     USER_RESTRICTED = 1,
177     USER_LIMITED = 2,
178     USER_INTERACTIVE = 3,
179     USER_RESTRICTED_NON_ADMIN = 4,
180     USER_NON_ADMIN = 5,
181     USER_RESTRICTED_SAME_ACCESS = 6,
182     USER_UNPROTECTED = 7,
183     USER_LAST = 8,
184 }
185 #[repr(i32)]
186 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
187 pub enum JobLevel {
188     JOB_LOCKDOWN = 0,
189     JOB_RESTRICTED = 1,
190     JOB_LIMITED_USER = 2,
191     JOB_INTERACTIVE = 3,
192     JOB_UNPROTECTED = 4,
193     JOB_NONE = 5,
194 }
195 pub type MitigationFlags = u64;
196 pub const MITIGATION_DEP: MitigationFlags = 1;
197 pub const MITIGATION_DEP_NO_ATL_THUNK: MitigationFlags = 2;
198 pub const MITIGATION_SEHOP: MitigationFlags = 4;
199 pub const MITIGATION_RELOCATE_IMAGE: MitigationFlags = 8;
200 pub const MITIGATION_RELOCATE_IMAGE_REQUIRED: MitigationFlags = 16;
201 pub const MITIGATION_HEAP_TERMINATE: MitigationFlags = 32;
202 pub const MITIGATION_BOTTOM_UP_ASLR: MitigationFlags = 64;
203 pub const MITIGATION_HIGH_ENTROPY_ASLR: MitigationFlags = 128;
204 pub const MITIGATION_STRICT_HANDLE_CHECKS: MitigationFlags = 256;
205 pub const MITIGATION_DLL_SEARCH_ORDER: MitigationFlags = 512;
206 pub const MITIGATION_HARDEN_TOKEN_IL_POLICY: MitigationFlags = 1024;
207 pub const MITIGATION_WIN32K_DISABLE: MitigationFlags = 2048;
208 pub const MITIGATION_EXTENSION_POINT_DISABLE: MitigationFlags = 4096;
209 pub const MITIGATION_DYNAMIC_CODE_DISABLE: MitigationFlags = 8192;
210 pub const MITIGATION_DYNAMIC_CODE_DISABLE_WITH_OPT_OUT: MitigationFlags = 16384;
211 pub const MITIGATION_DYNAMIC_CODE_OPT_OUT_THIS_THREAD: MitigationFlags = 32768;
212 pub const MITIGATION_NONSYSTEM_FONT_DISABLE: MitigationFlags = 65536;
213 pub const MITIGATION_FORCE_MS_SIGNED_BINS: MitigationFlags = 131072;
214 pub const MITIGATION_IMAGE_LOAD_NO_REMOTE: MitigationFlags = 262144;
215 pub const MITIGATION_IMAGE_LOAD_NO_LOW_LABEL: MitigationFlags = 524288;
216 pub const MITIGATION_IMAGE_LOAD_PREFER_SYS32: MitigationFlags = 1048576;
217 pub const MITIGATION_RESTRICT_INDIRECT_BRANCH_PREDICTION: MitigationFlags = 2097152;
218 pub const MITIGATION_CET_DISABLED: MitigationFlags = 4194304;
219 pub const MITIGATION_KTM_COMPONENT: MitigationFlags = 8388608;
220 #[repr(i32)]
221 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
222 pub enum SubSystem {
223     SUBSYS_FILES = 0,
224     SUBSYS_NAMED_PIPES = 1,
225     SUBSYS_PROCESS = 2,
226     SUBSYS_REGISTRY = 3,
227     SUBSYS_SYNC = 4,
228     SUBSYS_WIN32K_LOCKDOWN = 5,
229     SUBSYS_SIGNED_BINARY = 6,
230     SUBSYS_SOCKET = 7,
231 }
232 #[repr(i32)]
233 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
234 pub enum Semantics {
235     FILES_ALLOW_ANY = 0,
236     FILES_ALLOW_READONLY = 1,
237     FILES_ALLOW_QUERY = 2,
238     FILES_ALLOW_DIR_ANY = 3,
239     NAMEDPIPES_ALLOW_ANY = 4,
240     PROCESS_MIN_EXEC = 5,
241     PROCESS_ALL_EXEC = 6,
242     EVENTS_ALLOW_ANY = 7,
243     EVENTS_ALLOW_READONLY = 8,
244     REG_ALLOW_READONLY = 9,
245     REG_ALLOW_ANY = 10,
246     FAKE_USER_GDI_INIT = 11,
247     SIGNED_ALLOW_LOAD = 12,
248     SOCKET_ALLOW_BROKER = 13,
249 }
250 #[repr(C)]
251 #[derive(Debug, Copy, Clone)]
252 pub struct BrokerServices {
253     _unused: [u8; 0],
254 }
255 #[repr(C)]
256 #[derive(Debug, Copy, Clone)]
257 pub struct TargetServices {
258     _unused: [u8; 0],
259 }
260 #[repr(C)]
261 #[derive(Debug, Copy, Clone)]
262 pub struct ProcessState {
263     _unused: [u8; 0],
264 }
265 #[repr(C)]
266 #[derive(Debug, Copy, Clone)]
267 pub struct TargetPolicy {
268     _unused: [u8; 0],
269 }
270 #[repr(C)]
271 #[derive(Debug, Copy, Clone)]
272 pub struct PolicyInfo {
273     _unused: [u8; 0],
274 }
275 extern "C" {
sbox_broker_init(broker: *mut BrokerServices) -> ResultCode276     pub fn sbox_broker_init(broker: *mut BrokerServices) -> ResultCode;
277 }
278 extern "C" {
sbox_create_policy(broker: *mut BrokerServices) -> *mut TargetPolicy279     pub fn sbox_create_policy(broker: *mut BrokerServices) -> *mut TargetPolicy;
280 }
281 extern "C" {
sbox_release_policy(policy: *mut TargetPolicy)282     pub fn sbox_release_policy(policy: *mut TargetPolicy);
283 }
284 extern "C" {
sbox_spawn_target( broker: *mut BrokerServices, exe_path: *const wchar_t, command_line: *const wchar_t, policy: *mut TargetPolicy, last_warning: *mut ResultCode, last_error: *mut DWORD, target: *mut PROCESS_INFORMATION, ) -> ResultCode285     pub fn sbox_spawn_target(
286         broker: *mut BrokerServices,
287         exe_path: *const wchar_t,
288         command_line: *const wchar_t,
289         policy: *mut TargetPolicy,
290         last_warning: *mut ResultCode,
291         last_error: *mut DWORD,
292         target: *mut PROCESS_INFORMATION,
293     ) -> ResultCode;
294 }
295 extern "C" {
sbox_wait_for_all_targets(broker: *mut BrokerServices) -> ResultCode296     pub fn sbox_wait_for_all_targets(broker: *mut BrokerServices) -> ResultCode;
297 }
298 extern "C" {
sbox_target_init(target: *mut TargetServices) -> ResultCode299     pub fn sbox_target_init(target: *mut TargetServices) -> ResultCode;
300 }
301 extern "C" {
sbox_lower_token(target: *mut TargetServices)302     pub fn sbox_lower_token(target: *mut TargetServices);
303 }
304 extern "C" {
sbox_get_state(target: *mut TargetServices) -> *mut ProcessState305     pub fn sbox_get_state(target: *mut TargetServices) -> *mut ProcessState;
306 }
307 extern "C" {
get_broker_services() -> *mut BrokerServices308     pub fn get_broker_services() -> *mut BrokerServices;
309 }
310 extern "C" {
get_target_services() -> *mut TargetServices311     pub fn get_target_services() -> *mut TargetServices;
312 }
313 extern "C" {
sbox_set_token_level( policy: *mut TargetPolicy, initial: TokenLevel, lockdown: TokenLevel, ) -> ResultCode314     pub fn sbox_set_token_level(
315         policy: *mut TargetPolicy,
316         initial: TokenLevel,
317         lockdown: TokenLevel,
318     ) -> ResultCode;
319 }
320 extern "C" {
sbox_get_initial_token_level(policy: *mut TargetPolicy) -> TokenLevel321     pub fn sbox_get_initial_token_level(policy: *mut TargetPolicy) -> TokenLevel;
322 }
323 extern "C" {
sbox_get_lockdown_token_level(policy: *mut TargetPolicy) -> TokenLevel324     pub fn sbox_get_lockdown_token_level(policy: *mut TargetPolicy) -> TokenLevel;
325 }
326 extern "C" {
sbox_set_job_level( policy: *mut TargetPolicy, job_level: JobLevel, ui_exceptions: u32, ) -> ResultCode327     pub fn sbox_set_job_level(
328         policy: *mut TargetPolicy,
329         job_level: JobLevel,
330         ui_exceptions: u32,
331     ) -> ResultCode;
332 }
333 extern "C" {
sbox_get_job_level(policy: *mut TargetPolicy) -> JobLevel334     pub fn sbox_get_job_level(policy: *mut TargetPolicy) -> JobLevel;
335 }
336 extern "C" {
sbox_set_job_memory_limit(policy: *mut TargetPolicy, memory_limit: size_t) -> ResultCode337     pub fn sbox_set_job_memory_limit(policy: *mut TargetPolicy, memory_limit: size_t)
338         -> ResultCode;
339 }
340 extern "C" {
sbox_set_integrity_level(policy: *mut TargetPolicy, level: IntegrityLevel) -> ResultCode341     pub fn sbox_set_integrity_level(policy: *mut TargetPolicy, level: IntegrityLevel)
342         -> ResultCode;
343 }
344 extern "C" {
sbox_set_delayed_integrity_level( policy: *mut TargetPolicy, level: IntegrityLevel, ) -> ResultCode345     pub fn sbox_set_delayed_integrity_level(
346         policy: *mut TargetPolicy,
347         level: IntegrityLevel,
348     ) -> ResultCode;
349 }
350 extern "C" {
sbox_get_integrity_level(policy: *mut TargetPolicy) -> IntegrityLevel351     pub fn sbox_get_integrity_level(policy: *mut TargetPolicy) -> IntegrityLevel;
352 }
353 extern "C" {
sbox_set_alternate_desktop( policy: *mut TargetPolicy, alternate_winstation: bool, ) -> ResultCode354     pub fn sbox_set_alternate_desktop(
355         policy: *mut TargetPolicy,
356         alternate_winstation: bool,
357     ) -> ResultCode;
358 }
359 extern "C" {
sbox_create_alternate_desktop( policy: *mut TargetPolicy, alternate_winstation: bool, ) -> ResultCode360     pub fn sbox_create_alternate_desktop(
361         policy: *mut TargetPolicy,
362         alternate_winstation: bool,
363     ) -> ResultCode;
364 }
365 extern "C" {
sbox_destroy_alternate_desktop(policy: *mut TargetPolicy)366     pub fn sbox_destroy_alternate_desktop(policy: *mut TargetPolicy);
367 }
368 extern "C" {
sbox_set_lowbox(policy: *mut TargetPolicy, sid: *const wchar_t) -> ResultCode369     pub fn sbox_set_lowbox(policy: *mut TargetPolicy, sid: *const wchar_t) -> ResultCode;
370 }
371 extern "C" {
sbox_set_process_mitigations( policy: *mut TargetPolicy, flags: MitigationFlags, ) -> ResultCode372     pub fn sbox_set_process_mitigations(
373         policy: *mut TargetPolicy,
374         flags: MitigationFlags,
375     ) -> ResultCode;
376 }
377 extern "C" {
sbox_get_process_mitigations(policy: *mut TargetPolicy) -> MitigationFlags378     pub fn sbox_get_process_mitigations(policy: *mut TargetPolicy) -> MitigationFlags;
379 }
380 extern "C" {
sbox_set_delayed_process_mitigations( policy: *mut TargetPolicy, flags: MitigationFlags, ) -> ResultCode381     pub fn sbox_set_delayed_process_mitigations(
382         policy: *mut TargetPolicy,
383         flags: MitigationFlags,
384     ) -> ResultCode;
385 }
386 extern "C" {
sbox_get_delayed_process_mitigations(policy: *mut TargetPolicy) -> MitigationFlags387     pub fn sbox_get_delayed_process_mitigations(policy: *mut TargetPolicy) -> MitigationFlags;
388 }
389 extern "C" {
sbox_set_disconnect_csrss(policy: *mut TargetPolicy) -> ResultCode390     pub fn sbox_set_disconnect_csrss(policy: *mut TargetPolicy) -> ResultCode;
391 }
392 extern "C" {
sbox_set_strict_interceptions(policy: *mut TargetPolicy)393     pub fn sbox_set_strict_interceptions(policy: *mut TargetPolicy);
394 }
395 extern "C" {
sbox_set_stdout_handle(policy: *mut TargetPolicy, handle: HANDLE) -> ResultCode396     pub fn sbox_set_stdout_handle(policy: *mut TargetPolicy, handle: HANDLE) -> ResultCode;
397 }
398 extern "C" {
sbox_set_stderr_handle(policy: *mut TargetPolicy, handle: HANDLE) -> ResultCode399     pub fn sbox_set_stderr_handle(policy: *mut TargetPolicy, handle: HANDLE) -> ResultCode;
400 }
401 extern "C" {
sbox_add_rule( policy: *mut TargetPolicy, subsystem: SubSystem, semantics: Semantics, pattern: *const wchar_t, ) -> ResultCode402     pub fn sbox_add_rule(
403         policy: *mut TargetPolicy,
404         subsystem: SubSystem,
405         semantics: Semantics,
406         pattern: *const wchar_t,
407     ) -> ResultCode;
408 }
409 extern "C" {
sbox_add_dll_to_unload( policy: *mut TargetPolicy, dll_name: *const wchar_t, ) -> ResultCode410     pub fn sbox_add_dll_to_unload(
411         policy: *mut TargetPolicy,
412         dll_name: *const wchar_t,
413     ) -> ResultCode;
414 }
415 extern "C" {
sbox_add_kernel_object_to_close( policy: *mut TargetPolicy, handle_type: *const wchar_t, handle_name: *const wchar_t, ) -> ResultCode416     pub fn sbox_add_kernel_object_to_close(
417         policy: *mut TargetPolicy,
418         handle_type: *const wchar_t,
419         handle_name: *const wchar_t,
420     ) -> ResultCode;
421 }
422 extern "C" {
sbox_add_handle_to_share(policy: *mut TargetPolicy, handle: HANDLE)423     pub fn sbox_add_handle_to_share(policy: *mut TargetPolicy, handle: HANDLE);
424 }
425 extern "C" {
sbox_set_lockdown_default_dacl(policy: *mut TargetPolicy)426     pub fn sbox_set_lockdown_default_dacl(policy: *mut TargetPolicy);
427 }
428 extern "C" {
sbox_add_restricting_random_sid(policy: *mut TargetPolicy)429     pub fn sbox_add_restricting_random_sid(policy: *mut TargetPolicy);
430 }
431 extern "C" {
sbox_add_app_container_profile( policy: *mut TargetPolicy, package_name: *const wchar_t, create_profile: bool, ) -> ResultCode432     pub fn sbox_add_app_container_profile(
433         policy: *mut TargetPolicy,
434         package_name: *const wchar_t,
435         create_profile: bool,
436     ) -> ResultCode;
437 }
438 extern "C" {
sbox_get_policy_info(policy: *mut TargetPolicy) -> *mut PolicyInfo439     pub fn sbox_get_policy_info(policy: *mut TargetPolicy) -> *mut PolicyInfo;
440 }
441 extern "C" {
sbox_release_policy_info(policy_info: *mut PolicyInfo)442     pub fn sbox_release_policy_info(policy_info: *mut PolicyInfo);
443 }
444 extern "C" {
sbox_policy_info_json_string( policy_info: *mut PolicyInfo, ) -> *const ::std::os::raw::c_char445     pub fn sbox_policy_info_json_string(
446         policy_info: *mut PolicyInfo,
447     ) -> *const ::std::os::raw::c_char;
448 }
449