Something went wrong. Try again.
Reactos
Something went wrong. Try again.
C
at listview
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262/* * test.h * * This file is a combination of a couple different headers * from ReactOS's include/ folder, and a little bit of custom * hacking as well for the purpose of testing sdkparse. * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */
#ifndef __INTERNAL_PSAPI_H_INCLUDED__#define __INTERNAL_PSAPI_H_INCLUDED__
void *_lfind(const void* match, const void* start,unsigned int* array_size, unsigned int elem_size,int (*cf)(const void*,const void*));
static inline struct _TEB * NtCurrentTeb(void){ struct _TEB * pTeb;
/* FIXME: instead of hardcoded offsets, use offsetof() - if possible */ __asm__ __volatile__ ( "movl %%fs:0x18, %0\n" /* fs:18h == Teb->Tib.Self */ : "=r" (pTeb) /* can't have two memory operands */ : /* no inputs */ );
return pTeb;}
typedef struct tagFOO{ INT lonibble : 4; INT hinibble : 4;} FOO, *PFOO, FAR *LPFOO;
/* INCLUDES */#define NTOS_MODE_USER#include <ntos.h>
/* OBJECTS */typedef struct{ LPSTR LeftVolumeName; LPSTR RightVolumeName; ULONG DefaultVolume; ULONG Type; ULONG DeviceType; char Key[4]; LPSTR PrototypeName; PVOID DeferredRoutine; PVOID ExclusionRoutine; PVOID DispatchRoutine; PVOID DevCapsRoutine; PVOID HwSetVolume; ULONG IoMethod;}SOUND_DEVICE_INIT;
/* TYPES */typedef NTSTATUS NTAPI (*PPROC_ENUM_ROUTINE)( IN PSYSTEM_PROCESSES CurrentProcess, IN OUT PVOID CallbackContext);
typedef NTSTATUS NTAPI (*PTHREAD_ENUM_ROUTINE)( IN PSYSTEM_THREADS CurrentThread, IN OUT PVOID CallbackContext);
typedef NTSTATUS NTAPI (*PSYSMOD_ENUM_ROUTINE)( IN PSYSTEM_MODULE_INFORMATION_ENTRY CurrentModule, IN OUT PVOID CallbackContext);
typedef NTSTATUS NTAPI (*PPROCMOD_ENUM_ROUTINE)( IN HANDLE ProcessHandle, IN PLDR_DATA_TABLE_ENTRY CurrentModule, IN OUT PVOID CallbackContext);
/* CONSTANTS */#define FAILED_WITH_STATUS DEFINE_DBG_MSG("%s() failed, status 0x%08X")
/* PROTOTYPES *//* Processes and threads *//* enumeration */NTSTATUSNTAPIPsaEnumerateProcessesAndThreads( IN PPROC_ENUM_ROUTINE ProcessCallback, IN OUT PVOID ProcessCallbackContext, IN PTHREAD_ENUM_ROUTINE ThreadCallback, IN OUT PVOID ThreadCallbackContext);
NTSTATUSNTAPIPsaEnumerateProcesses( IN PPROC_ENUM_ROUTINE Callback, IN OUT PVOID CallbackContext);
NTSTATUSNTAPIPsaEnumerateThreads( IN PTHREAD_ENUM_ROUTINE Callback, IN OUT PVOID CallbackContext);
/* capturing & walking */NTSTATUSNTAPIPsaCaptureProcessesAndThreads( OUT PSYSTEM_PROCESSES * ProcessesAndThreads);
NTSTATUSNTAPIPsaWalkProcessesAndThreads( IN PSYSTEM_PROCESSES ProcessesAndThreads, IN PPROC_ENUM_ROUTINE ProcessCallback, IN OUT PVOID ProcessCallbackContext, IN PTHREAD_ENUM_ROUTINE ThreadCallback, IN OUT PVOID ThreadCallbackContext);
NTSTATUSNTAPIPsaWalkProcesses( IN PSYSTEM_PROCESSES ProcessesAndThreads, IN PPROC_ENUM_ROUTINE Callback, IN OUT PVOID CallbackContext);
NTSTATUSNTAPIPsaWalkThreads( IN PSYSTEM_PROCESSES ProcessesAndThreads, IN PTHREAD_ENUM_ROUTINE Callback, IN OUT PVOID CallbackContext);
PSYSTEM_PROCESSESFASTCALLPsaWalkFirstProcess( IN PSYSTEM_PROCESSES ProcessesAndThreads);
PSYSTEM_PROCESSESFASTCALLPsaWalkNextProcess( IN PSYSTEM_PROCESSES CurrentProcess);
PSYSTEM_THREADSFASTCALLPsaWalkFirstThread( IN PSYSTEM_PROCESSES CurrentProcess);
PSYSTEM_THREADSFASTCALLPsaWalkNextThread( IN PSYSTEM_THREADS CurrentThread);
/* System modules *//* enumeration */NTSTATUSNTAPIPsaEnumerateSystemModules( IN PSYSMOD_ENUM_ROUTINE Callback, IN OUT PVOID CallbackContext);
/* capturing & walking */NTSTATUSNTAPIPsaCaptureSystemModules( OUT PSYSTEM_MODULE_INFORMATION * SystemModules);
NTSTATUSNTAPIPsaWalkSystemModules( IN PSYSTEM_MODULE_INFORMATION SystemModules, IN PSYSMOD_ENUM_ROUTINE Callback, IN OUT PVOID CallbackContext);
PSYSTEM_MODULE_INFORMATION_ENTRYFASTCALLPsaWalkFirstSystemModule( IN PSYSTEM_MODULE_INFORMATION SystemModules);
PSYSTEM_MODULE_INFORMATION_ENTRYFASTCALLPsaWalkNextSystemModule( IN PSYSTEM_MODULE_INFORMATION CurrentSystemModule);
/* Process modules */NTSTATUSNTAPIPsaEnumerateProcessModules( IN HANDLE ProcessHandle, IN PPROCMOD_ENUM_ROUTINE Callback, IN OUT PVOID CallbackContext);
/* Miscellaneous */VOIDNTAPIPsaFreeCapture( IN PVOID Capture);
/* The user must define these functions. They are called by PSAPI to allocate memory. This allows PSAPI to be called from any environment */void *PsaiMalloc(SIZE_T size);void *PsaiRealloc(void *ptr, SIZE_T size);void PsaiFree(void *ptr);
/* MACROS */#define DEFINE_DBG_MSG(__str__) "PSAPI: " __str__ "\n"
#endif /* __INTERNAL_PSAPI_H_INCLUDED__ */
/* EOF */