-#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_MAXIMUM (11)
+/*
+ * 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;
DWORD dwEventThread;
DWORD dwmsEventTime;
WINEVENTPROC Proc;
+ INT_PTR Mod;
+ ULONG_PTR offPfn;
} EVENTPROC_CALLBACK_ARGUMENTS, *PEVENTPROC_CALLBACK_ARGUMENTS;
typedef struct _LOADMENU_CALLBACK_ARGUMENTS
typedef struct _SETWNDICONS_CALLBACK_ARGUMENTS
{
- HICON hIconSmWindows;
+ HICON hIconSample;
+ HICON hIconHand;
+ HICON hIconQuestion;
+ HICON hIconBang;
+ HICON hIconNote;
HICON hIconWindows;
+ HICON hIconSmWindows;
} SETWNDICONS_CALLBACK_ARGUMENTS, *PSETWNDICONS_CALLBACK_ARGUMENTS;
+typedef struct _DDEPOSTGET_CALLBACK_ARGUMENTS
+{
+ INT Type;
+ MSG;
+ int size;
+ PVOID pvData;
+ BYTE buffer[1];
+} DDEPOSTGET_CALLBACK_ARGUMENTS, *PDDEPOSTGET_CALLBACK_ARGUMENTS;
+
+typedef struct _SETOBM_CALLBACK_ARGUMENTS
+{
+ struct tagOEMBITMAPINFO oembmi[93];
+} SETOBM_CALLBACK_ARGUMENTS, *PSETOBM_CALLBACK_ARGUMENTS;
+
+typedef struct _LPK_CALLBACK_ARGUMENTS
+{
+ LPWSTR lpString;
+ HDC hdc;
+ INT x;
+ INT y;
+ UINT flags;
+ RECT rect;
+ UINT count;
+ 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
User32CallClientLoadLibraryFromKernel(PVOID Arguments, ULONG ArgumentLength);
NTSTATUS WINAPI
User32CallGetCharsetInfo(PVOID Arguments, ULONG ArgumentLength);
-#endif /* __INCLUDE_USER32_CALLBACK_H */
+NTSTATUS WINAPI
+User32DeliverUserAPC(PVOID Arguments, ULONG ArgumentLength);
+NTSTATUS WINAPI
+User32CallDDEPostFromKernel(PVOID Arguments, ULONG ArgumentLength);
+NTSTATUS WINAPI
+User32CallDDEGetFromKernel(PVOID Arguments, ULONG ArgumentLength);
+NTSTATUS WINAPI
+User32CallOBMFromKernel(PVOID Arguments, ULONG ArgumentLength);
+NTSTATUS WINAPI
+User32CallLPKFromKernel(PVOID Arguments, ULONG ArgumentLength);
+NTSTATUS WINAPI
+User32CallUMPDFromKernel(PVOID Arguments, ULONG ArgumentLength);
+NTSTATUS WINAPI
+User32CallImmProcessKeyFromKernel(PVOID Arguments, ULONG ArgumentLength);
+NTSTATUS WINAPI
+User32CallImmLoadLayoutFromKernel(PVOID Arguments, ULONG ArgumentLength);