6 * Process Status Helper API, native interface
8 * This file is part of the ReactOS Operating System.
11 * Created by KJK::Hyperion <noog@libero.it>
13 * THIS SOFTWARE IS NOT COPYRIGHTED
15 * This source code is offered for use in the public domain. You may
16 * use, modify or distribute it freely.
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.
25 #ifndef __INTERNAL_PSAPI_H_INCLUDED__
26 #define __INTERNAL_PSAPI_H_INCLUDED__
29 #define NTOS_MODE_USER
35 typedef NTSTATUS NTAPI (*PPROC_ENUM_ROUTINE)
37 IN PSYSTEM_PROCESSES CurrentProcess,
38 IN OUT PVOID CallbackContext
41 typedef NTSTATUS NTAPI (*PTHREAD_ENUM_ROUTINE)
43 IN PSYSTEM_THREADS CurrentThread,
44 IN OUT PVOID CallbackContext
47 typedef NTSTATUS NTAPI (*PSYSMOD_ENUM_ROUTINE)
49 IN PSYSTEM_MODULE_INFORMATION_ENTRY CurrentModule,
50 IN OUT PVOID CallbackContext
53 typedef NTSTATUS NTAPI (*PPROCMOD_ENUM_ROUTINE)
55 IN HANDLE ProcessHandle,
56 IN PLDR_MODULE CurrentModule,
57 IN OUT PVOID CallbackContext
61 #define FAILED_WITH_STATUS DEFINE_DBG_MSG("%s() failed, status 0x%08X")
64 /* Processes and threads */
68 PsaEnumerateProcessesAndThreads
70 IN PPROC_ENUM_ROUTINE ProcessCallback,
71 IN OUT PVOID ProcessCallbackContext,
72 IN PTHREAD_ENUM_ROUTINE ThreadCallback,
73 IN OUT PVOID ThreadCallbackContext
80 IN PPROC_ENUM_ROUTINE Callback,
81 IN OUT PVOID CallbackContext
88 IN PTHREAD_ENUM_ROUTINE Callback,
89 IN OUT PVOID CallbackContext
92 /* capturing & walking */
95 PsaCaptureProcessesAndThreads
97 OUT PSYSTEM_PROCESSES * ProcessesAndThreads
102 PsaWalkProcessesAndThreads
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
115 IN PSYSTEM_PROCESSES ProcessesAndThreads,
116 IN PPROC_ENUM_ROUTINE Callback,
117 IN OUT PVOID CallbackContext
124 IN PSYSTEM_PROCESSES ProcessesAndThreads,
125 IN PTHREAD_ENUM_ROUTINE Callback,
126 IN OUT PVOID CallbackContext
133 IN PSYSTEM_PROCESSES ProcessesAndThreads
140 IN PSYSTEM_PROCESSES CurrentProcess
147 IN PSYSTEM_PROCESSES CurrentProcess
154 IN PSYSTEM_THREADS CurrentThread
161 PsaEnumerateSystemModules
163 IN PSYSMOD_ENUM_ROUTINE Callback,
164 IN OUT PVOID CallbackContext
167 /* capturing & walking */
170 PsaCaptureSystemModules
172 OUT PSYSTEM_MODULE_INFORMATION * SystemModules
179 IN PSYSTEM_MODULE_INFORMATION SystemModules,
180 IN PSYSMOD_ENUM_ROUTINE Callback,
181 IN OUT PVOID CallbackContext
184 PSYSTEM_MODULE_INFORMATION_ENTRY
186 PsaWalkFirstSystemModule
188 IN PSYSTEM_MODULE_INFORMATION SystemModules
191 PSYSTEM_MODULE_INFORMATION_ENTRY
193 PsaWalkNextSystemModule
195 IN PSYSTEM_MODULE_INFORMATION CurrentSystemModule
198 /* Process modules */
201 PsaEnumerateProcessModules
203 IN HANDLE ProcessHandle,
204 IN PPROCMOD_ENUM_ROUTINE Callback,
205 IN OUT PVOID CallbackContext
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);
223 #define DEFINE_DBG_MSG(__str__) "PSAPI: " __str__ "\n"
225 #endif /* __INTERNAL_PSAPI_H_INCLUDED__ */