6 * This file is a combination of a couple different headers
7 * from ReactOS's include/ folder, and a little bit of custom
8 * hacking as well for the purpose of testing sdkparse.
10 * THIS SOFTWARE IS NOT COPYRIGHTED
12 * This source code is offered for use in the public domain. You may
13 * use, modify or distribute it freely.
15 * This code is distributed in the hope that it will be useful but
16 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
17 * DISCLAMED. This includes but is not limited to warranties of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
22 #ifndef __INTERNAL_PSAPI_H_INCLUDED__
23 #define __INTERNAL_PSAPI_H_INCLUDED__
25 void *_lfind(const void* match
, const void* start
,unsigned int* array_size
, unsigned int elem_size
,int (*cf
)(const void*,const void*));
27 static inline struct _TEB
* NtCurrentTeb(void)
31 /* FIXME: instead of hardcoded offsets, use offsetof() - if possible */
34 "movl %%fs:0x18, %0\n" /* fs:18h == Teb->Tib.Self */
35 : "=r" (pTeb
) /* can't have two memory operands */
46 } FOO
, *PFOO
, FAR
*LPFOO
;
49 #define NTOS_MODE_USER
56 LPSTR RightVolumeName
;
62 PVOID DeferredRoutine
;
63 PVOID ExclusionRoutine
;
64 PVOID DispatchRoutine
;
71 typedef NTSTATUS
NTAPI (*PPROC_ENUM_ROUTINE
)
73 IN PSYSTEM_PROCESSES CurrentProcess
,
74 IN OUT PVOID CallbackContext
77 typedef NTSTATUS
NTAPI (*PTHREAD_ENUM_ROUTINE
)
79 IN PSYSTEM_THREADS CurrentThread
,
80 IN OUT PVOID CallbackContext
83 typedef NTSTATUS
NTAPI (*PSYSMOD_ENUM_ROUTINE
)
85 IN PSYSTEM_MODULE_INFORMATION_ENTRY CurrentModule
,
86 IN OUT PVOID CallbackContext
89 typedef NTSTATUS
NTAPI (*PPROCMOD_ENUM_ROUTINE
)
91 IN HANDLE ProcessHandle
,
92 IN PLDR_MODULE CurrentModule
,
93 IN OUT PVOID CallbackContext
97 #define FAILED_WITH_STATUS DEFINE_DBG_MSG("%s() failed, status 0x%08X")
100 /* Processes and threads */
104 PsaEnumerateProcessesAndThreads
106 IN PPROC_ENUM_ROUTINE ProcessCallback
,
107 IN OUT PVOID ProcessCallbackContext
,
108 IN PTHREAD_ENUM_ROUTINE ThreadCallback
,
109 IN OUT PVOID ThreadCallbackContext
114 PsaEnumerateProcesses
116 IN PPROC_ENUM_ROUTINE Callback
,
117 IN OUT PVOID CallbackContext
124 IN PTHREAD_ENUM_ROUTINE Callback
,
125 IN OUT PVOID CallbackContext
128 /* capturing & walking */
131 PsaCaptureProcessesAndThreads
133 OUT PSYSTEM_PROCESSES
* ProcessesAndThreads
138 PsaWalkProcessesAndThreads
140 IN PSYSTEM_PROCESSES ProcessesAndThreads
,
141 IN PPROC_ENUM_ROUTINE ProcessCallback
,
142 IN OUT PVOID ProcessCallbackContext
,
143 IN PTHREAD_ENUM_ROUTINE ThreadCallback
,
144 IN OUT PVOID ThreadCallbackContext
151 IN PSYSTEM_PROCESSES ProcessesAndThreads
,
152 IN PPROC_ENUM_ROUTINE Callback
,
153 IN OUT PVOID CallbackContext
160 IN PSYSTEM_PROCESSES ProcessesAndThreads
,
161 IN PTHREAD_ENUM_ROUTINE Callback
,
162 IN OUT PVOID CallbackContext
169 IN PSYSTEM_PROCESSES ProcessesAndThreads
176 IN PSYSTEM_PROCESSES CurrentProcess
183 IN PSYSTEM_PROCESSES CurrentProcess
190 IN PSYSTEM_THREADS CurrentThread
197 PsaEnumerateSystemModules
199 IN PSYSMOD_ENUM_ROUTINE Callback
,
200 IN OUT PVOID CallbackContext
203 /* capturing & walking */
206 PsaCaptureSystemModules
208 OUT PSYSTEM_MODULE_INFORMATION
* SystemModules
215 IN PSYSTEM_MODULE_INFORMATION SystemModules
,
216 IN PSYSMOD_ENUM_ROUTINE Callback
,
217 IN OUT PVOID CallbackContext
220 PSYSTEM_MODULE_INFORMATION_ENTRY
222 PsaWalkFirstSystemModule
224 IN PSYSTEM_MODULE_INFORMATION SystemModules
227 PSYSTEM_MODULE_INFORMATION_ENTRY
229 PsaWalkNextSystemModule
231 IN PSYSTEM_MODULE_INFORMATION CurrentSystemModule
234 /* Process modules */
237 PsaEnumerateProcessModules
239 IN HANDLE ProcessHandle
,
240 IN PPROCMOD_ENUM_ROUTINE Callback
,
241 IN OUT PVOID CallbackContext
252 /* The user must define these functions. They are called by PSAPI to allocate
253 memory. This allows PSAPI to be called from any environment */
254 void *PsaiMalloc(SIZE_T size
);
255 void *PsaiRealloc(void *ptr
, SIZE_T size
);
256 void PsaiFree(void *ptr
);
259 #define DEFINE_DBG_MSG(__str__) "PSAPI: " __str__ "\n"
261 #endif /* __INTERNAL_PSAPI_H_INCLUDED__ */