1 /* $Id: dllmain.c,v 1.30 2002/09/17 23:43:28 dwelch Exp $
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 return STATUS_SUCCESS
;
100 W32kInitialize (VOID
)
102 DPRINT("in W32kInitialize\n");
103 InitGdiObjectHandleTable ();
105 // Create surface used to draw the internal font onto
106 CreateCellCharSurface();
108 // Create stock objects, ie. precreated objects commonly used by win32 applications
109 CreateStockObjects();
111 // Initialize FreeType library
112 if(!InitFontSupport()) return FALSE
;