-#ifndef __INCLUDE_USER32_CALLBACK_H
-#define __INCLUDE_USER32_CALLBACK_H
-
-#define USER32_CALLBACK_WINDOWPROC (0)
-#define USER32_CALLBACK_SENDASYNCPROC (1)
-#define USER32_CALLBACK_LOADSYSMENUTEMPLATE (2)
-#define USER32_CALLBACK_LOADDEFAULTCURSORS (3)
-#define USER32_CALLBACK_HOOKPROC (4)
-#define USER32_CALLBACK_EVENTPROC (5)
-#define USER32_CALLBACK_LOADMENU (6)
-#define USER32_CALLBACK_CLIENTTHREADSTARTUP (7)
-#define USER32_CALLBACK_CLIENTLOADLIBRARY (8)
-#define USER32_CALLBACK_GETCHARSETINFO (9)
-#define USER32_CALLBACK_COPYIMAGE (10)
-#define USER32_CALLBACK_SETWNDICONS (11)
-#define USER32_CALLBACK_DELIVERUSERAPC (12)
-#define USER32_CALLBACK_DDEPOST (13)
-#define USER32_CALLBACK_DDEGET (14)
-#define USER32_CALLBACK_SETOBM (15)
-#define USER32_CALLBACK_LPK (16)
-#define USER32_CALLBACK_UMPD (17)
-#define USER32_CALLBACK_MAXIMUM (17)
+/*
+ * PROJECT: ReactOS Kernel
+ * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
+ * PURPOSE: Defining kernel-to-user32 callbacks
+ * COPYRIGHT: Copyright 2018 James Tabor <james.tabor@reactos.org>
+ * Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
+ */
+
+#pragma once
+
+#define DEFINE_USER32_CALLBACK(id, value, fn) id,
+
+typedef enum _USER32_CALLBACK
+{
+#include "u32cb.h"
+ USER32_CALLBACK_COUNT
+} USER32_CALLBACK;
+
+#undef DEFINE_USER32_CALLBACK
typedef struct _WINDOWPROC_CALLBACK_ARGUMENTS
{
ULONG_PTR offPfn;
BOOLEAN Ansi;
LRESULT Result;
+ UINT lParamSize;
WCHAR ModuleName[512];
} HOOKPROC_CALLBACK_ARGUMENTS, *PHOOKPROC_CALLBACK_ARGUMENTS;
/* WCHAR szClass[] */
} HOOKPROC_CBT_CREATEWND_EXTRA_ARGUMENTS, *PHOOKPROC_CBT_CREATEWND_EXTRA_ARGUMENTS;
+typedef struct tagCWP_Struct
+{
+ HOOKPROC_CALLBACK_ARGUMENTS hpca;
+ CWPSTRUCT cwps;
+ PBYTE Extra[4];
+} CWP_Struct, *PCWP_Struct;
+
+typedef struct tagCWPR_Struct
+{
+ HOOKPROC_CALLBACK_ARGUMENTS hpca;
+ CWPRETSTRUCT cwprs;
+ PBYTE Extra[4];
+} CWPR_Struct, *PCWPR_Struct;
+
typedef struct _EVENTPROC_CALLBACK_ARGUMENTS
{
HWINEVENTHOOK hook;
BOOL bRect;
} LPK_CALLBACK_ARGUMENTS, *PLPK_CALLBACK_ARGUMENTS;
+typedef struct _IMMPROCESSKEY_CALLBACK_ARGUMENTS
+{
+ HWND hWnd;
+ HKL hKL;
+ UINT vKey;
+ LPARAM lParam;
+ DWORD dwHotKeyID;
+} IMMPROCESSKEY_CALLBACK_ARGUMENTS, *PIMMPROCESSKEY_CALLBACK_ARGUMENTS;
+
+typedef struct _IMMLOADLAYOUT_CALLBACK_ARGUMENTS
+{
+ HKL hKL;
+} IMMLOADLAYOUT_CALLBACK_ARGUMENTS, *PIMMLOADLAYOUT_CALLBACK_ARGUMENTS;
+
+typedef struct _IMMLOADLAYOUT_CALLBACK_OUTPUT
+{
+ BOOL ret;
+ IMEINFOEX iiex;
+} IMMLOADLAYOUT_CALLBACK_OUTPUT, *PIMMLOADLAYOUT_CALLBACK_OUTPUT;
+
NTSTATUS WINAPI
User32CallCopyImageFromKernel(PVOID Arguments, ULONG ArgumentLength);
NTSTATUS WINAPI
User32CallLPKFromKernel(PVOID Arguments, ULONG ArgumentLength);
NTSTATUS WINAPI
User32CallUMPDFromKernel(PVOID Arguments, ULONG ArgumentLength);
-#endif /* __INCLUDE_USER32_CALLBACK_H */
+NTSTATUS WINAPI
+User32CallImmProcessKeyFromKernel(PVOID Arguments, ULONG ArgumentLength);
+NTSTATUS WINAPI
+User32CallImmLoadLayoutFromKernel(PVOID Arguments, ULONG ArgumentLength);