; vim:ts=16 sw=4 =memory 0xffffc800 KDATA =structs !HANDLE hd HDATA ; special deref !CINFO acName char4 disp BYTE type BYTE cMethods WORD ppfnmethods DWORD pdwSig DWORD pServer *PROCESS !HDATA fwd DWORD back DWORD hValue HANDLE lock DWORD ref DWORD pci *CINFO pvObj DWORD ; special deref dwInfo DWORD !BYTE !PROXY !DWORD !WSTR !PROCESS procnum BYTE ; /* 00: ID of this process [ie: it's slot number] */ DbgActive BYTE ; /* 01: ID of process currently DebugActiveProcess'ing this process */ bChainDebug BYTE ; /* 02: Did the creator want to debug child processes? */ bTrustLevel BYTE ; /* 03: level of trust of this exe */ pProxList *PROXY ; /* 04: list of proxies to threads blocked on this process */ hProc DWORD ; /* 08: handle for this process, needed only for SC_GetProcFromPtr */ dwVMBase DWORD ; /* 0C: base of process's memory section, or 0 if not in use */ pTh *THREAD ; /* 10: first thread in this process */ aky DWORD ; /* 14: default address space key for process's threads */ BasePtr DWORD ; /* 18: Base pointer of exe load */ hDbgrThrd DWORD ; /* 1C: handle of thread debugging this process, if any */ lpszProcName *WSTR ; /* 20: name of process */ tlsLowUsed DWORD ; /* 24: TLS in use bitmask (first 32 slots) */ tlsHighUsed DWORD ; /* 28: TLS in use bitmask (second 32 slots) */ pfnEH DWORD ; /* 2C: process exception handler */ ZonePtr DWORD ; /* 30: Debug zone pointer */ pMainTh *THREAD ; /* 34 primary thread in this process*/ pmodResource *Module ; /* 38: module that contains the resources */ pStdNames [3]*Name ; /* 3C: Pointer to names for stdio */ pcmdline *WSTR ; /* 48: Pointer to command line */ dwDyingThreads DWORD ; /* 4C: number of pending dying threads */ oe openexe_t ; /* 50: Pointer to executable file handle */ e32 e32_lite ; /* 60: structure containing exe header */ o32_ptr *o32_lite ; /* b4: o32 array pointer for exe */ pExtPdata DWORD ; /* b8: extend pdata */ bPrio BYTE ; /* bc: highest priority of all threads of the process */ fNoDebug BYTE ; /* bd: this process cannot be debugged */ wModCount WORD ; /* be: padding */ pgqueue PGPOOL_Q ; /* c0: list of the page owned by the process */ pLastModList *MODULELIST ; /* c4: the list of modules that just loaded/unloaded into the process */ hTok HANDLE ; /* c8: process default token */ #define HARDWARE_PT_PER_PROC 8 pPTBL [HARDWARE_PT_PER_PROC]DWORD ; /* cc: hardware page tables */ pShimInfo LPVOID ; /* ec: pointer to shim information */ !KDATA lpvTls DWORD ; // 0xFFFFC800 Current thread local storage pointer ahSys [32]DWORD ; // 0xFFFFC804 //ahSys_W32 DWORD // 0xFFFFC804 //hCurThread DWORD // 0xFFFFC808 //hCurProc DWORD // 0xFFFFC80C bResched BYTE ; // 0xFFFFC884 reschedule flag cNest BYTE ; // 0xFFFFC885 kernel exception nesting bPowerOff BYTE ; // 0xFFFFC886 TRUE during "power off" processing bProfileOn BYTE ; // 0xFFFFC887 TRUE if profiling enabled unused DWORD ; // 0xFFFFC888 rsvd2 DWORD ; // 0xFFFFC88C was DiffMSec pCurPrc *PROCESS ; // 0xFFFFC890 ptr to current PROCESS struct pCurThd *THREAD ; // 0xFFFFC894 ptr to current THREAD struct dwKCRes DWORD ; // 0xFFFFC898 handleBase DWORD ; // 0xFFFFC89C handle table base address aSections [64]*SECTION ; // 0xFFFFC8A0 section table for virutal memory alpeIntrEvents [64]*EVENT ;// 0xFFFFC9A0 alpvIntrData [64]*EVENT ; // 0xFFFFCA20 pAPIReturn DWORD ; // 0xFFFFCAA0 direct API return address for kernel mode pMap DWORD ; // 0xFFFFCAA4 ptr to MemoryMap array dwInDebugger DWORD ; // 0xFFFFCAA8 !0 when in debugger pCurFPUOwner *DTHREAD ; // 0xFFFFCAAC current FPU owner pCpuASIDPrc *PROCESS ; // 0xFFFFCAB0 current ASID proc nMemForPT DWORD ; // 0xFFFFCAB4 Memory used for PageTables alPad [18]DWORD ; // 0xFFFFCAB8 KINX_PROCARRAY *PROCESSARRAY ; // 0xFFFFCB00 address of process array KINX_PAGESIZE DWORD ; // 0xFFFFCB04 system page size KINX_PFN_SHIFT DWORD ; // 0xFFFFCB08 shift for page # in PTE KINX_PFN_MASK DWORD ; // 0xFFFFCB0C mask for page # in PTE KINX_PAGEFREE DWORD ; // 0xFFFFCB10 # of free physical pages KINX_SYSPAGES DWORD ; // 0xFFFFCB14 # of pages used by kernel KINX_KHEAP *KHEAPARRAY ; // 0xFFFFCB18 ptr to kernel heap array KINX_SECTIONS *SECTIONARRAY ; // 0xFFFFCB1C ptr to SectionTable array KINX_MEMINFO *MEMINFO ; // 0xFFFFCB20 ptr to system MemoryInfo struct KINX_MODULES *MODULE ; // 0xFFFFCB24 ptr to module list KINX_DLL_LOW DWORD ; // 0xFFFFCB28 lower bound of DLL shared space KINX_NUMPAGES DWORD ; // 0xFFFFCB2C total # of RAM pages KINX_PTOC *ROMHDR ; // 0xFFFFCB30 ptr to ROM table of contents points to ROMHDR struct KINX_KDATA_ADDR DWORD ; // 0xFFFFCB34 kernel mode version of KData KINX_GWESHEAPINFO DWORD ; // 0xFFFFCB38 Current amount of gwes heap in use KINX_TIMEZONEBIAS DWORD ; // 0xFFFFCB3C Fast timezone bias info KINX_PENDEVENTS DWORD ; // 0xFFFFCB40 bit mask for pending interrupt events KINX_KERNRESERVE DWORD ; // 0xFFFFCB44 number of kernel reserved pages KINX_API_MASK DWORD ; // 0xFFFFCB48 bit mask for registered api sets KINX_NLS_CP DWORD ; // 0xFFFFCB4C hiword OEM code page, loword ANSI code page KINX_NLS_SYSLOC DWORD ; // 0xFFFFCB50 Default System locale KINX_NLS_USERLOC DWORD ; // 0xFFFFCB54 Default User locale KINX_HEAP_WASTE DWORD ; // 0xFFFFCB58 Kernel heap wasted space KINX_DEBUGGER DWORD ; // 0xFFFFCB5C For use by debugger for protocol communication KINX_APISETS *APISETARRAY ; // 0xFFFFCB60 APIset pointers KINX_MINPAGEFREE DWORD ; // 0xFFFFCB64 water mark of the minimum number of free pages KINX_CELOGSTATUS DWORD ; // 0xFFFFCB68 CeLog status flags KINX_NKSECTION *SECTION ; // 0xFFFFCB6C Address of NKSection KINX_PWR_EVTS DWORD ; // 0xFFFFCB70 Events to be set after power on KINX_29 DWORD ; // 0xFFFFCB74 KINX_30 DWORD ; // 0xFFFFCB78 KINX_NKSIG DWORD ; // 0xFFFFCB7C last entry of KINFO -- signature when NK is ready =cinfo # cinfotag type PROC PROCESS THRD THREAD EVNT EVENT