3 * Entry Point for win32k.sys
6 #undef WIN32_LEAN_AND_MEAN
7 #define WIN32_NO_STATUS
10 #include <ddk/winddi.h>
11 #include <ddk/service.h>
13 #include <napi/win32.h>
14 #include <win32k/win32k.h>
16 #include <include/winsta.h>
17 #include <include/class.h>
18 #include <include/window.h>
21 #include <win32k/debug1.h>
23 extern SSDT Win32kSSDT[];
24 extern SSPT Win32kSSPT[];
25 extern ULONG Win32kNumberOfSysCalls;
28 * This definition doesn't work
30 // WINBOOL STDCALL DllMain(VOID)
34 IN PDRIVER_OBJECT DriverObject,
35 IN PUNICODE_STRING RegistryPath)
41 * Register user mode call interface
42 * (system service table index = 1)
44 Result = KeAddSystemServiceTable (Win32kSSDT, NULL,
45 Win32kNumberOfSysCalls, Win32kSSPT, 1);
48 DbgPrint("Adding system services failed!\n");
49 return STATUS_UNSUCCESSFUL;
53 * Register our per-process and per-thread structures.
55 PsEstablishWin32Callouts(0, 0, 0, 0, sizeof(W32THREAD), sizeof(W32PROCESS));
57 WinPosSetupInternalPos();
59 Status = InitWindowStationImpl();
60 if (!NT_SUCCESS(Status))
62 DbgPrint("Failed to initialize window station implementation!\n");
63 return STATUS_UNSUCCESSFUL;
66 Status = InitClassImpl();
67 if (!NT_SUCCESS(Status))
69 DbgPrint("Failed to initialize window class implementation!\n");
70 return STATUS_UNSUCCESSFUL;
73 Status = InitWindowImpl();
74 if (!NT_SUCCESS(Status))
76 DbgPrint("Failed to initialize window implementation!\n");
77 return STATUS_UNSUCCESSFUL;
80 Status = InitInputImpl();
81 if (!NT_SUCCESS(Status))
83 DbgPrint("Failed to initialize input implementation.\n");
87 Status = MsqInitializeImpl();
88 if (!NT_SUCCESS(Status))
90 DbgPrint("Failed to initialize message queue implementation.\n");
94 Status = InitTimerImpl();
95 if (!NT_SUCCESS(Status))
97 DbgPrint("Failed to initialize timer implementation.\n");
101 return STATUS_SUCCESS;
104 PEPROCESS W32kDeviceProcess;
108 W32kInitialize (VOID)
110 DPRINT("in W32kInitialize\n");
112 W32kDeviceProcess = PsGetCurrentProcess();
114 InitGdiObjectHandleTable ();
116 // Create surface used to draw the internal font onto
118 CreateCellCharSurface();
121 // Initialize FreeType library
122 if(!InitFontSupport()) return FALSE;
124 // Create stock objects, ie. precreated objects commonly used by win32 applications
125 CreateStockObjects();