1 // Copyright © 2015, skdltmxn 2 // Licensed under the MIT License <LICENSE.md> 3 //! Defines the process snapshot API 4 FLAGS!{enum PSS_CAPTURE_FLAGS { 5 PSS_CAPTURE_NONE = 0x00000000, 6 PSS_CAPTURE_VA_CLONE = 0x00000001, 7 PSS_CAPTURE_RESERVED_00000002 = 0x00000002, 8 PSS_CAPTURE_HANDLES = 0x00000004, 9 PSS_CAPTURE_HANDLE_NAME_INFORMATION = 0x00000008, 10 PSS_CAPTURE_HANDLE_BASIC_INFORMATION = 0x00000010, 11 PSS_CAPTURE_HANDLE_TYPE_SPECIFIC_INFORMATION = 0x00000020, 12 PSS_CAPTURE_HANDLE_TRACE = 0x00000040, 13 PSS_CAPTURE_THREADS = 0x00000080, 14 PSS_CAPTURE_THREAD_CONTEXT = 0x00000100, 15 PSS_CAPTURE_THREAD_CONTEXT_EXTENDED = 0x00000200, 16 PSS_CAPTURE_RESERVED_00000400 = 0x00000400, 17 PSS_CAPTURE_VA_SPACE = 0x00000800, 18 PSS_CAPTURE_VA_SPACE_SECTION_INFORMATION = 0x00001000, 19 PSS_CREATE_BREAKAWAY_OPTIONAL = 0x04000000, 20 PSS_CREATE_BREAKAWAY = 0x08000000, 21 PSS_CREATE_FORCE_BREAKAWAY = 0x10000000, 22 PSS_CREATE_USE_VM_ALLOCATIONS = 0x20000000, 23 PSS_CREATE_MEASURE_PERFORMANCE = 0x40000000, 24 PSS_CREATE_RELEASE_SECTION = -2147483648i32 as u32, 25 }} 26 ENUM!{enum PSS_QUERY_INFORMATION_CLASS { 27 PSS_QUERY_PROCESS_INFORMATION = 0, 28 PSS_QUERY_VA_CLONE_INFORMATION = 1, 29 PSS_QUERY_AUXILIARY_PAGES_INFORMATION = 2, 30 PSS_QUERY_VA_SPACE_INFORMATION = 3, 31 PSS_QUERY_HANDLE_INFORMATION = 4, 32 PSS_QUERY_THREAD_INFORMATION = 5, 33 PSS_QUERY_HANDLE_TRACE_INFORMATION = 6, 34 PSS_QUERY_PERFORMANCE_COUNTERS = 7, 35 }} 36 ENUM!{enum PSS_WALK_INFORMATION_CLASS { 37 PSS_WALK_AUXILIARY_PAGES = 0, 38 PSS_WALK_VA_SPACE = 1, 39 PSS_WALK_HANDLES = 2, 40 PSS_WALK_THREADS = 3, 41 }} 42 FLAGS!{enum PSS_DUPLICATE_FLAGS { 43 PSS_DUPLICATE_NONE = 0x00, 44 PSS_DUPLICATE_CLOSE_SOURCE = 0x01, 45 }} 46 DECLARE_HANDLE!(HPSS, HPSS__); 47 DECLARE_HANDLE!(HPSSWALK, HPSSWALK__); 48 pub type pAllocRoutine = Option<unsafe extern "system" fn( 49 Context: *mut ::c_void, Size: ::DWORD, 50 ) -> *mut ::c_void>; 51 pub type pFreeRoutine = Option<unsafe extern "system" fn( 52 Context: *mut ::c_void, Address: *mut ::c_void, 53 )>; 54 STRUCT!{nodebug struct PSS_ALLOCATOR { 55 Context: *mut ::c_void, 56 AllocRoutine: pAllocRoutine, 57 FreeRoutine: pFreeRoutine, 58 }} 59