Reactos
1/*
2 * PROJECT: ReactOS Kernel
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: Defining kernel-to-user32 callbacks
5 * COPYRIGHT: Copyright 2018 James Tabor <james.tabor@reactos.org>
6 * Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
7 */
8
9#pragma once
10
11#define DEFINE_USER32_CALLBACK(id, value, fn) id,
12
13typedef enum _USER32_CALLBACK
14{
15#include "u32cb.h"
16 USER32_CALLBACK_COUNT
17} USER32_CALLBACK;
18
19#undef DEFINE_USER32_CALLBACK
20
21typedef struct _WINDOWPROC_CALLBACK_ARGUMENTS
22{
23 WNDPROC Proc;
24 BOOL IsAnsiProc;
25 HWND Wnd;
26 UINT Msg;
27 WPARAM wParam;
28 LPARAM lParam;
29 INT lParamBufferSize;
30 LRESULT Result;
31 /* char Buffer[]; */
32} WINDOWPROC_CALLBACK_ARGUMENTS, *PWINDOWPROC_CALLBACK_ARGUMENTS;
33
34typedef struct _SENDASYNCPROC_CALLBACK_ARGUMENTS
35{
36 SENDASYNCPROC Callback;
37 HWND Wnd;
38 UINT Msg;
39 ULONG_PTR Context;
40 LRESULT Result;
41} SENDASYNCPROC_CALLBACK_ARGUMENTS, *PSENDASYNCPROC_CALLBACK_ARGUMENTS;
42
43typedef struct _CALL_BACK_INFO
44{
45 SENDASYNCPROC CallBack;
46 ULONG_PTR Context;
47} CALL_BACK_INFO, * PCALL_BACK_INFO;
48
49
50typedef struct _HOOKPROC_CALLBACK_ARGUMENTS
51{
52 INT HookId;
53 INT Code;
54 WPARAM wParam;
55 LPARAM lParam;
56 HOOKPROC Proc;
57 INT Mod;
58 ULONG_PTR offPfn;
59 BOOLEAN Ansi;
60 LRESULT Result;
61 UINT lParamSize;
62 WCHAR ModuleName[512];
63} HOOKPROC_CALLBACK_ARGUMENTS, *PHOOKPROC_CALLBACK_ARGUMENTS;
64
65typedef struct _HOOKPROC_CBT_CREATEWND_EXTRA_ARGUMENTS
66{
67 CREATESTRUCTW Cs; /* lpszName and lpszClass replaced by offsets */
68 HWND WndInsertAfter;
69 /* WCHAR szName[] */
70 /* WCHAR szClass[] */
71} HOOKPROC_CBT_CREATEWND_EXTRA_ARGUMENTS, *PHOOKPROC_CBT_CREATEWND_EXTRA_ARGUMENTS;
72
73typedef struct tagCWP_Struct
74{
75 HOOKPROC_CALLBACK_ARGUMENTS hpca;
76 CWPSTRUCT cwps;
77 PBYTE Extra[4];
78} CWP_Struct, *PCWP_Struct;
79
80typedef struct tagCWPR_Struct
81{
82 HOOKPROC_CALLBACK_ARGUMENTS hpca;
83 CWPRETSTRUCT cwprs;
84 PBYTE Extra[4];
85} CWPR_Struct, *PCWPR_Struct;
86
87typedef struct _EVENTPROC_CALLBACK_ARGUMENTS
88{
89 HWINEVENTHOOK hook;
90 DWORD event;
91 HWND hwnd;
92 LONG idObject;
93 LONG idChild;
94 DWORD dwEventThread;
95 DWORD dwmsEventTime;
96 WINEVENTPROC Proc;
97 INT_PTR Mod;
98 ULONG_PTR offPfn;
99} EVENTPROC_CALLBACK_ARGUMENTS, *PEVENTPROC_CALLBACK_ARGUMENTS;
100
101typedef struct _LOADMENU_CALLBACK_ARGUMENTS
102{
103 HINSTANCE hModule;
104 LPCWSTR InterSource;
105 WCHAR MenuName[1];
106} LOADMENU_CALLBACK_ARGUMENTS, *PLOADMENU_CALLBACK_ARGUMENTS;
107
108typedef struct _COPYIMAGE_CALLBACK_ARGUMENTS
109{
110 HANDLE hImage;
111 UINT uType;
112 int cxDesired;
113 int cyDesired;
114 UINT fuFlags;
115} COPYIMAGE_CALLBACK_ARGUMENTS, *PCOPYIMAGE_CALLBACK_ARGUMENTS;
116
117typedef struct _CLIENT_LOAD_LIBRARY_ARGUMENTS
118{
119 UNICODE_STRING strLibraryName;
120 UNICODE_STRING strInitFuncName;
121 BOOL Unload;
122 BOOL ApiHook;
123} CLIENT_LOAD_LIBRARY_ARGUMENTS, *PCLIENT_LOAD_LIBRARY_ARGUMENTS;
124
125typedef struct _GET_CHARSET_INFO
126{
127 LCID Locale;
128 CHARSETINFO Cs;
129} GET_CHARSET_INFO, *PGET_CHARSET_INFO;
130
131typedef struct _SETWNDICONS_CALLBACK_ARGUMENTS
132{
133 HICON hIconSample;
134 HICON hIconHand;
135 HICON hIconQuestion;
136 HICON hIconBang;
137 HICON hIconNote;
138 HICON hIconWindows;
139 HICON hIconSmWindows;
140} SETWNDICONS_CALLBACK_ARGUMENTS, *PSETWNDICONS_CALLBACK_ARGUMENTS;
141
142typedef struct _DDEPOSTGET_CALLBACK_ARGUMENTS
143{
144 INT Type;
145 MSG;
146 int size;
147 PVOID pvData;
148 BYTE buffer[1];
149} DDEPOSTGET_CALLBACK_ARGUMENTS, *PDDEPOSTGET_CALLBACK_ARGUMENTS;
150
151typedef struct _SETOBM_CALLBACK_ARGUMENTS
152{
153 struct tagOEMBITMAPINFO oembmi[93];
154} SETOBM_CALLBACK_ARGUMENTS, *PSETOBM_CALLBACK_ARGUMENTS;
155
156typedef struct _LPK_CALLBACK_ARGUMENTS
157{
158 LPWSTR lpString;
159 HDC hdc;
160 INT x;
161 INT y;
162 UINT flags;
163 RECT rect;
164 UINT count;
165 BOOL bRect;
166} LPK_CALLBACK_ARGUMENTS, *PLPK_CALLBACK_ARGUMENTS;
167
168typedef struct _IMMPROCESSKEY_CALLBACK_ARGUMENTS
169{
170 HWND hWnd;
171 HKL hKL;
172 UINT vKey;
173 LPARAM lParam;
174 DWORD dwHotKeyID;
175} IMMPROCESSKEY_CALLBACK_ARGUMENTS, *PIMMPROCESSKEY_CALLBACK_ARGUMENTS;
176
177typedef struct _IMMLOADLAYOUT_CALLBACK_ARGUMENTS
178{
179 HKL hKL;
180} IMMLOADLAYOUT_CALLBACK_ARGUMENTS, *PIMMLOADLAYOUT_CALLBACK_ARGUMENTS;
181
182typedef struct _IMMLOADLAYOUT_CALLBACK_OUTPUT
183{
184 BOOL ret;
185 IMEINFOEX iiex;
186} IMMLOADLAYOUT_CALLBACK_OUTPUT, *PIMMLOADLAYOUT_CALLBACK_OUTPUT;
187
188NTSTATUS WINAPI
189User32CallCopyImageFromKernel(PVOID Arguments, ULONG ArgumentLength);
190NTSTATUS WINAPI
191User32CallSetWndIconsFromKernel(PVOID Arguments, ULONG ArgumentLength);
192NTSTATUS WINAPI
193User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength);
194NTSTATUS WINAPI
195User32CallSendAsyncProcForKernel(PVOID Arguments, ULONG ArgumentLength);
196NTSTATUS WINAPI
197User32LoadSysMenuTemplateForKernel(PVOID Arguments, ULONG ArgumentLength);
198NTSTATUS WINAPI
199User32SetupDefaultCursors(PVOID Arguments, ULONG ArgumentLength);
200NTSTATUS WINAPI
201User32CallHookProcFromKernel(PVOID Arguments, ULONG ArgumentLength);
202NTSTATUS WINAPI
203User32CallEventProcFromKernel(PVOID Arguments, ULONG ArgumentLength);
204NTSTATUS WINAPI
205User32CallLoadMenuFromKernel(PVOID Arguments, ULONG ArgumentLength);
206NTSTATUS WINAPI
207User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength);
208NTSTATUS WINAPI
209User32CallClientLoadLibraryFromKernel(PVOID Arguments, ULONG ArgumentLength);
210NTSTATUS WINAPI
211User32CallGetCharsetInfo(PVOID Arguments, ULONG ArgumentLength);
212NTSTATUS WINAPI
213User32DeliverUserAPC(PVOID Arguments, ULONG ArgumentLength);
214NTSTATUS WINAPI
215User32CallDDEPostFromKernel(PVOID Arguments, ULONG ArgumentLength);
216NTSTATUS WINAPI
217User32CallDDEGetFromKernel(PVOID Arguments, ULONG ArgumentLength);
218NTSTATUS WINAPI
219User32CallOBMFromKernel(PVOID Arguments, ULONG ArgumentLength);
220NTSTATUS WINAPI
221User32CallLPKFromKernel(PVOID Arguments, ULONG ArgumentLength);
222NTSTATUS WINAPI
223User32CallUMPDFromKernel(PVOID Arguments, ULONG ArgumentLength);
224NTSTATUS WINAPI
225User32CallImmProcessKeyFromKernel(PVOID Arguments, ULONG ArgumentLength);
226NTSTATUS WINAPI
227User32CallImmLoadLayoutFromKernel(PVOID Arguments, ULONG ArgumentLength);