#ifndef __INCLUDE_DDK_PSTYPES_H
#define __INCLUDE_DDK_PSTYPES_H
-#undef WIN32_LEAN_AND_MEAN
-#include <windows.h> // might be redundant
-#include <kernel32/heap.h>
#include <kernel32/atom.h>
#include <internal/hal.h>
#ifndef TLS_MINIMUM_AVAILABLE
- #define TLS_MINIMUM_AVAILABLE (64)
+#define TLS_MINIMUM_AVAILABLE (64)
#endif
#ifndef MAX_PATH
- #define MAX_PATH (260)
+#define MAX_PATH (260)
#endif
typedef NTSTATUS (*PKSTART_ROUTINE)(PVOID StartContext);
WORD NtGlobalFlag;
PPROCESSINFOW StartupInfo;
- PHEAP ProcessHeap;
+ HANDLE ProcessHeap;
ATOMTABLE LocalAtomTable;
LPCRITICAL_SECTION CriticalSection;
DWORD CriticalSectionTimeout;
HANDLE UniqueProcess;
HANDLE UniqueThread;
} CLIENT_ID, *PCLIENT_ID;
-
+
typedef struct _NT_TIB {
struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
PVOID StackBase;
typedef struct _NT_TEB
{
-
NT_TIB Tib;
CLIENT_ID Cid;
HANDLE RPCHandle;
NTSTATUS LastStatusValue;
DWORD LockCount;
UCHAR HardErrorMode;
-
} NT_TEB;
typedef struct _KTHREAD
LPTHREAD_START_ROUTINE Win32StartAddress; // Should Specify a win32 start func
UCHAR LpcExitThreadCalled;
UCHAR HardErrorsAreDisabled;
+
+
+ /*
+ * Added by David Welch (welch@cwcom.net)
+ */
+ struct _EPROCESS* OldProcess;
+
} ETHREAD, *PETHREAD;
/*
* Added by David Welch (welch@mcmail.com)
*/
- LIST_ENTRY MemoryAreaList;
- HANDLE_TABLE HandleTable;
+ LIST_ENTRY MemoryAreaList;
+ HANDLE_TABLE HandleTable;
} KPROCESS, *PKPROCESS;
typedef struct _EPROCESS
{
KPROCESS Pcb;
+
+ ULONG UniqueProcessId;
+ ULONG InheritedFromUniqueProcessId;
} EPROCESS, *PEPROCESS;
#define PROCESS_STATE_TERMINATED (1)