3 #include <user32/callback.h>
7 /* See debug.h for debug/trace constants */
8 DWORD DebugTraceLevel
= MIN_TRACE
;
12 /* To make the linker happy */
13 VOID STDCALL
KeBugCheck (ULONG BugCheckCode
) {}
16 HWINSTA ProcessWindowStation
;
19 User32AllocHeap(ULONG Size
)
21 return(RtlAllocateHeap(ProcessHeap
, HEAP_ZERO_MEMORY
, Size
));
25 User32FreeHeap(PVOID Block
)
27 RtlFreeHeap(ProcessHeap
, 0, Block
);
31 User32ConvertString(PCSTR String
)
34 UNICODE_STRING OutString
;
35 RtlInitAnsiString(&InString
, String
);
36 RtlAnsiStringToUnicodeString(&OutString
, &InString
, TRUE
);
37 return(OutString
.Buffer
);
41 User32FreeString(PWSTR String
)
43 RtlFreeHeap(RtlGetProcessHeap(), 0, String
);
51 ProcessHeap
= RtlGetProcessHeap();
53 /* Set up the kernel callbacks. */
54 NtCurrentPeb()->KernelCallbackTable
[USER32_CALLBACK_WINDOWPROC
] =
55 (PVOID
)User32CallWindowProcFromKernel
;
56 NtCurrentPeb()->KernelCallbackTable
[USER32_CALLBACK_SENDASYNCPROC
] =
57 (PVOID
)User32CallSendAsyncProcForKernel
;
58 NtCurrentPeb()->KernelCallbackTable
[USER32_CALLBACK_SENDNCCREATE
] =
59 (PVOID
)User32SendNCCREATEMessageForKernel
;
60 NtCurrentPeb()->KernelCallbackTable
[USER32_CALLBACK_SENDCREATE
] =
61 (PVOID
)User32SendCREATEMessageForKernel
;
62 NtCurrentPeb()->KernelCallbackTable
[USER32_CALLBACK_SENDGETMINMAXINFO
] =
63 (PVOID
)User32SendGETMINMAXINFOMessageForKernel
;
65 GdiDllInitialize(NULL
, DLL_PROCESS_ATTACH
, NULL
);
75 GdiDllInitialize(NULL
, DLL_PROCESS_DETACH
, NULL
);
81 DllMain(PVOID hinstDll
,
85 D(MAX_TRACE
, ("hinstDll (0x%X) dwReason (0x%X)\n", hinstDll
, dwReason
));
89 case DLL_PROCESS_ATTACH
:
92 case DLL_THREAD_ATTACH
:
94 case DLL_THREAD_DETACH
:
96 case DLL_PROCESS_DETACH
: