]> git.proxmox.com Git - cargo.git/blob - vendor/winapi-0.3.3/src/um/processsnapshot.rs
New upstream version 0.24.0
[cargo.git] / vendor / winapi-0.3.3 / src / um / processsnapshot.rs
1 // Copyright © 2015-2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 //! Defines the process snapshot API
8 use ctypes::c_void;
9 use shared::basetsd::ULONG_PTR;
10 use shared::minwindef::DWORD;
11 use um::winnt::HANDLE;
12 ENUM!{enum PSS_CAPTURE_FLAGS {
13 PSS_CAPTURE_NONE = 0x00000000,
14 PSS_CAPTURE_VA_CLONE = 0x00000001,
15 PSS_CAPTURE_RESERVED_00000002 = 0x00000002,
16 PSS_CAPTURE_HANDLES = 0x00000004,
17 PSS_CAPTURE_HANDLE_NAME_INFORMATION = 0x00000008,
18 PSS_CAPTURE_HANDLE_BASIC_INFORMATION = 0x00000010,
19 PSS_CAPTURE_HANDLE_TYPE_SPECIFIC_INFORMATION = 0x00000020,
20 PSS_CAPTURE_HANDLE_TRACE = 0x00000040,
21 PSS_CAPTURE_THREADS = 0x00000080,
22 PSS_CAPTURE_THREAD_CONTEXT = 0x00000100,
23 PSS_CAPTURE_THREAD_CONTEXT_EXTENDED = 0x00000200,
24 PSS_CAPTURE_RESERVED_00000400 = 0x00000400,
25 PSS_CAPTURE_VA_SPACE = 0x00000800,
26 PSS_CAPTURE_VA_SPACE_SECTION_INFORMATION = 0x00001000,
27 PSS_CREATE_BREAKAWAY_OPTIONAL = 0x04000000,
28 PSS_CREATE_BREAKAWAY = 0x08000000,
29 PSS_CREATE_FORCE_BREAKAWAY = 0x10000000,
30 PSS_CREATE_USE_VM_ALLOCATIONS = 0x20000000,
31 PSS_CREATE_MEASURE_PERFORMANCE = 0x40000000,
32 PSS_CREATE_RELEASE_SECTION = -2147483648i32 as u32,
33 }}
34 ENUM!{enum PSS_QUERY_INFORMATION_CLASS {
35 PSS_QUERY_PROCESS_INFORMATION = 0,
36 PSS_QUERY_VA_CLONE_INFORMATION = 1,
37 PSS_QUERY_AUXILIARY_PAGES_INFORMATION = 2,
38 PSS_QUERY_VA_SPACE_INFORMATION = 3,
39 PSS_QUERY_HANDLE_INFORMATION = 4,
40 PSS_QUERY_THREAD_INFORMATION = 5,
41 PSS_QUERY_HANDLE_TRACE_INFORMATION = 6,
42 PSS_QUERY_PERFORMANCE_COUNTERS = 7,
43 }}
44 ENUM!{enum PSS_WALK_INFORMATION_CLASS {
45 PSS_WALK_AUXILIARY_PAGES = 0,
46 PSS_WALK_VA_SPACE = 1,
47 PSS_WALK_HANDLES = 2,
48 PSS_WALK_THREADS = 3,
49 }}
50 ENUM!{enum PSS_DUPLICATE_FLAGS {
51 PSS_DUPLICATE_NONE = 0x00,
52 PSS_DUPLICATE_CLOSE_SOURCE = 0x01,
53 }}
54 DECLARE_HANDLE!(HPSS, HPSS__);
55 DECLARE_HANDLE!(HPSSWALK, HPSSWALK__);
56 FN!{stdcall pAllocRoutine(
57 Context: *mut c_void,
58 Size: DWORD,
59 ) -> *mut c_void}
60 FN!{stdcall pFreeRoutine(
61 Context: *mut c_void,
62 Address: *mut c_void,
63 ) -> ()}
64 STRUCT!{struct PSS_ALLOCATOR {
65 Context: *mut c_void,
66 AllocRoutine: pAllocRoutine,
67 FreeRoutine: pFreeRoutine,
68 }}
69 extern "system" {
70 pub fn PssCaptureSnapshot(
71 ProcessHandle: HANDLE,
72 CaptureFlags: PSS_CAPTURE_FLAGS,
73 ThreadContextFlags: DWORD,
74 SnapshotHandle: *mut HPSS,
75 ) -> DWORD;
76 pub fn PssDuplicateSnapshot(
77 SourceProcessHandle: HANDLE,
78 SnapshotHandle: HPSS,
79 TargetProcessHandle: HANDLE,
80 TargetSnapshotHandle: *mut HPSS,
81 Flags: PSS_DUPLICATE_FLAGS,
82 ) -> DWORD;
83 pub fn PssFreeSnapshot(
84 ProcessHandle: HANDLE,
85 SnapshotHandle: HPSS
86 ) -> DWORD;
87 pub fn PssQuerySnapshot(
88 SnapshotHandle: HPSS,
89 InformationClass: PSS_QUERY_INFORMATION_CLASS,
90 Buffer: *mut c_void,
91 BufferLength: DWORD,
92 ) -> DWORD;
93 pub fn PssWalkMarkerCreate(
94 Allocator: *const PSS_ALLOCATOR,
95 WalkMarkerHandle: *mut HPSSWALK,
96 ) -> DWORD;
97 pub fn PssWalkMarkerFree(
98 WalkMarkerHandle: HPSSWALK
99 ) -> DWORD;
100 pub fn PssWalkMarkerGetPosition(
101 WalkMarkerHandle: HPSSWALK,
102 Position: *mut ULONG_PTR
103 ) -> DWORD;
104 // pub fn PssWalkMarkerRewind();
105 // pub fn PssWalkMarkerSeek();
106 pub fn PssWalkMarkerSeekToBeginning(
107 WalkMarkerHandle: HPSS
108 ) -> DWORD;
109 pub fn PssWalkMarkerSetPosition(
110 WalkMarkerHandle: HPSSWALK,
111 Position: ULONG_PTR
112 ) -> DWORD;
113 // pub fn PssWalkMarkerTell();
114 pub fn PssWalkSnapshot(
115 SnapshotHandle: HPSS,
116 InformationClass: PSS_WALK_INFORMATION_CLASS,
117 WalkMarkerHandle: HPSSWALK,
118 Buffer: *mut c_void,
119 BufferLength: DWORD,
120 ) -> DWORD;
121 }