/* INCLUDES ******************************************************************/
-#include <ddk/ntddk.h>
+#define NTOS_MODE_KERNEL
+#include <ntos.h>
#include <internal/ntoskrnl.h>
#include <internal/ke.h>
#include <internal/ps.h>
#define NDEBUG
#include <internal/debug.h>
-#include <ddk/service.h>
-#include <ddk/defines.h>
#include <internal/ps.h>
/* FUNCTIONS *****************************************************************/
return(NtStatus);
}
+
+VOID KiServiceCheck (ULONG Nr)
+{
+ PETHREAD Thread;
+
+ Thread = PsGetCurrentThread();
+
+#if 0
+ DbgPrint ("KiServiceCheck(%p) called\n", Thread);
+ DbgPrint ("Service %d (%p)\n", Nr, KeServiceDescriptorTableShadow[1].SSDT[Nr].SysCallPtr);
+#endif
+
+ if (Thread->Tcb.ServiceTable != KeServiceDescriptorTableShadow)
+ {
+#if 0
+ DbgPrint ("Initialize Win32 thread\n");
+#endif
+
+ PsInitWin32Thread (Thread);
+
+ Thread->Tcb.ServiceTable = KeServiceDescriptorTableShadow;
+ }
+}
+
// This function should be used by win32k.sys to add its own user32/gdi32 services
// TableIndex is 0 based
// ServiceCountTable its not used at the moment
+/*
+ * @implemented
+ */
BOOLEAN STDCALL
KeAddSystemServiceTable (
PSSDT SSDT,