Fixed prototype for MmSetAddressRangeModified().
[reactos.git] / include / epsapi.h
1 /* $Id$
2 */
3 /*
4  * epsapi.h
5  *
6  * Process Status Helper API, native interface
7  *
8  * This file is part of the ReactOS Operating System.
9  *
10  * Contributors:
11  *  Created by KJK::Hyperion <noog@libero.it>
12  *
13  *  THIS SOFTWARE IS NOT COPYRIGHTED
14  *
15  *  This source code is offered for use in the public domain. You may
16  *  use, modify or distribute it freely.
17  *
18  *  This code is distributed in the hope that it will be useful but
19  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
20  *  DISCLAMED. This includes but is not limited to warranties of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
22  *
23  */
24
25 #ifndef __INTERNAL_PSAPI_H_INCLUDED__
26 #define __INTERNAL_PSAPI_H_INCLUDED__
27
28 /* INCLUDES */
29 #define NTOS_MODE_USER
30 #include <ntos.h>
31
32 /* OBJECTS */
33
34 /* TYPES */
35 typedef NTSTATUS NTAPI (*PPROC_ENUM_ROUTINE)
36 (
37  IN PSYSTEM_PROCESSES CurrentProcess,
38  IN OUT PVOID CallbackContext
39 );
40
41 typedef NTSTATUS NTAPI (*PTHREAD_ENUM_ROUTINE)
42 (
43  IN PSYSTEM_THREADS CurrentThread,
44  IN OUT PVOID CallbackContext
45 );
46
47 typedef NTSTATUS NTAPI (*PSYSMOD_ENUM_ROUTINE)
48 (
49  IN PSYSTEM_MODULE_INFORMATION_ENTRY CurrentModule,
50  IN OUT PVOID CallbackContext
51 );
52
53 typedef NTSTATUS NTAPI (*PPROCMOD_ENUM_ROUTINE)
54 (
55  IN HANDLE ProcessHandle,
56  IN PLDR_MODULE CurrentModule,
57  IN OUT PVOID CallbackContext
58 );
59
60 /* CONSTANTS */
61 #define FAILED_WITH_STATUS DEFINE_DBG_MSG("%s() failed, status 0x%08X")
62
63 /* PROTOTYPES */
64 /* Processes and threads */
65 /* enumeration */
66 NTSTATUS
67 NTAPI
68 PsaEnumerateProcessesAndThreads
69 (
70  IN PPROC_ENUM_ROUTINE ProcessCallback,
71  IN OUT PVOID ProcessCallbackContext,
72  IN PTHREAD_ENUM_ROUTINE ThreadCallback,
73  IN OUT PVOID ThreadCallbackContext
74 );
75
76 NTSTATUS
77 NTAPI
78 PsaEnumerateProcesses
79 (
80  IN PPROC_ENUM_ROUTINE Callback,
81  IN OUT PVOID CallbackContext
82 );
83
84 NTSTATUS
85 NTAPI
86 PsaEnumerateThreads
87 (
88  IN PTHREAD_ENUM_ROUTINE Callback,
89  IN OUT PVOID CallbackContext
90 );
91
92 /* capturing & walking */
93 NTSTATUS
94 NTAPI
95 PsaCaptureProcessesAndThreads
96 (
97  OUT PSYSTEM_PROCESSES * ProcessesAndThreads
98 );
99
100 NTSTATUS
101 NTAPI
102 PsaWalkProcessesAndThreads
103 (
104  IN PSYSTEM_PROCESSES ProcessesAndThreads,
105  IN PPROC_ENUM_ROUTINE ProcessCallback,
106  IN OUT PVOID ProcessCallbackContext,
107  IN PTHREAD_ENUM_ROUTINE ThreadCallback,
108  IN OUT PVOID ThreadCallbackContext
109 );
110
111 NTSTATUS
112 NTAPI
113 PsaWalkProcesses
114 (
115  IN PSYSTEM_PROCESSES ProcessesAndThreads,
116  IN PPROC_ENUM_ROUTINE Callback,
117  IN OUT PVOID CallbackContext
118 );
119
120 NTSTATUS
121 NTAPI
122 PsaWalkThreads
123 (
124  IN PSYSTEM_PROCESSES ProcessesAndThreads,
125  IN PTHREAD_ENUM_ROUTINE Callback,
126  IN OUT PVOID CallbackContext
127 );
128
129 PSYSTEM_PROCESSES
130 FASTCALL
131 PsaWalkFirstProcess
132 (
133  IN PSYSTEM_PROCESSES ProcessesAndThreads
134 );
135
136 PSYSTEM_PROCESSES
137 FASTCALL
138 PsaWalkNextProcess
139 (
140  IN PSYSTEM_PROCESSES CurrentProcess
141 );
142
143 PSYSTEM_THREADS
144 FASTCALL
145 PsaWalkFirstThread
146 (
147  IN PSYSTEM_PROCESSES CurrentProcess
148 );
149
150 PSYSTEM_THREADS
151 FASTCALL
152 PsaWalkNextThread
153 (
154  IN PSYSTEM_THREADS CurrentThread
155 );
156
157 /* System modules */
158 /* enumeration */
159 NTSTATUS
160 NTAPI
161 PsaEnumerateSystemModules
162 (
163  IN PSYSMOD_ENUM_ROUTINE Callback,
164  IN OUT PVOID CallbackContext
165 );
166
167 /* capturing & walking */
168 NTSTATUS
169 NTAPI
170 PsaCaptureSystemModules
171 (
172  OUT PSYSTEM_MODULE_INFORMATION * SystemModules
173 );
174
175 NTSTATUS
176 NTAPI
177 PsaWalkSystemModules
178 (
179  IN PSYSTEM_MODULE_INFORMATION SystemModules,
180  IN PSYSMOD_ENUM_ROUTINE Callback,
181  IN OUT PVOID CallbackContext
182 );
183
184 PSYSTEM_MODULE_INFORMATION_ENTRY
185 FASTCALL
186 PsaWalkFirstSystemModule
187 (
188  IN PSYSTEM_MODULE_INFORMATION SystemModules
189 );
190
191 PSYSTEM_MODULE_INFORMATION_ENTRY
192 FASTCALL
193 PsaWalkNextSystemModule
194 (
195  IN PSYSTEM_MODULE_INFORMATION CurrentSystemModule
196 );
197
198 /* Process modules */
199 NTSTATUS
200 NTAPI
201 PsaEnumerateProcessModules
202 (
203  IN HANDLE ProcessHandle,
204  IN PPROCMOD_ENUM_ROUTINE Callback,
205  IN OUT PVOID CallbackContext
206 );
207
208 /* Miscellaneous */
209 VOID
210 NTAPI
211 PsaFreeCapture
212 (
213  IN PVOID Capture
214 );
215
216 /* The user must define these functions. They are called by PSAPI to allocate 
217    memory. This allows PSAPI to be called from any environment */
218 void *PsaiMalloc(SIZE_T size);
219 void *PsaiRealloc(void *ptr, SIZE_T size);
220 void PsaiFree(void *ptr);
221
222 /* MACROS */
223 #define DEFINE_DBG_MSG(__str__) "PSAPI: " __str__ "\n"
224
225 #endif /* __INTERNAL_PSAPI_H_INCLUDED__ */
226
227 /* EOF */