#define WS_EX_SETANSICREATOR 0x80000000 // For WNDS_ANSICREATOR
/* Non SDK Window Message types. */
-#define WM_SETVISIBLE 0x00000009
-#define WM_ALTTABACTIVE 0x00000029
-#define WM_ISACTIVEICON 0x00000035
-#define WM_QUERYPARKICON 0x00000036
-#define WM_CLIENTSHUTDOWN 0x0000003B
-#define WM_COPYGLOBALDATA 0x00000049
-#define WM_LOGONNOTIFY 0x0000004c
-#define WM_KEYF1 0x0000004d
-#define WM_SYSTIMER 0x00000118
-#define WM_LBTRACKPOINT 0x00000131
-#define LB_CARETON 0x000001a3
-#define LB_CARETOFF 0x000001a4
-#define WM_DROPOBJECT 0x0000022A
-#define WM_QUERYDROPOBJECT 0x0000022B
-#define WM_BEGINDRAG 0x0000022C
-#define WM_DRAGLOOP 0x0000022D
-#define WM_DRAGSELECT 0x0000022E
-#define WM_DRAGMOVE 0x0000022F
-#define WM_POPUPSYSTEMMENU 0x00000313
-#define WM_CBT 0x000003FF // ReactOS only.
-#define WM_MAXIMUM 0x0001FFFF
+#define WM_SETVISIBLE 0x00000009
+#define WM_ALTTABACTIVE 0x00000029
+#define WM_ISACTIVEICON 0x00000035
+#define WM_QUERYPARKICON 0x00000036
+#define WM_CLIENTSHUTDOWN 0x0000003B
+#define WM_COPYGLOBALDATA 0x00000049
+#define WM_LOGONNOTIFY 0x0000004C
+#define WM_KEYF1 0x0000004D
+#define WM_NCUAHDRAWCAPTION 0x000000AE
+#define WM_NCUAHDRAWFRAME 0x000000AF
+#define WM_SYSTIMER 0x00000118
+#define WM_LBTRACKPOINT 0x00000131
+#define LB_CARETON 0x000001a3
+#define LB_CARETOFF 0x000001a4
+#define WM_DROPOBJECT 0x0000022A
+#define WM_QUERYDROPOBJECT 0x0000022B
+#define WM_BEGINDRAG 0x0000022C
+#define WM_DRAGLOOP 0x0000022D
+#define WM_DRAGSELECT 0x0000022E
+#define WM_DRAGMOVE 0x0000022F
+#define WM_POPUPSYSTEMMENU 0x00000313
+#define WM_UAHINIT 0x0000031b
+#define WM_CBT 0x000003FF // ReactOS only.
+#define WM_MAXIMUM 0x0001FFFF
/* Non SDK DCE types.*/
#define DCX_USESTYLE 0x00010000
// User api hook
//
-typedef struct _USERAPIHOOKINFO
-{
- DWORD m_size;
- LPCWSTR m_dllname1;
- LPCWSTR m_funname1;
- LPCWSTR m_dllname2;
- LPCWSTR m_funname2;
-} USERAPIHOOKINFO,*PUSERAPIHOOKINFO;
-
-typedef enum _UAPIHK
-{
- uahLoadInit,
- uahStop,
- uahShutdown
-} UAPIHK, *PUAPIHK;
-
-typedef DWORD (CALLBACK * USERAPIHOOKPROC)(UAPIHK State, ULONG_PTR Info);
-
typedef LRESULT(CALLBACK *WNDPROC_OWP)(HWND,UINT,WPARAM,LPARAM,ULONG_PTR,PDWORD);
+typedef int (WINAPI *SETWINDOWRGN)(HWND hWnd, HRGN hRgn, BOOL bRedraw);
typedef struct _UAHOWP
{
DWORD Size;
} UAHOWP, *PUAHOWP;
+#define UAH_HOOK_MESSAGE(uahowp, msg) uahowp.MsgBitArray[msg/8] |= (1 << (msg % 8));
+#define UAH_IS_MESSAGE_HOOKED(uahowp, msg) (uahowp.MsgBitArray[msg/8] & (1 << (msg % 8)))
+#define UAHOWP_MAX_SIZE WM_USER/8
+
typedef struct tagUSERAPIHOOK
{
- DWORD size;
- WNDPROC DefWindowProcA;
- WNDPROC DefWindowProcW;
- UAHOWP DefWndProcArray;
- FARPROC GetScrollInfo;
- FARPROC SetScrollInfo;
- FARPROC EnableScrollBar;
- FARPROC AdjustWindowRectEx;
- FARPROC SetWindowRgn;
+ DWORD size;
+ WNDPROC DefWindowProcA;
+ WNDPROC DefWindowProcW;
+ UAHOWP DefWndProcArray;
+ FARPROC GetScrollInfo;
+ FARPROC SetScrollInfo;
+ FARPROC EnableScrollBar;
+ FARPROC AdjustWindowRectEx;
+ SETWINDOWRGN SetWindowRgn;
WNDPROC_OWP PreWndProc;
WNDPROC_OWP PostWndProc;
- UAHOWP WndProcArray;
+ UAHOWP WndProcArray;
WNDPROC_OWP PreDefDlgProc;
WNDPROC_OWP PostDefDlgProc;
- UAHOWP DlgProcArray;
- FARPROC GetSystemMetrics;
- FARPROC SystemParametersInfoA;
- FARPROC SystemParametersInfoW;
- FARPROC ForceResetUserApiHook;
- FARPROC DrawFrameControl;
- FARPROC DrawCaption;
- FARPROC MDIRedrawFrame;
- FARPROC GetRealWindowOwner;
+ UAHOWP DlgProcArray;
+ FARPROC GetSystemMetrics;
+ FARPROC SystemParametersInfoA;
+ FARPROC SystemParametersInfoW;
+ FARPROC ForceResetUserApiHook;
+ FARPROC DrawFrameControl;
+ FARPROC DrawCaption;
+ FARPROC MDIRedrawFrame;
+ FARPROC GetRealWindowOwner;
} USERAPIHOOK, *PUSERAPIHOOK;
+typedef enum _UAPIHK
+{
+ uahLoadInit,
+ uahStop,
+ uahShutdown
+} UAPIHK, *PUAPIHK;
+
+typedef BOOL(CALLBACK *USERAPIHOOKPROC)(UAPIHK State, PUSERAPIHOOK puah);
+
+typedef struct _USERAPIHOOKINFO
+{
+ DWORD m_size;
+ LPCWSTR m_dllname1;
+ LPCWSTR m_funname1;
+ LPCWSTR m_dllname2;
+ LPCWSTR m_funname2;
+} USERAPIHOOKINFO,*PUSERAPIHOOKINFO;
+
+#if (WINVER == _WIN32_WINNT_WINXP)
+BOOL WINAPI RegisterUserApiHook(HINSTANCE hInstance, USERAPIHOOKPROC CallbackFunc);
+#elif (WINVER == _WIN32_WINNT_WS03)
BOOL WINAPI RegisterUserApiHook(PUSERAPIHOOKINFO puah);
+#endif
+
BOOL WINAPI UnregisterUserApiHook(VOID);
#endif
--- /dev/null
+#pragma once
+
+typedef HANDLE HTHEMEFILE;
+
+/**********************************************************************
+ * ENUMTHEMEPROC
+ *
+ * Callback function for EnumThemes.
+ *
+ * RETURNS
+ * TRUE to continue enumeration, FALSE to stop
+ *
+ * PARAMS
+ * lpReserved Always 0
+ * pszThemeFileName Full path to theme msstyles file
+ * pszThemeName Display name for theme
+ * pszToolTip Tooltip name for theme
+ * lpReserved2 Always 0
+ * lpData Value passed through lpData from EnumThemes
+ */
+typedef BOOL (CALLBACK *ENUMTHEMEPROC)(LPVOID lpReserved, LPCWSTR pszThemeFileName,
+ LPCWSTR pszThemeName, LPCWSTR pszToolTip, LPVOID lpReserved2,
+ LPVOID lpData);
+
+/**********************************************************************
+ * PARSETHEMEINIFILEPROC
+ *
+ * Callback function for ParseThemeIniFile.
+ *
+ * RETURNS
+ * TRUE to continue enumeration, FALSE to stop
+ *
+ * PARAMS
+ * dwType Entry type
+ * pszParam1 Use defined by entry type
+ * pszParam2 Use defined by entry type
+ * pszParam3 Use defined by entry type
+ * dwParam Use defined by entry type
+ * lpData Value passed through lpData from ParseThemeIniFile
+ *
+ * NOTES
+ * I don't know what the valid entry types are
+ */
+typedef BOOL (CALLBACK* PARSETHEMEINIFILEPROC)(DWORD dwType, LPWSTR pszParam1,
+ LPWSTR pszParam2, LPWSTR pszParam3,
+ DWORD dwParam, LPVOID lpData);
+
+/* Structure filled in by EnumThemeColors() and EnumeThemeSizes() with the
+ * various strings for a theme color or size. */
+typedef struct tagTHEMENAMES
+{
+ WCHAR szName[MAX_PATH+1];
+ WCHAR szDisplayName[MAX_PATH+1];
+ WCHAR szTooltip[MAX_PATH+1];
+} THEMENAMES, *PTHEMENAMES;
+
+/* Declarations for undocumented functions for use internally */
+DWORD WINAPI QueryThemeServices(void);
+HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName,
+ LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile,
+ DWORD unknown);
+HRESULT WINAPI CloseThemeFile(HTHEMEFILE hThemeFile);
+HRESULT WINAPI ApplyTheme(HTHEMEFILE hThemeFile, char *unknown, HWND hWnd);
+HRESULT WINAPI GetThemeDefaults(LPCWSTR pszThemeFileName, LPWSTR pszColorName,
+ DWORD dwColorNameLen, LPWSTR pszSizeName,
+ DWORD dwSizeNameLen);
+HRESULT WINAPI EnumThemes(LPCWSTR pszThemePath, ENUMTHEMEPROC callback,
+ LPVOID lpData);
+HRESULT WINAPI EnumThemeColors(LPWSTR pszThemeFileName, LPWSTR pszSizeName,
+ DWORD dwColorNum, PTHEMENAMES pszColorNames);
+HRESULT WINAPI EnumThemeSizes(LPWSTR pszThemeFileName, LPWSTR pszColorName,
+ DWORD dwSizeNum, PTHEMENAMES pszColorNames);
+HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown,
+ PARSETHEMEINIFILEPROC callback, LPVOID lpData);
#define USER32_CALLBACK_EVENTPROC (5)
#define USER32_CALLBACK_LOADMENU (6)
#define USER32_CALLBACK_CLIENTTHREADSTARTUP (7)
-#define USER32_CALLBACK_MAXIMUM (7)
+#define USER32_CALLBACK_CLIENTLOADLIBRARY (8)
+#define USER32_CALLBACK_MAXIMUM (8)
typedef struct _WINDOWPROC_CALLBACK_ARGUMENTS
{
WCHAR MenuName[1];
} LOADMENU_CALLBACK_ARGUMENTS, *PLOADMENU_CALLBACK_ARGUMENTS;
+typedef struct _CLIENT_LOAD_LIBRARY_ARGUMENTS
+{
+ UNICODE_STRING strLibraryName;
+ UNICODE_STRING strInitFuncName;
+ BOOL Unload;
+ BOOL ApiHook;
+} CLIENT_LOAD_LIBRARY_ARGUMENTS, *PCLIENT_LOAD_LIBRARY_ARGUMENTS;
+
NTSTATUS WINAPI
User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength);
NTSTATUS WINAPI
User32CallLoadMenuFromKernel(PVOID Arguments, ULONG ArgumentLength);
NTSTATUS WINAPI
User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength);
-
+NTSTATUS WINAPI
+User32CallClientLoadLibraryFromKernel(PVOID Arguments, ULONG ArgumentLength);
#endif /* __INCLUDE_USER32_CALLBACK_H */