user32: Add DECLSPEC_HOTPATCH to more functions

André Hentschel nerv at dawncrow.de
Fri Jun 10 09:49:17 CDT 2011


When __ms_hook_prologue__ available, this moves calls to other functions and PIC code behind
the first 8 Bytes where needed(only functions which have the opcode 0xE8 in the first 8 bytes).
That's done here for 163 functions, the rest of the changes are reformatting and including overhead.
---
 dlls/user32/caret.c      |    4 +-
 dlls/user32/class.c      |    6 ++--
 dlls/user32/clipboard.c  |    6 ++--
 dlls/user32/cursoricon.c |   34 +++++++++++++++---------------
 dlls/user32/dde_client.c |   21 +++++++++++--------
 dlls/user32/dde_misc.c   |   15 +++++++------
 dlls/user32/dde_server.c |    6 +++-
 dlls/user32/defwnd.c     |    4 +-
 dlls/user32/desktop.c    |    4 +-
 dlls/user32/dialog.c     |    6 ++--
 dlls/user32/exticon.c    |    6 ++--
 dlls/user32/focus.c      |    6 ++--
 dlls/user32/hook.c       |   14 ++++++------
 dlls/user32/input.c      |   46 +++++++++++++++++++++---------------------
 dlls/user32/mdi.c        |   19 ++++++++---------
 dlls/user32/menu.c       |   34 +++++++++++++++---------------
 dlls/user32/message.c    |   13 ++++++-----
 dlls/user32/misc.c       |   50 +++++++++++++++++++++++----------------------
 dlls/user32/painting.c   |    4 +-
 dlls/user32/property.c   |    4 +-
 dlls/user32/resource.c   |   12 ++++++----
 dlls/user32/sysparams.c  |   14 ++++++------
 dlls/user32/uitools.c    |    8 ++++--
 dlls/user32/user_main.c  |    8 ++++--
 dlls/user32/win.c        |   22 ++++++++++----------
 dlls/user32/winhelp.c    |    2 +-
 dlls/user32/winpos.c     |   16 +++++++-------
 dlls/user32/winproc.c    |    2 +-
 dlls/user32/winstation.c |    8 ++++--
 29 files changed, 205 insertions(+), 189 deletions(-)

diff --git a/dlls/user32/caret.c b/dlls/user32/caret.c
index 53bb5b4..a40f5b4 100644
--- a/dlls/user32/caret.c
+++ b/dlls/user32/caret.c
@@ -106,7 +106,7 @@ static void CALLBACK CARET_Callback( HWND hwnd, UINT msg, UINT_PTR id, DWORD cti
 /*****************************************************************
  *		CreateCaret (USER32.@)
  */
-BOOL WINAPI CreateCaret( HWND hwnd, HBITMAP bitmap, INT width, INT height )
+BOOL WINAPI DECLSPEC_HOTPATCH CreateCaret( HWND hwnd, HBITMAP bitmap, INT width, INT height )
 {
     BOOL ret;
     RECT r;
@@ -390,7 +390,7 @@ BOOL WINAPI GetCaretPos( LPPOINT pt )
 /*****************************************************************
  *		SetCaretBlinkTime (USER32.@)
  */
-BOOL WINAPI SetCaretBlinkTime( UINT msecs )
+BOOL WINAPI DECLSPEC_HOTPATCH SetCaretBlinkTime( UINT msecs )
 {
     TRACE("msecs=%d\n", msecs);
 
diff --git a/dlls/user32/class.c b/dlls/user32/class.c
index 8b5060a..5e1ec4d 100644
--- a/dlls/user32/class.c
+++ b/dlls/user32/class.c
@@ -960,7 +960,7 @@ INT WINAPI GetClassNameA( HWND hwnd, LPSTR buffer, INT count )
 /***********************************************************************
  *		GetClassNameW (USER32.@)
  */
-INT WINAPI GetClassNameW( HWND hwnd, LPWSTR buffer, INT count )
+INT WINAPI DECLSPEC_HOTPATCH GetClassNameW( HWND hwnd, LPWSTR buffer, INT count )
 {
     CLASS *class;
     INT ret;
@@ -1064,7 +1064,7 @@ BOOL WINAPI GetClassInfoW( HINSTANCE hInstance, LPCWSTR name, WNDCLASSW *wc )
 /***********************************************************************
  *		GetClassInfoExA (USER32.@)
  */
-BOOL WINAPI GetClassInfoExA( HINSTANCE hInstance, LPCSTR name, WNDCLASSEXA *wc )
+BOOL WINAPI DECLSPEC_HOTPATCH GetClassInfoExA( HINSTANCE hInstance, LPCSTR name, WNDCLASSEXA *wc )
 {
     ATOM atom;
     CLASS *classPtr;
@@ -1115,7 +1115,7 @@ BOOL WINAPI GetClassInfoExA( HINSTANCE hInstance, LPCSTR name, WNDCLASSEXA *wc )
 /***********************************************************************
  *		GetClassInfoExW (USER32.@)
  */
-BOOL WINAPI GetClassInfoExW( HINSTANCE hInstance, LPCWSTR name, WNDCLASSEXW *wc )
+BOOL WINAPI DECLSPEC_HOTPATCH GetClassInfoExW( HINSTANCE hInstance, LPCWSTR name, WNDCLASSEXW *wc )
 {
     ATOM atom;
     CLASS *classPtr;
diff --git a/dlls/user32/clipboard.c b/dlls/user32/clipboard.c
index 0985e6f..b144da0 100644
--- a/dlls/user32/clipboard.c
+++ b/dlls/user32/clipboard.c
@@ -270,7 +270,7 @@ BOOL WINAPI OpenClipboard( HWND hWnd )
 /**************************************************************************
  *		CloseClipboard (USER32.@)
  */
-BOOL WINAPI CloseClipboard(void)
+BOOL WINAPI DECLSPEC_HOTPATCH CloseClipboard(void)
 {
     BOOL bRet = FALSE;
 
@@ -485,7 +485,7 @@ INT WINAPI CountClipboardFormats(void)
 /**************************************************************************
  *		EnumClipboardFormats (USER32.@)
  */
-UINT WINAPI EnumClipboardFormats(UINT wFormat)
+UINT WINAPI DECLSPEC_HOTPATCH EnumClipboardFormats(UINT wFormat)
 {
     CLIPBOARDINFO cbinfo;
 
@@ -516,7 +516,7 @@ BOOL WINAPI IsClipboardFormatAvailable(UINT wFormat)
 /**************************************************************************
  *		GetClipboardData (USER32.@)
  */
-HANDLE WINAPI GetClipboardData(UINT wFormat)
+HANDLE WINAPI DECLSPEC_HOTPATCH GetClipboardData(UINT wFormat)
 {
     HANDLE hData = 0;
     CLIPBOARDINFO cbinfo;
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c
index 014a4b9..b0dbf42 100644
--- a/dlls/user32/cursoricon.c
+++ b/dlls/user32/cursoricon.c
@@ -1262,10 +1262,10 @@ static HCURSOR CURSORICON_CreateIconFromANI( const LPBYTE bits, DWORD bits_size,
  * FIXME: Convert to mono when cFlag is LR_MONOCHROME. Do something
  *        with cbSize parameter as well.
  */
-HICON WINAPI CreateIconFromResourceEx( LPBYTE bits, UINT cbSize,
-                                       BOOL bIcon, DWORD dwVersion,
-                                       INT width, INT height,
-                                       UINT cFlag )
+HICON WINAPI DECLSPEC_HOTPATCH CreateIconFromResourceEx( LPBYTE bits, UINT cbSize,
+                                                         BOOL bIcon, DWORD dwVersion,
+                                                         INT width, INT height,
+                                                         UINT cFlag )
 {
     POINT hotspot;
     BITMAPINFO *bmi;
@@ -1472,10 +1472,10 @@ static HICON CURSORICON_Load(HINSTANCE hInstance, LPCWSTR name,
 /***********************************************************************
  *		CreateCursor (USER32.@)
  */
-HCURSOR WINAPI CreateCursor( HINSTANCE hInstance,
-                                 INT xHotSpot, INT yHotSpot,
-                                 INT nWidth, INT nHeight,
-                                 LPCVOID lpANDbits, LPCVOID lpXORbits )
+HCURSOR WINAPI DECLSPEC_HOTPATCH CreateCursor( HINSTANCE hInstance,
+                                               INT xHotSpot, INT yHotSpot,
+                                               INT nWidth, INT nHeight,
+                                               LPCVOID lpANDbits, LPCVOID lpXORbits )
 {
     ICONINFO info;
     HCURSOR hCursor;
@@ -1514,7 +1514,7 @@ HCURSOR WINAPI CreateCursor( HINSTANCE hInstance,
  *
  * FIXME: Do we need to resize the bitmaps?
  */
-HICON WINAPI CreateIcon(
+HICON WINAPI DECLSPEC_HOTPATCH CreateIcon(
     HINSTANCE hInstance,  /* [in] the application's hInstance */
     INT       nWidth,     /* [in] the width of the provided bitmaps */
     INT       nHeight,    /* [in] the height of the provided bitmaps */
@@ -1547,7 +1547,7 @@ HICON WINAPI CreateIcon(
 /***********************************************************************
  *		CopyIcon (USER32.@)
  */
-HICON WINAPI CopyIcon( HICON hIcon )
+HICON WINAPI DECLSPEC_HOTPATCH CopyIcon( HICON hIcon )
 {
     struct cursoricon_object *ptrOld, *ptrNew;
     HICON hNew;
@@ -1617,7 +1617,7 @@ BOOL WINAPI DestroyIcon( HICON hIcon )
 /***********************************************************************
  *		DestroyCursor (USER32.@)
  */
-BOOL WINAPI DestroyCursor( HCURSOR hCursor )
+BOOL WINAPI DECLSPEC_HOTPATCH DestroyCursor( HCURSOR hCursor )
 {
     return DestroyIcon( hCursor );
 }
@@ -1775,7 +1775,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetClipCursor( RECT *rect )
 /***********************************************************************
  *		SetSystemCursor (USER32.@)
  */
-BOOL WINAPI SetSystemCursor(HCURSOR hcur, DWORD id)
+BOOL WINAPI DECLSPEC_HOTPATCH SetSystemCursor(HCURSOR hcur, DWORD id)
 {
     FIXME("(%p,%08x),stub!\n",  hcur, id);
     return TRUE;
@@ -1965,7 +1965,7 @@ HCURSOR WINAPI GetCursorFrameInfo(HCURSOR hCursor, DWORD reserved, DWORD istep,
 /**********************************************************************
  *              GetIconInfo (USER32.@)
  */
-BOOL WINAPI GetIconInfo(HICON hIcon, PICONINFO iconinfo)
+BOOL WINAPI DECLSPEC_HOTPATCH GetIconInfo(HICON hIcon, PICONINFO iconinfo)
 {
     ICONINFOEXW infoW;
 
@@ -2101,7 +2101,7 @@ static void stretch_blt_icon( HDC hdc_dst, int dst_x, int dst_y, int dst_width,
 /**********************************************************************
  *		CreateIconIndirect (USER32.@)
  */
-HICON WINAPI CreateIconIndirect(PICONINFO iconinfo)
+HICON WINAPI DECLSPEC_HOTPATCH CreateIconIndirect(PICONINFO iconinfo)
 {
     BITMAP bmpXor, bmpAnd;
     HICON hObj;
@@ -2213,9 +2213,9 @@ HICON WINAPI CreateIconIndirect(PICONINFO iconinfo)
  *    Success: TRUE
  *    Failure: FALSE
  */
-BOOL WINAPI DrawIconEx( HDC hdc, INT x0, INT y0, HICON hIcon,
-                            INT cxWidth, INT cyWidth, UINT istep,
-                            HBRUSH hbr, UINT flags )
+BOOL WINAPI DECLSPEC_HOTPATCH DrawIconEx( HDC hdc, INT x0, INT y0, HICON hIcon,
+                                          INT cxWidth, INT cyWidth, UINT istep,
+                                          HBRUSH hbr, UINT flags )
 {
     struct cursoricon_frame *frame;
     struct cursoricon_object *ptr;
diff --git a/dlls/user32/dde_client.c b/dlls/user32/dde_client.c
index b8b8451..6144742 100644
--- a/dlls/user32/dde_client.c
+++ b/dlls/user32/dde_client.c
@@ -23,6 +23,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+
 #include <stdarg.h>
 #include <string.h>
 #include "windef.h"
@@ -56,8 +58,8 @@ const WCHAR WDML_szClientConvClassW[] = {'W','i','n','e','D','d','e','C','l','i'
  *    Success: Handle to new conversation list
  *    Failure: 0
  */
-HCONVLIST WINAPI DdeConnectList(DWORD idInst, HSZ hszService, HSZ hszTopic,
-				HCONVLIST hConvList, PCONVCONTEXT pCC)
+HCONVLIST WINAPI DECLSPEC_HOTPATCH DdeConnectList(DWORD idInst, HSZ hszService, HSZ hszTopic,
+                                                  HCONVLIST hConvList, PCONVCONTEXT pCC)
 {
     FIXME("(%d,%p,%p,%p,%p): stub\n", idInst, hszService, hszTopic, hConvList, pCC);
     return (HCONVLIST)1;
@@ -66,7 +68,7 @@ HCONVLIST WINAPI DdeConnectList(DWORD idInst, HSZ hszService, HSZ hszTopic,
 /*****************************************************************
  * DdeQueryNextServer [USER32.@]
  */
-HCONV WINAPI DdeQueryNextServer(HCONVLIST hConvList, HCONV hConvPrev)
+HCONV WINAPI DECLSPEC_HOTPATCH DdeQueryNextServer(HCONVLIST hConvList, HCONV hConvPrev)
 {
     FIXME("(%p,%p): stub\n", hConvList, hConvPrev);
     return 0;
@@ -83,7 +85,7 @@ HCONV WINAPI DdeQueryNextServer(HCONVLIST hConvList, HCONV hConvPrev)
  *    Success: TRUE
  *    Failure: FALSE
  */
-BOOL WINAPI DdeDisconnectList(HCONVLIST hConvList)
+BOOL WINAPI DECLSPEC_HOTPATCH DdeDisconnectList(HCONVLIST hConvList)
 {
     FIXME("(%p): stub\n", hConvList);
     return TRUE;
@@ -92,8 +94,8 @@ BOOL WINAPI DdeDisconnectList(HCONVLIST hConvList)
 /*****************************************************************
  *            DdeConnect   (USER32.@)
  */
-HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic,
-			PCONVCONTEXT pCC)
+HCONV WINAPI DECLSPEC_HOTPATCH DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic,
+                                          PCONVCONTEXT pCC)
 {
     HWND		hwndClient;
     WDML_INSTANCE*	pInstance;
@@ -1132,8 +1134,9 @@ HDDEDATA WDML_ClientHandle(WDML_CONV *pConv, WDML_XACT *pXAct, DWORD dwTimeout,
 /*****************************************************************
  *            DdeClientTransaction  (USER32.@)
  */
-HDDEDATA WINAPI DdeClientTransaction(LPBYTE pData, DWORD cbData, HCONV hConv, HSZ hszItem, UINT wFmt,
-				     UINT wType, DWORD dwTimeout, LPDWORD pdwResult)
+HDDEDATA WINAPI DECLSPEC_HOTPATCH DdeClientTransaction(LPBYTE pData, DWORD cbData, HCONV hConv,
+                                                       HSZ hszItem, UINT wFmt, UINT wType,
+                                                       DWORD dwTimeout, LPDWORD pdwResult)
 {
     WDML_CONV*		pConv;
     WDML_XACT*		pXAct;
@@ -1415,7 +1418,7 @@ BOOL WINAPI DdeDisconnect(HCONV hConv)
 /*****************************************************************
  *            DdeImpersonateClient (USER32.@)
  */
-BOOL WINAPI DdeImpersonateClient(HCONV hConv)
+BOOL WINAPI DECLSPEC_HOTPATCH DdeImpersonateClient(HCONV hConv)
 {
     WDML_CONV*	pConv;
     BOOL	ret = FALSE;
diff --git a/dlls/user32/dde_misc.c b/dlls/user32/dde_misc.c
index ac4657e..d3f3697 100644
--- a/dlls/user32/dde_misc.c
+++ b/dlls/user32/dde_misc.c
@@ -231,7 +231,7 @@ LPARAM WINAPI ReuseDDElParam(LPARAM lParam, UINT msgIn, UINT msgOut,
  * hWndClient	  [I] handle to DDE client window
  * hWndServer	  [I] handle to DDE server window
  */
-BOOL WINAPI ImpersonateDdeClientWindow(HWND hWndClient, HWND hWndServer)
+BOOL WINAPI DECLSPEC_HOTPATCH ImpersonateDdeClientWindow(HWND hWndClient, HWND hWndServer)
 {
      FIXME("(%p %p): stub\n", hWndClient, hWndServer);
      return FALSE;
@@ -241,8 +241,9 @@ BOOL WINAPI ImpersonateDdeClientWindow(HWND hWndClient, HWND hWndServer)
  *            DdeSetQualityOfService (USER32.@)
  */
 
-BOOL WINAPI DdeSetQualityOfService(HWND hwndClient, CONST SECURITY_QUALITY_OF_SERVICE *pqosNew,
-				   PSECURITY_QUALITY_OF_SERVICE pqosPrev)
+BOOL WINAPI DECLSPEC_HOTPATCH DdeSetQualityOfService(HWND hwndClient,
+                                                     CONST SECURITY_QUALITY_OF_SERVICE *pqosNew,
+                                                     PSECURITY_QUALITY_OF_SERVICE pqosPrev)
 {
      FIXME("(%p %p %p): stub\n", hwndClient, pqosNew, pqosPrev);
      return TRUE;
@@ -625,7 +626,7 @@ UINT WINAPI DdeInitializeW(LPDWORD pidInst, PFNCALLBACK pfnCallback,
  *    Failure: FALSE
  */
 
-BOOL WINAPI DdeUninitialize(DWORD idInst)
+BOOL WINAPI DECLSPEC_HOTPATCH DdeUninitialize(DWORD idInst)
 {
     /*  Stage one - check if we have a handle for this instance
      */
@@ -1279,8 +1280,8 @@ INT WINAPI DdeCmpStringHandles(HSZ hsz1, HSZ hsz2)
 /*****************************************************************
  *            DdeCreateDataHandle (USER32.@)
  */
-HDDEDATA WINAPI DdeCreateDataHandle(DWORD idInst, LPBYTE pSrc, DWORD cb, DWORD cbOff,
-                                    HSZ hszItem, UINT wFmt, UINT afCmd)
+HDDEDATA WINAPI DECLSPEC_HOTPATCH DdeCreateDataHandle(DWORD idInst, LPBYTE pSrc, DWORD cb, DWORD cbOff,
+                                                      HSZ hszItem, UINT wFmt, UINT afCmd)
 {
 
     /* Other than check for validity we will ignore for now idInst, hszItem.
@@ -2177,7 +2178,7 @@ static	BOOL	WDML_GetLocalConvInfo(WDML_CONV* pConv, CONVINFO* ci, DWORD id)
  *
  * FIXME: Set last DDE error on failure.
  */
-UINT WINAPI DdeQueryConvInfo(HCONV hConv, DWORD id, PCONVINFO lpConvInfo)
+UINT WINAPI DECLSPEC_HOTPATCH DdeQueryConvInfo(HCONV hConv, DWORD id, PCONVINFO lpConvInfo)
 {
     UINT	ret = lpConvInfo->cb;
     CONVINFO	ci;
diff --git a/dlls/user32/dde_server.c b/dlls/user32/dde_server.c
index a5b7430..638e548 100644
--- a/dlls/user32/dde_server.c
+++ b/dlls/user32/dde_server.c
@@ -23,6 +23,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+
 #include <stdarg.h>
 #include <string.h>
 #include "windef.h"
@@ -58,7 +60,7 @@ static LRESULT CALLBACK WDML_ServerConvProc(HWND, UINT, WPARAM, LPARAM);
  *    Success: TRUE
  *    Failure: FALSE
  */
-BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem)
+BOOL WINAPI DECLSPEC_HOTPATCH DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem)
 {
     WDML_INSTANCE*	pInstance = NULL;
     WDML_LINK*		pLink = NULL;
@@ -163,7 +165,7 @@ BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem)
  *    Success: Non-zero
  *    Failure: 0
  */
-HDDEDATA WINAPI DdeNameService(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd)
+HDDEDATA WINAPI DECLSPEC_HOTPATCH DdeNameService(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd)
 {
     WDML_SERVER*	pServer;
     WDML_INSTANCE*	pInstance;
diff --git a/dlls/user32/defwnd.c b/dlls/user32/defwnd.c
index 226b604..c669925 100644
--- a/dlls/user32/defwnd.c
+++ b/dlls/user32/defwnd.c
@@ -811,7 +811,7 @@ static LPARAM DEFWND_GetTextA( WND *wndPtr, LPSTR dest, WPARAM wParam )
  *
  * See DefWindowProcW.
  */
-LRESULT WINAPI DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
+LRESULT WINAPI DECLSPEC_HOTPATCH DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
 {
     LRESULT result = 0;
     HWND full_handle;
@@ -955,7 +955,7 @@ static LPARAM DEFWND_GetTextW( WND *wndPtr, LPWSTR dest, WPARAM wParam )
  *  RETURNS
  *     Return value is dependent upon the message.
 */
-LRESULT WINAPI DefWindowProcW(
+LRESULT WINAPI DECLSPEC_HOTPATCH DECLSPEC_HOTPATCH DefWindowProcW(
     HWND hwnd,      /* [in] window procedure receiving message */
     UINT msg,       /* [in] message identifier */
     WPARAM wParam,  /* [in] first message parameter */
diff --git a/dlls/user32/desktop.c b/dlls/user32/desktop.c
index 92ee21a..6fe455f 100644
--- a/dlls/user32/desktop.c
+++ b/dlls/user32/desktop.c
@@ -122,7 +122,7 @@ LRESULT WINAPI DesktopWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lP
  *           PaintDesktop   (USER32.@)
  *
  */
-BOOL WINAPI PaintDesktop(HDC hdc)
+BOOL WINAPI DECLSPEC_HOTPATCH PaintDesktop(HDC hdc)
 {
     HWND hwnd = GetDesktopWindow();
 
@@ -180,7 +180,7 @@ BOOL WINAPI PaintDesktop(HDC hdc)
  *
  * FIXME: is there a unicode version?
  */
-BOOL WINAPI SetDeskWallPaper( LPCSTR filename )
+BOOL WINAPI DECLSPEC_HOTPATCH SetDeskWallPaper( LPCSTR filename )
 {
     HBITMAP hbitmap;
     HDC hdc;
diff --git a/dlls/user32/dialog.c b/dlls/user32/dialog.c
index 2aa89d9..e5d76ec 100644
--- a/dlls/user32/dialog.c
+++ b/dlls/user32/dialog.c
@@ -907,7 +907,7 @@ INT_PTR WINAPI DialogBoxIndirectParamW(HINSTANCE hInstance, LPCDLGTEMPLATEW temp
 /***********************************************************************
  *		EndDialog (USER32.@)
  */
-BOOL WINAPI EndDialog( HWND hwnd, INT_PTR retval )
+BOOL WINAPI DECLSPEC_HOTPATCH EndDialog( HWND hwnd, INT_PTR retval )
 {
     BOOL wasEnabled = TRUE;
     DIALOGINFO * dlgInfo;
@@ -1268,7 +1268,7 @@ BOOL WINAPI IsDialogMessageW( HWND hwndDlg, LPMSG msg )
 /***********************************************************************
  *		GetDlgCtrlID (USER32.@)
  */
-INT WINAPI GetDlgCtrlID( HWND hwnd )
+INT WINAPI DECLSPEC_HOTPATCH GetDlgCtrlID( HWND hwnd )
 {
     return GetWindowLongPtrW( hwnd, GWLP_ID );
 }
@@ -1517,7 +1517,7 @@ BOOL WINAPI MapDialogRect( HWND hwnd, LPRECT rect )
  * 1. hwndCtrl can be hwndDlg in which case it behaves as for NULL
  * 2. Prev of NULL or hwndDlg fails
  */
-HWND WINAPI GetNextDlgGroupItem( HWND hwndDlg, HWND hwndCtrl, BOOL fPrevious )
+HWND WINAPI DECLSPEC_HOTPATCH GetNextDlgGroupItem( HWND hwndDlg, HWND hwndCtrl, BOOL fPrevious )
 {
     HWND hwnd, hwndNext, retvalue, hwndLastGroup = 0;
     BOOL fLooped=FALSE;
diff --git a/dlls/user32/exticon.c b/dlls/user32/exticon.c
index fb9ff03..24f073b 100644
--- a/dlls/user32/exticon.c
+++ b/dlls/user32/exticon.c
@@ -644,7 +644,7 @@ UINT WINAPI PrivateExtractIconsW (
  *           PrivateExtractIconsA			[USER32.@]
  */
 
-UINT WINAPI PrivateExtractIconsA (
+UINT WINAPI DECLSPEC_HOTPATCH PrivateExtractIconsA (
 	LPCSTR lpstrFile,
 	int nIndex,
 	int sizeX,
@@ -670,7 +670,7 @@ UINT WINAPI PrivateExtractIconsA (
  * NOTES
  *  if nIndex == -1 it returns the number of icons in any case !!!
  */
-UINT WINAPI PrivateExtractIconExW (
+UINT WINAPI DECLSPEC_HOTPATCH PrivateExtractIconExW (
 	LPCWSTR lpwstrFile,
 	int nIndex,
 	HICON * phIconLarge,
@@ -724,7 +724,7 @@ UINT WINAPI PrivateExtractIconExW (
 /***********************************************************************
  *           PrivateExtractIconExA			[USER32.@]
  */
-UINT WINAPI PrivateExtractIconExA (
+UINT WINAPI DECLSPEC_HOTPATCH PrivateExtractIconExA (
 	LPCSTR lpstrFile,
 	int nIndex,
 	HICON * phIconLarge,
diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c
index 70a2a8a..b3fc386 100644
--- a/dlls/user32/focus.c
+++ b/dlls/user32/focus.c
@@ -224,7 +224,7 @@ BOOL FOCUS_MouseActivate( HWND hwnd )
 /*******************************************************************
  *		SetActiveWindow (USER32.@)
  */
-HWND WINAPI SetActiveWindow( HWND hwnd )
+HWND WINAPI DECLSPEC_HOTPATCH SetActiveWindow( HWND hwnd )
 {
     HWND prev;
 
@@ -248,7 +248,7 @@ HWND WINAPI SetActiveWindow( HWND hwnd )
 /*****************************************************************
  *		SetFocus  (USER32.@)
  */
-HWND WINAPI SetFocus( HWND hwnd )
+HWND WINAPI DECLSPEC_HOTPATCH SetFocus( HWND hwnd )
 {
     HWND hwndTop = hwnd;
     HWND previous = GetFocus();
@@ -404,7 +404,7 @@ BOOL WINAPI SetShellWindowEx(HWND hwndShell, HWND hwndListView)
 /*******************************************************************
 *		SetShellWindow (USER32.@)
 */
-BOOL WINAPI SetShellWindow(HWND hwndShell)
+BOOL WINAPI DECLSPEC_HOTPATCH SetShellWindow(HWND hwndShell)
 {
     return SetShellWindowEx(hwndShell, hwndShell);
 }
diff --git a/dlls/user32/hook.c b/dlls/user32/hook.c
index 2e36801..3e96880 100644
--- a/dlls/user32/hook.c
+++ b/dlls/user32/hook.c
@@ -456,7 +456,7 @@ LRESULT HOOK_CallHooks( INT id, INT code, WPARAM wparam, LPARAM lparam, BOOL uni
 /***********************************************************************
  *		SetWindowsHookA (USER32.@)
  */
-HHOOK WINAPI SetWindowsHookA( INT id, HOOKPROC proc )
+HHOOK WINAPI DECLSPEC_HOTPATCH SetWindowsHookA( INT id, HOOKPROC proc )
 {
     return SetWindowsHookExA( id, proc, 0, GetCurrentThreadId() );
 }
@@ -465,7 +465,7 @@ HHOOK WINAPI SetWindowsHookA( INT id, HOOKPROC proc )
 /***********************************************************************
  *		SetWindowsHookW (USER32.@)
  */
-HHOOK WINAPI SetWindowsHookW( INT id, HOOKPROC proc )
+HHOOK WINAPI DECLSPEC_HOTPATCH SetWindowsHookW( INT id, HOOKPROC proc )
 {
     return SetWindowsHookExW( id, proc, 0, GetCurrentThreadId() );
 }
@@ -633,9 +633,9 @@ BOOL WINAPI CallMsgFilterW( LPMSG msg, INT code )
  *  Success: A handle representing the hook.
  *  Failure: A NULL handle.
  */
-HWINEVENTHOOK WINAPI SetWinEventHook(DWORD event_min, DWORD event_max,
-                                     HMODULE inst, WINEVENTPROC proc,
-                                     DWORD pid, DWORD tid, DWORD flags)
+HWINEVENTHOOK WINAPI DECLSPEC_HOTPATCH SetWinEventHook(DWORD event_min, DWORD event_max,
+                                                       HMODULE inst, WINEVENTPROC proc,
+                                                       DWORD pid, DWORD tid, DWORD flags)
 {
     HWINEVENTHOOK handle = 0;
     WCHAR module[MAX_PATH];
@@ -807,7 +807,7 @@ static inline void find_hook_close(DWORD id)
  * RETURNS
  *  Nothing.
  */
-void WINAPI NotifyWinEvent(DWORD event, HWND hwnd, LONG object_id, LONG child_id)
+void WINAPI DECLSPEC_HOTPATCH NotifyWinEvent(DWORD event, HWND hwnd, LONG object_id, LONG child_id)
 {
     struct hook_info info;
 
@@ -891,7 +891,7 @@ void WINAPI NotifyWinEvent(DWORD event, HWND hwnd, LONG object_id, LONG child_id
  * BUGS
  *  Not implemented.
  */
-BOOL WINAPI IsWinEventHookInstalled(DWORD dwEvent)
+BOOL WINAPI DECLSPEC_HOTPATCH IsWinEventHookInstalled(DWORD dwEvent)
 {
     /* FIXME: Needed by Office 2007 installer */
     WARN("(%d)-stub!\n", dwEvent);
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index 28377e7..059e781 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -337,7 +337,7 @@ HWND WINAPI DECLSPEC_HOTPATCH SetCapture( HWND hwnd )
 /**********************************************************************
  *		ReleaseCapture (USER32.@)
  */
-BOOL WINAPI DECLSPEC_HOTPATCH ReleaseCapture(void)
+BOOL WINAPI DECLSPEC_HOTPATCH DECLSPEC_HOTPATCH ReleaseCapture(void)
 {
     BOOL ret = set_capture_window( 0, 0, NULL );
 
@@ -488,7 +488,7 @@ UINT WINAPI GetRawInputDeviceList(PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT
 /******************************************************************
 *		RegisterRawInputDevices (USER32.@)
 */
-BOOL WINAPI DECLSPEC_HOTPATCH RegisterRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, UINT uiNumDevices, UINT cbSize)
+BOOL WINAPI DECLSPEC_HOTPATCH DECLSPEC_HOTPATCH RegisterRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, UINT uiNumDevices, UINT cbSize)
 {
     FIXME("(pRawInputDevices=%p, uiNumDevices=%d, cbSize=%d) stub!\n", pRawInputDevices, uiNumDevices, cbSize);
 
@@ -499,7 +499,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH RegisterRawInputDevices(PRAWINPUTDEVICE pRawInputD
 /******************************************************************
 *		GetRawInputData (USER32.@)
 */
-UINT WINAPI GetRawInputData(HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader)
+UINT WINAPI DECLSPEC_HOTPATCH GetRawInputData(HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader)
 {
     FIXME("(hRawInput=%p, uiCommand=%d, pData=%p, pcbSize=%p, cbSizeHeader=%d) stub!\n",
             hRawInput, uiCommand, pData, pcbSize, cbSizeHeader);
@@ -522,7 +522,7 @@ UINT WINAPI DECLSPEC_HOTPATCH GetRawInputBuffer(PRAWINPUT pData, PUINT pcbSize,
 /******************************************************************
 *		GetRawInputDeviceInfoA (USER32.@)
 */
-UINT WINAPI GetRawInputDeviceInfoA(HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize)
+UINT WINAPI DECLSPEC_HOTPATCH GetRawInputDeviceInfoA(HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize)
 {
     FIXME("(hDevice=%p, uiCommand=%d, pData=%p, pcbSize=%p) stub!\n", hDevice, uiCommand, pData, pcbSize);
 
@@ -533,7 +533,7 @@ UINT WINAPI GetRawInputDeviceInfoA(HANDLE hDevice, UINT uiCommand, LPVOID pData,
 /******************************************************************
 *		GetRawInputDeviceInfoW (USER32.@)
 */
-UINT WINAPI GetRawInputDeviceInfoW(HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize)
+UINT WINAPI DECLSPEC_HOTPATCH GetRawInputDeviceInfoW(HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize)
 {
     FIXME("(hDevice=%p, uiCommand=%d, pData=%p, pcbSize=%p) stub!\n", hDevice, uiCommand, pData, pcbSize);
 
@@ -544,7 +544,7 @@ UINT WINAPI GetRawInputDeviceInfoW(HANDLE hDevice, UINT uiCommand, LPVOID pData,
 /******************************************************************
 *		GetRegisteredRawInputDevices (USER32.@)
 */
-UINT WINAPI GetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize)
+UINT WINAPI DECLSPEC_HOTPATCH GetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize)
 {
     FIXME("(pRawInputDevices=%p, puiNumDevices=%p, cbSize=%d) stub!\n", pRawInputDevices, puiNumDevices, cbSize);
 
@@ -555,7 +555,7 @@ UINT WINAPI GetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, PUINT
 /******************************************************************
 *		DefRawInputProc (USER32.@)
 */
-LRESULT WINAPI DefRawInputProc(PRAWINPUT *paRawInput, INT nInput, UINT cbSizeHeader)
+LRESULT WINAPI DECLSPEC_HOTPATCH DefRawInputProc(PRAWINPUT *paRawInput, INT nInput, UINT cbSizeHeader)
 {
     FIXME("(paRawInput=%p, nInput=%d, cbSizeHeader=%d) stub!\n", *paRawInput, nInput, cbSizeHeader);
 
@@ -611,7 +611,7 @@ SHORT WINAPI DECLSPEC_HOTPATCH GetKeyState(INT vkey)
 /**********************************************************************
  *		GetKeyboardState (USER32.@)
  */
-BOOL WINAPI DECLSPEC_HOTPATCH GetKeyboardState( LPBYTE state )
+BOOL WINAPI DECLSPEC_HOTPATCH DECLSPEC_HOTPATCH GetKeyboardState( LPBYTE state )
 {
     BOOL ret;
 
@@ -665,7 +665,7 @@ BOOL WINAPI SetKeyboardState( LPBYTE state )
  * VkKeyScan '^'(0x5e, 94) ... got keycode 00 ... returning 00
  * VkKeyScan '`'(0x60, 96) ... got keycode 00 ... returning 00
  */
-SHORT WINAPI VkKeyScanA(CHAR cChar)
+SHORT WINAPI DECLSPEC_HOTPATCH VkKeyScanA(CHAR cChar)
 {
     WCHAR wChar;
 
@@ -686,7 +686,7 @@ SHORT WINAPI VkKeyScanW(WCHAR cChar)
 /**********************************************************************
  *		VkKeyScanExA (USER32.@)
  */
-WORD WINAPI VkKeyScanExA(CHAR cChar, HKL dwhkl)
+WORD WINAPI DECLSPEC_HOTPATCH VkKeyScanExA(CHAR cChar, HKL dwhkl)
 {
     WCHAR wChar;
 
@@ -699,7 +699,7 @@ WORD WINAPI VkKeyScanExA(CHAR cChar, HKL dwhkl)
 /******************************************************************************
  *		VkKeyScanExW (USER32.@)
  */
-WORD WINAPI VkKeyScanExW(WCHAR cChar, HKL dwhkl)
+WORD WINAPI DECLSPEC_HOTPATCH VkKeyScanExW(WCHAR cChar, HKL dwhkl)
 {
     return USER_Driver->pVkKeyScanEx(cChar, dwhkl);
 }
@@ -735,7 +735,7 @@ INT WINAPI GetKeyboardType(INT nTypeFlag)
 /******************************************************************************
  *		MapVirtualKeyA (USER32.@)
  */
-UINT WINAPI MapVirtualKeyA(UINT code, UINT maptype)
+UINT WINAPI DECLSPEC_HOTPATCH MapVirtualKeyA(UINT code, UINT maptype)
 {
     return MapVirtualKeyExA( code, maptype, GetKeyboardLayout(0) );
 }
@@ -743,7 +743,7 @@ UINT WINAPI MapVirtualKeyA(UINT code, UINT maptype)
 /******************************************************************************
  *		MapVirtualKeyW (USER32.@)
  */
-UINT WINAPI MapVirtualKeyW(UINT code, UINT maptype)
+UINT WINAPI DECLSPEC_HOTPATCH MapVirtualKeyW(UINT code, UINT maptype)
 {
     return MapVirtualKeyExW(code, maptype, GetKeyboardLayout(0));
 }
@@ -792,7 +792,7 @@ UINT WINAPI GetKBCodePage(void)
  *          the language id. This is the way Windows default works.
  *        - the thread identifier is also ignored.
  */
-HKL WINAPI GetKeyboardLayout(DWORD thread_id)
+HKL WINAPI DECLSPEC_HOTPATCH GetKeyboardLayout(DWORD thread_id)
 {
     return USER_Driver->pGetKeyboardLayout(thread_id);
 }
@@ -812,7 +812,7 @@ BOOL WINAPI GetKeyboardLayoutNameA(LPSTR pszKLID)
 /****************************************************************************
  *		GetKeyboardLayoutNameW (USER32.@)
  */
-BOOL WINAPI GetKeyboardLayoutNameW(LPWSTR pwszKLID)
+BOOL WINAPI DECLSPEC_HOTPATCH GetKeyboardLayoutNameW(LPWSTR pwszKLID)
 {
     return USER_Driver->pGetKeyboardLayoutName(pwszKLID);
 }
@@ -850,8 +850,8 @@ INT WINAPI GetKeyNameTextW(LONG lParam, LPWSTR lpBuffer, INT nSize)
 /****************************************************************************
  *		ToUnicode (USER32.@)
  */
-INT WINAPI ToUnicode(UINT virtKey, UINT scanCode, const BYTE *lpKeyState,
-		     LPWSTR lpwStr, int size, UINT flags)
+INT WINAPI DECLSPEC_HOTPATCH ToUnicode(UINT virtKey, UINT scanCode, const BYTE *lpKeyState,
+                                       LPWSTR lpwStr, int size, UINT flags)
 {
     return ToUnicodeEx(virtKey, scanCode, lpKeyState, lpwStr, size, flags, GetKeyboardLayout(0));
 }
@@ -868,8 +868,8 @@ INT WINAPI ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState,
 /****************************************************************************
  *		ToAscii (USER32.@)
  */
-INT WINAPI ToAscii( UINT virtKey, UINT scanCode, const BYTE *lpKeyState,
-                    LPWORD lpChar, UINT flags )
+INT WINAPI DECLSPEC_HOTPATCH ToAscii( UINT virtKey, UINT scanCode, const BYTE *lpKeyState,
+                                      LPWORD lpChar, UINT flags )
 {
     return ToAsciiEx(virtKey, scanCode, lpKeyState, lpChar, flags, GetKeyboardLayout(0));
 }
@@ -903,7 +903,7 @@ HKL WINAPI ActivateKeyboardLayout(HKL hLayout, UINT flags)
 /**********************************************************************
  *		BlockInput (USER32.@)
  */
-BOOL WINAPI BlockInput(BOOL fBlockIt)
+BOOL WINAPI DECLSPEC_HOTPATCH BlockInput(BOOL fBlockIt)
 {
     FIXME_(keyboard)("(%d): stub\n", fBlockIt);
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -917,7 +917,7 @@ BOOL WINAPI BlockInput(BOOL fBlockIt)
  * Return number of values available if either input parm is
  *  0, per MS documentation.
  */
-UINT WINAPI GetKeyboardLayoutList(INT nBuff, HKL *layouts)
+UINT WINAPI DECLSPEC_HOTPATCH GetKeyboardLayoutList(INT nBuff, HKL *layouts)
 {
     HKEY hKeyKeyboard;
     DWORD rc;
@@ -981,7 +981,7 @@ UINT WINAPI GetKeyboardLayoutList(INT nBuff, HKL *layouts)
 /***********************************************************************
  *		RegisterHotKey (USER32.@)
  */
-BOOL WINAPI RegisterHotKey(HWND hwnd,INT id,UINT modifiers,UINT vk)
+BOOL WINAPI DECLSPEC_HOTPATCH RegisterHotKey(HWND hwnd,INT id,UINT modifiers,UINT vk)
 {
     static int once;
     if (!once++) FIXME_(keyboard)("(%p,%d,0x%08x,%X): stub\n",hwnd,id,modifiers,vk);
@@ -991,7 +991,7 @@ BOOL WINAPI RegisterHotKey(HWND hwnd,INT id,UINT modifiers,UINT vk)
 /***********************************************************************
  *		UnregisterHotKey (USER32.@)
  */
-BOOL WINAPI UnregisterHotKey(HWND hwnd,INT id)
+BOOL WINAPI DECLSPEC_HOTPATCH UnregisterHotKey(HWND hwnd,INT id)
 {
     static int once;
     if (!once++) FIXME_(keyboard)("(%p,%d): stub\n",hwnd,id);
diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c
index c92eeb1..f24ec27 100644
--- a/dlls/user32/mdi.c
+++ b/dlls/user32/mdi.c
@@ -80,6 +80,8 @@
  *
  */
 
+#include "config.h"
+
 #include <stdlib.h>
 #include <stdarg.h>
 #include <stdio.h>
@@ -1303,7 +1305,7 @@ LRESULT WINAPI DefFrameProcA( HWND hwnd, HWND hwndMDIClient,
 /***********************************************************************
  *		DefFrameProcW (USER32.@)
  */
-LRESULT WINAPI DefFrameProcW( HWND hwnd, HWND hwndMDIClient,
+LRESULT WINAPI DECLSPEC_HOTPATCH DefFrameProcW( HWND hwnd, HWND hwndMDIClient,
                                 UINT message, WPARAM wParam, LPARAM lParam)
 {
     MDICLIENTINFO *ci = get_client_info( hwndMDIClient );
@@ -1440,7 +1442,7 @@ LRESULT WINAPI DefMDIChildProcA( HWND hwnd, UINT message,
 /***********************************************************************
  *		DefMDIChildProcW (USER32.@)
  */
-LRESULT WINAPI DefMDIChildProcW( HWND hwnd, UINT message,
+LRESULT WINAPI DECLSPEC_HOTPATCH DefMDIChildProcW( HWND hwnd, UINT message,
                                    WPARAM wParam, LPARAM lParam )
 {
     HWND client = GetParent(hwnd);
@@ -1756,8 +1758,7 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll )
 /***********************************************************************
  *		ScrollChildren (USER32.@)
  */
-void WINAPI ScrollChildren(HWND hWnd, UINT uMsg, WPARAM wParam,
-                             LPARAM lParam)
+void WINAPI DECLSPEC_HOTPATCH ScrollChildren(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
     INT newPos = -1;
     INT curPos, length, minPos, maxPos, shift;
@@ -1840,9 +1841,8 @@ void WINAPI ScrollChildren(HWND hWnd, UINT uMsg, WPARAM wParam,
  *    Success: Number of cascaded windows.
  *    Failure: 0
  */
-WORD WINAPI
-CascadeWindows (HWND hwndParent, UINT wFlags, const RECT *lpRect,
-		UINT cKids, const HWND *lpKids)
+WORD WINAPI DECLSPEC_HOTPATCH CascadeWindows(HWND hwndParent, UINT wFlags, const RECT *lpRect,
+                                             UINT cKids, const HWND *lpKids)
 {
     FIXME("(%p,0x%08x,...,%u,...): stub\n", hwndParent, wFlags, cKids);
     return 0;
@@ -1865,9 +1865,8 @@ WORD WINAPI CascadeChildWindows( HWND parent, UINT flags )
  *    Success: Number of tiled windows.
  *    Failure: 0
  */
-WORD WINAPI
-TileWindows (HWND hwndParent, UINT wFlags, const RECT *lpRect,
-	     UINT cKids, const HWND *lpKids)
+WORD WINAPI DECLSPEC_HOTPATCH TileWindows (HWND hwndParent, UINT wFlags, const RECT *lpRect,
+                                           UINT cKids, const HWND *lpKids)
 {
     FIXME("(%p,0x%08x,...,%u,...): stub\n", hwndParent, wFlags, cKids);
     return 0;
diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c
index 24cd4e0..a40da89 100644
--- a/dlls/user32/menu.c
+++ b/dlls/user32/menu.c
@@ -3419,8 +3419,8 @@ track_menu:
 /**********************************************************************
  *           TrackPopupMenuEx   (USER32.@)
  */
-BOOL WINAPI TrackPopupMenuEx( HMENU hMenu, UINT wFlags, INT x, INT y,
-                              HWND hWnd, LPTPMPARAMS lpTpm )
+BOOL WINAPI DECLSPEC_HOTPATCH TrackPopupMenuEx( HMENU hMenu, UINT wFlags, INT x, INT y,
+                                                HWND hWnd, LPTPMPARAMS lpTpm )
 {
     POPUPMENU *menu;
     BOOL ret = FALSE;
@@ -3673,7 +3673,7 @@ BOOL WINAPI EnableMenuItem( HMENU hMenu, UINT wItemID, UINT wFlags )
 /*******************************************************************
  *         GetMenuStringA    (USER32.@)
  */
-INT WINAPI GetMenuStringA(
+INT WINAPI DECLSPEC_HOTPATCH GetMenuStringA(
 	HMENU hMenu,	/* [in] menuhandle */
 	UINT wItemID,	/* [in] menu item (dep. on wFlags) */
 	LPSTR str,	/* [out] outbuffer. If NULL, func returns entry length*/
@@ -3700,8 +3700,8 @@ INT WINAPI GetMenuStringA(
 /*******************************************************************
  *         GetMenuStringW    (USER32.@)
  */
-INT WINAPI GetMenuStringW( HMENU hMenu, UINT wItemID,
-                               LPWSTR str, INT nMaxSiz, UINT wFlags )
+INT WINAPI DECLSPEC_HOTPATCH GetMenuStringW( HMENU hMenu, UINT wItemID,
+                                             LPWSTR str, INT nMaxSiz, UINT wFlags )
 {
     MENUITEM *item;
 
@@ -3742,7 +3742,7 @@ BOOL WINAPI HiliteMenuItem( HWND hWnd, HMENU hMenu, UINT wItemID,
 /**********************************************************************
  *         GetMenuState    (USER32.@)
  */
-UINT WINAPI GetMenuState( HMENU hMenu, UINT wItemID, UINT wFlags )
+UINT WINAPI DECLSPEC_HOTPATCH GetMenuState( HMENU hMenu, UINT wItemID, UINT wFlags )
 {
     MENUITEM *item;
     TRACE("(menu=%p, id=%04x, flags=%04x);\n", hMenu, wItemID, wFlags);
@@ -3908,7 +3908,7 @@ BOOL WINAPI AppendMenuW( HMENU hMenu, UINT flags,
 /**********************************************************************
  *         RemoveMenu    (USER32.@)
  */
-BOOL WINAPI RemoveMenu( HMENU hMenu, UINT nPos, UINT wFlags )
+BOOL WINAPI DECLSPEC_HOTPATCH RemoveMenu( HMENU hMenu, UINT nPos, UINT wFlags )
 {
     LPPOPUPMENU	menu;
     MENUITEM *item;
@@ -3944,7 +3944,7 @@ BOOL WINAPI RemoveMenu( HMENU hMenu, UINT nPos, UINT wFlags )
 /**********************************************************************
  *         DeleteMenu    (USER32.@)
  */
-BOOL WINAPI DeleteMenu( HMENU hMenu, UINT nPos, UINT wFlags )
+BOOL WINAPI DECLSPEC_HOTPATCH DeleteMenu( HMENU hMenu, UINT nPos, UINT wFlags )
 {
     MENUITEM *item = MENU_FindItem( &hMenu, &nPos, wFlags );
     if (!item) return FALSE;
@@ -4073,7 +4073,7 @@ HMENU WINAPI CreateMenu(void)
 /**********************************************************************
  *         DestroyMenu    (USER32.@)
  */
-BOOL WINAPI DestroyMenu( HMENU hMenu )
+BOOL WINAPI DECLSPEC_HOTPATCH DestroyMenu( HMENU hMenu )
 {
     LPPOPUPMENU lppop;
 
@@ -4177,7 +4177,7 @@ HMENU WINAPI GetMenu( HWND hWnd )
 /**********************************************************************
  *         GetMenuBarInfo    (USER32.@)
  */
-BOOL WINAPI GetMenuBarInfo( HWND hwnd, LONG idObject, LONG idItem, PMENUBARINFO pmbi )
+BOOL WINAPI DECLSPEC_HOTPATCH GetMenuBarInfo( HWND hwnd, LONG idObject, LONG idItem, PMENUBARINFO pmbi )
 {
     FIXME( "(%p,0x%08x,0x%08x,%p)\n", hwnd, idObject, idItem, pmbi );
     return FALSE;
@@ -4274,7 +4274,7 @@ BOOL WINAPI DrawMenuBar( HWND hWnd )
  *
  * Not 100% sure about the param names, but close.
  */
-DWORD WINAPI DrawMenuBarTemp(HWND hwnd, HDC hDC, LPRECT lprect, HMENU hMenu, HFONT hFont)
+DWORD WINAPI DECLSPEC_HOTPATCH DrawMenuBarTemp(HWND hwnd, HDC hDC, LPRECT lprect, HMENU hMenu, HFONT hFont)
 {
     LPPOPUPMENU lppop;
     UINT i,retvalue;
@@ -4333,7 +4333,7 @@ END:
  *           EndMenu   (USER.187)
  *           EndMenu   (USER32.@)
  */
-BOOL WINAPI EndMenu(void)
+BOOL WINAPI DECLSPEC_HOTPATCH EndMenu(void)
 {
     /* if we are in the menu code, and it is active */
     if (!fEndMenu && top_popup)
@@ -4354,7 +4354,7 @@ BOOL WINAPI EndMenu(void)
 /*****************************************************************
  *        LoadMenuA   (USER32.@)
  */
-HMENU WINAPI LoadMenuA( HINSTANCE instance, LPCSTR name )
+HMENU WINAPI DECLSPEC_HOTPATCH LoadMenuA( HINSTANCE instance, LPCSTR name )
 {
     HRSRC hrsrc = FindResourceA( instance, name, (LPSTR)RT_MENU );
     if (!hrsrc) return 0;
@@ -4365,7 +4365,7 @@ HMENU WINAPI LoadMenuA( HINSTANCE instance, LPCSTR name )
 /*****************************************************************
  *        LoadMenuW   (USER32.@)
  */
-HMENU WINAPI LoadMenuW( HINSTANCE instance, LPCWSTR name )
+HMENU WINAPI DECLSPEC_HOTPATCH LoadMenuW( HINSTANCE instance, LPCWSTR name )
 {
     HRSRC hrsrc = FindResourceW( instance, name, (LPWSTR)RT_MENU );
     if (!hrsrc) return 0;
@@ -4417,7 +4417,7 @@ HMENU WINAPI LoadMenuIndirectW( LPCVOID template )
 /**********************************************************************
  *	    LoadMenuIndirectA    (USER32.@)
  */
-HMENU WINAPI LoadMenuIndirectA( LPCVOID template )
+HMENU WINAPI DECLSPEC_HOTPATCH LoadMenuIndirectA( LPCVOID template )
 {
     return LoadMenuIndirectW( template );
 }
@@ -4788,7 +4788,7 @@ BOOL WINAPI SetMenuItemInfoW(HMENU hmenu, UINT item, BOOL bypos,
  *		SetMenuDefaultItem    (USER32.@)
  *
  */
-BOOL WINAPI SetMenuDefaultItem(HMENU hmenu, UINT uItem, UINT bypos)
+BOOL WINAPI DECLSPEC_HOTPATCH SetMenuDefaultItem(HMENU hmenu, UINT uItem, UINT bypos)
 {
 	UINT i;
 	POPUPMENU *menu;
@@ -4836,7 +4836,7 @@ BOOL WINAPI SetMenuDefaultItem(HMENU hmenu, UINT uItem, UINT bypos)
 /**********************************************************************
  *		GetMenuDefaultItem    (USER32.@)
  */
-UINT WINAPI GetMenuDefaultItem(HMENU hmenu, UINT bypos, UINT flags)
+UINT WINAPI DECLSPEC_HOTPATCH GetMenuDefaultItem(HMENU hmenu, UINT bypos, UINT flags)
 {
 	POPUPMENU *menu;
 	MENUITEM * item;
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index 7661e3e..54352be 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -3408,7 +3408,7 @@ BOOL WINAPI ReplyMessage( LRESULT result )
 /***********************************************************************
  *		InSendMessage  (USER32.@)
  */
-BOOL WINAPI InSendMessage(void)
+BOOL WINAPI DECLSPEC_HOTPATCH InSendMessage(void)
 {
     return (InSendMessageEx(NULL) & (ISMEX_SEND|ISMEX_REPLIED)) == ISMEX_SEND;
 }
@@ -3906,7 +3906,7 @@ LPARAM WINAPI SetMessageExtraInfo(LPARAM lParam)
  * WaitMessage() suspends a thread until events appear in the thread's
  * queue.
  */
-BOOL WINAPI WaitMessage(void)
+BOOL WINAPI DECLSPEC_HOTPATCH WaitMessage(void)
 {
     return (MsgWaitForMultipleObjectsEx( 0, NULL, INFINITE, QS_ALLINPUT, 0 ) != WAIT_FAILED);
 }
@@ -4152,7 +4152,8 @@ LONG WINAPI BroadcastSystemMessageW( DWORD flags, LPDWORD recipients, UINT msg,
 /***********************************************************************
  *              BroadcastSystemMessageExA (USER32.@)
  */
-LONG WINAPI BroadcastSystemMessageExA( DWORD flags, LPDWORD recipients, UINT msg, WPARAM wp, LPARAM lp, PBSMINFO pinfo )
+LONG WINAPI DECLSPEC_HOTPATCH BroadcastSystemMessageExA( DWORD flags, LPDWORD recipients, UINT msg,
+                                                         WPARAM wp, LPARAM lp, PBSMINFO pinfo )
 {
     map_wparam_AtoW( msg, &wp, WMCHAR_MAP_NOMAPPING );
     return BroadcastSystemMessageExW( flags, recipients, msg, wp, lp, NULL );
@@ -4219,7 +4220,7 @@ BOOL WINAPI SetMessageQueue( INT size )
 /***********************************************************************
  *		MessageBeep (USER32.@)
  */
-BOOL WINAPI MessageBeep( UINT i )
+BOOL WINAPI DECLSPEC_HOTPATCH MessageBeep( UINT i )
 {
     BOOL active = TRUE;
     SystemParametersInfoA( SPI_GETBEEP, 0, &active, FALSE );
@@ -4331,7 +4332,7 @@ BOOL WINAPI KillSystemTimer( HWND hwnd, UINT_PTR id )
 /**********************************************************************
  *		IsGUIThread  (USER32.@)
  */
-BOOL WINAPI IsGUIThread( BOOL convert )
+BOOL WINAPI DECLSPEC_HOTPATCH IsGUIThread( BOOL convert )
 {
     FIXME( "%u: stub\n", convert );
     return TRUE;
@@ -4397,7 +4398,7 @@ BOOL WINAPI IsHungAppWindow( HWND hWnd )
 /******************************************************************
  *      ChangeWindowMessageFilter (USER32.@)
  */
-BOOL WINAPI ChangeWindowMessageFilter( UINT message, DWORD flag )
+BOOL WINAPI DECLSPEC_HOTPATCH ChangeWindowMessageFilter( UINT message, DWORD flag )
 {
     FIXME( "%x %08x\n", message, flag );
     return TRUE;
diff --git a/dlls/user32/misc.c b/dlls/user32/misc.c
index 4b38dd2..63117fe 100644
--- a/dlls/user32/misc.c
+++ b/dlls/user32/misc.c
@@ -20,6 +20,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+
 #include <stdarg.h>
 
 #include "windef.h"
@@ -128,8 +130,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(win);
  * USIG_FLAGS_FAULT
  *     The signal is being sent due to a fault.
  */
-WORD WINAPI UserSignalProc( UINT uCode, DWORD dwThreadOrProcessID,
-                            DWORD dwFlags, HMODULE16 hModule )
+WORD WINAPI DECLSPEC_HOTPATCH UserSignalProc( UINT uCode, DWORD dwThreadOrProcessID,
+                                              DWORD dwFlags, HMODULE16 hModule )
 {
     FIXME("(%04x, %08x, %04x, %04x)\n",
           uCode, dwThreadOrProcessID, dwFlags, hModule );
@@ -168,7 +170,7 @@ void WINAPI SetLastErrorEx(
 /******************************************************************************
  * GetAltTabInfoA [USER32.@]
  */
-BOOL WINAPI GetAltTabInfoA(HWND hwnd, int iItem, PALTTABINFO pati, LPSTR pszItemText, UINT cchItemText)
+BOOL WINAPI DECLSPEC_HOTPATCH GetAltTabInfoA(HWND hwnd, int iItem, PALTTABINFO pati, LPSTR pszItemText, UINT cchItemText)
 {
     FIXME("(%p, 0x%08x, %p, %p, 0x%08x)\n", hwnd, iItem, pati, pszItemText, cchItemText);
     return FALSE;
@@ -177,7 +179,7 @@ BOOL WINAPI GetAltTabInfoA(HWND hwnd, int iItem, PALTTABINFO pati, LPSTR pszItem
 /******************************************************************************
  * GetAltTabInfoW [USER32.@]
  */
-BOOL WINAPI GetAltTabInfoW(HWND hwnd, int iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText)
+BOOL WINAPI DECLSPEC_HOTPATCH GetAltTabInfoW(HWND hwnd, int iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText)
 {
     FIXME("(%p, 0x%08x, %p, %p, 0x%08x)\n", hwnd, iItem, pati, pszItemText, cchItemText);
     return FALSE;
@@ -193,7 +195,7 @@ BOOL WINAPI GetAltTabInfoW(HWND hwnd, int iItem, PALTTABINFO pati, LPWSTR pszIte
  * RETURNS
  *    Nothing.
  */
-VOID WINAPI SetDebugErrorLevel( DWORD dwLevel )
+VOID WINAPI DECLSPEC_HOTPATCH SetDebugErrorLevel( DWORD dwLevel )
 {
     FIXME("(%d): stub\n", dwLevel);
 }
@@ -202,7 +204,7 @@ VOID WINAPI SetDebugErrorLevel( DWORD dwLevel )
 /***********************************************************************
  *		SetWindowStationUser (USER32.@)
  */
-DWORD WINAPI SetWindowStationUser(DWORD x1,DWORD x2)
+DWORD WINAPI DECLSPEC_HOTPATCH SetWindowStationUser(DWORD x1,DWORD x2)
 {
     FIXME("(0x%08x,0x%08x),stub!\n",x1,x2);
     return 1;
@@ -211,7 +213,7 @@ DWORD WINAPI SetWindowStationUser(DWORD x1,DWORD x2)
 /***********************************************************************
  *		RegisterLogonProcess (USER32.@)
  */
-DWORD WINAPI RegisterLogonProcess(HANDLE hprocess,BOOL x)
+DWORD WINAPI DECLSPEC_HOTPATCH RegisterLogonProcess(HANDLE hprocess,BOOL x)
 {
     FIXME("(%p,%d),stub!\n",hprocess,x);
     return 1;
@@ -220,7 +222,7 @@ DWORD WINAPI RegisterLogonProcess(HANDLE hprocess,BOOL x)
 /***********************************************************************
  *		SetLogonNotifyWindow (USER32.@)
  */
-DWORD WINAPI SetLogonNotifyWindow(HWINSTA hwinsta,HWND hwnd)
+DWORD WINAPI DECLSPEC_HOTPATCH SetLogonNotifyWindow(HWINSTA hwinsta,HWND hwnd)
 {
     FIXME("(%p,%p),stub!\n",hwinsta,hwnd);
     return 1;
@@ -450,7 +452,7 @@ BOOL WINAPI EnumDisplayMonitors( HDC hdc, LPRECT rect, MONITORENUMPROC proc, LPA
 /***********************************************************************
  *		RegisterSystemThread (USER32.@)
  */
-void WINAPI RegisterSystemThread(DWORD flags, DWORD reserved)
+void WINAPI DECLSPEC_HOTPATCH RegisterSystemThread(DWORD flags, DWORD reserved)
 {
     FIXME("(%08x, %08x)\n", flags, reserved);
 }
@@ -458,7 +460,7 @@ void WINAPI RegisterSystemThread(DWORD flags, DWORD reserved)
 /***********************************************************************
  *           RegisterShellHookWindow			[USER32.@]
  */
-BOOL WINAPI RegisterShellHookWindow ( HWND hWnd )
+BOOL WINAPI DECLSPEC_HOTPATCH RegisterShellHookWindow ( HWND hWnd )
 {
     FIXME("(%p): stub\n", hWnd);
     return 0;
@@ -468,7 +470,7 @@ BOOL WINAPI RegisterShellHookWindow ( HWND hWnd )
 /***********************************************************************
  *           DeregisterShellHookWindow			[USER32.@]
  */
-HRESULT WINAPI DeregisterShellHookWindow ( DWORD u )
+HRESULT WINAPI DECLSPEC_HOTPATCH DeregisterShellHookWindow ( DWORD u )
 {
     FIXME("0x%08x stub\n",u);
     return 0;
@@ -479,7 +481,7 @@ HRESULT WINAPI DeregisterShellHookWindow ( DWORD u )
 /***********************************************************************
  *           RegisterTasklist   			[USER32.@]
  */
-DWORD WINAPI RegisterTasklist (DWORD x)
+DWORD WINAPI DECLSPEC_HOTPATCH RegisterTasklist (DWORD x)
 {
     FIXME("0x%08x\n",x);
     return TRUE;
@@ -491,7 +493,7 @@ DWORD WINAPI RegisterTasklist (DWORD x)
  *
  * See RegisterDeviceNotificationW.
  */
-HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE hnd, LPVOID notifyfilter, DWORD flags)
+HDEVNOTIFY WINAPI DECLSPEC_HOTPATCH RegisterDeviceNotificationA(HANDLE hnd, LPVOID notifyfilter, DWORD flags)
 {
     FIXME("(hwnd=%p, filter=%p,flags=0x%08x) returns a fake device notification handle!\n",
           hnd,notifyfilter,flags );
@@ -521,7 +523,7 @@ HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE hnd, LPVOID notifyfilter, D
  *| DEVICE_NOTIFY_WINDOW_HANDLE  - hRecepient is a window handle
  *| DEVICE_NOTIFY_SERVICE_HANDLE - hRecepient is a service status handle
  */
-HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE hRecepient, LPVOID pNotificationFilter, DWORD dwFlags)
+HDEVNOTIFY WINAPI DECLSPEC_HOTPATCH RegisterDeviceNotificationW(HANDLE hRecepient, LPVOID pNotificationFilter, DWORD dwFlags)
 {
     FIXME("(hwnd=%p, filter=%p,flags=0x%08x) returns a fake device notification handle!\n",
           hRecepient,pNotificationFilter,dwFlags );
@@ -532,7 +534,7 @@ HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE hRecepient, LPVOID pNotific
  *		UnregisterDeviceNotification (USER32.@)
  *
  */
-BOOL  WINAPI UnregisterDeviceNotification(HDEVNOTIFY hnd)
+BOOL WINAPI DECLSPEC_HOTPATCH UnregisterDeviceNotification(HDEVNOTIFY hnd)
 {
     FIXME("(handle=%p), STUB!\n", hnd);
     return TRUE;
@@ -541,7 +543,7 @@ BOOL  WINAPI UnregisterDeviceNotification(HDEVNOTIFY hnd)
 /***********************************************************************
  *           GetAppCompatFlags   (USER32.@)
  */
-DWORD WINAPI GetAppCompatFlags( HTASK hTask )
+DWORD WINAPI DECLSPEC_HOTPATCH GetAppCompatFlags( HTASK hTask )
 {
     FIXME("(%p) stub\n", hTask);
     return 0;
@@ -550,7 +552,7 @@ DWORD WINAPI GetAppCompatFlags( HTASK hTask )
 /***********************************************************************
  *           GetAppCompatFlags2   (USER32.@)
  */
-DWORD WINAPI GetAppCompatFlags2( HTASK hTask )
+DWORD WINAPI DECLSPEC_HOTPATCH GetAppCompatFlags2( HTASK hTask )
 {
     FIXME("(%p) stub\n", hTask);
     return 0;
@@ -583,7 +585,7 @@ VOID WINAPI LoadLocalFonts(VOID)
 /***********************************************************************
  *		User32InitializeImmEntryTable
  */
-BOOL WINAPI User32InitializeImmEntryTable(LPVOID ptr)
+BOOL WINAPI DECLSPEC_HOTPATCH User32InitializeImmEntryTable(LPVOID ptr)
 {
   FIXME("(%p): stub\n", ptr);
   return TRUE;
@@ -593,7 +595,7 @@ BOOL WINAPI User32InitializeImmEntryTable(LPVOID ptr)
  * WINNLSGetIMEHotkey [USER32.@]
  *
  */
-UINT WINAPI WINNLSGetIMEHotkey(HWND hUnknown1)
+UINT WINAPI DECLSPEC_HOTPATCH WINNLSGetIMEHotkey(HWND hUnknown1)
 {
     FIXME("hUnknown1 %p: stub!\n", hUnknown1);
     return 0; /* unknown */
@@ -603,7 +605,7 @@ UINT WINAPI WINNLSGetIMEHotkey(HWND hUnknown1)
  * WINNLSEnableIME [USER32.@]
  *
  */
-BOOL WINAPI WINNLSEnableIME(HWND hUnknown1, BOOL bUnknown2)
+BOOL WINAPI DECLSPEC_HOTPATCH WINNLSEnableIME(HWND hUnknown1, BOOL bUnknown2)
 {
     FIXME("hUnknown1 %p bUnknown2 %d: stub!\n", hUnknown1, bUnknown2);
     return TRUE; /* success (?) */
@@ -613,7 +615,7 @@ BOOL WINAPI WINNLSEnableIME(HWND hUnknown1, BOOL bUnknown2)
  * WINNLSGetEnableStatus [USER32.@]
  *
  */
-BOOL WINAPI WINNLSGetEnableStatus(HWND hUnknown1)
+BOOL WINAPI DECLSPEC_HOTPATCH WINNLSGetEnableStatus(HWND hUnknown1)
 {
     FIXME("hUnknown1 %p: stub!\n", hUnknown1);
     return TRUE; /* success (?) */
@@ -623,7 +625,7 @@ BOOL WINAPI WINNLSGetEnableStatus(HWND hUnknown1)
  * SendIMEMessageExA [USER32.@]
  *
  */
-LRESULT WINAPI SendIMEMessageExA(HWND p1, LPARAM p2)
+LRESULT WINAPI DECLSPEC_HOTPATCH SendIMEMessageExA(HWND p1, LPARAM p2)
 {
   FIXME("(%p,%lx): stub\n", p1, p2);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -634,7 +636,7 @@ LRESULT WINAPI SendIMEMessageExA(HWND p1, LPARAM p2)
  * SendIMEMessageExW [USER32.@]
  *
  */
-LRESULT WINAPI SendIMEMessageExW(HWND p1, LPARAM p2)
+LRESULT WINAPI DECLSPEC_HOTPATCH SendIMEMessageExW(HWND p1, LPARAM p2)
 {
   FIXME("(%p,%lx): stub\n", p1, p2);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -645,7 +647,7 @@ LRESULT WINAPI SendIMEMessageExW(HWND p1, LPARAM p2)
  * DisableProcessWindowsGhosting [USER32.@]
  *
  */
-VOID WINAPI DisableProcessWindowsGhosting(VOID)
+VOID WINAPI DECLSPEC_HOTPATCH DisableProcessWindowsGhosting(VOID)
 {
   FIXME(": stub\n");
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
diff --git a/dlls/user32/painting.c b/dlls/user32/painting.c
index c3a25fb..9df9252 100644
--- a/dlls/user32/painting.c
+++ b/dlls/user32/painting.c
@@ -899,7 +899,7 @@ BOOL WINAPI EndPaint( HWND hwnd, const PAINTSTRUCT *lps )
 /***********************************************************************
  *		GetDCEx (USER32.@)
  */
-HDC WINAPI GetDCEx( HWND hwnd, HRGN hrgnClip, DWORD flags )
+HDC WINAPI DECLSPEC_HOTPATCH GetDCEx( HWND hwnd, HRGN hrgnClip, DWORD flags )
 {
     const DWORD clip_flags = DCX_PARENTCLIP | DCX_CLIPSIBLINGS | DCX_CLIPCHILDREN | DCX_WINDOW;
     const DWORD user_flags = clip_flags | DCX_NORESETATTRS; /* flags that can be set by user */
@@ -1058,7 +1058,7 @@ HDC WINAPI GetDC( HWND hwnd )
 /***********************************************************************
  *		GetWindowDC (USER32.@)
  */
-HDC WINAPI GetWindowDC( HWND hwnd )
+HDC WINAPI DECLSPEC_HOTPATCH GetWindowDC( HWND hwnd )
 {
     return GetDCEx( hwnd, 0, DCX_USESTYLE | DCX_WINDOW );
 }
diff --git a/dlls/user32/property.c b/dlls/user32/property.c
index 8350c97..488cdf0 100644
--- a/dlls/user32/property.c
+++ b/dlls/user32/property.c
@@ -96,7 +96,7 @@ static BOOL CALLBACK EnumPropsW_relay( HWND hwnd, LPWSTR str, HANDLE handle, ULO
 /***********************************************************************
  *              EnumPropsA   (USER32.@)
  */
-INT WINAPI EnumPropsA( HWND hwnd, PROPENUMPROCA func )
+INT WINAPI DECLSPEC_HOTPATCH EnumPropsA( HWND hwnd, PROPENUMPROCA func )
 {
     return EnumPropsExA( hwnd, EnumPropsA_relay, (LPARAM)func );
 }
@@ -105,7 +105,7 @@ INT WINAPI EnumPropsA( HWND hwnd, PROPENUMPROCA func )
 /***********************************************************************
  *              EnumPropsW   (USER32.@)
  */
-INT WINAPI EnumPropsW( HWND hwnd, PROPENUMPROCW func )
+INT WINAPI DECLSPEC_HOTPATCH EnumPropsW( HWND hwnd, PROPENUMPROCW func )
 {
     return EnumPropsExW( hwnd, EnumPropsW_relay, (LPARAM)func );
 }
diff --git a/dlls/user32/resource.c b/dlls/user32/resource.c
index 1917d51..6d8bc22 100644
--- a/dlls/user32/resource.c
+++ b/dlls/user32/resource.c
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+
 #include <stdarg.h>
 
 #include "windef.h"
@@ -118,7 +120,7 @@ INT WINAPI CopyAcceleratorTableA(HACCEL src, LPACCEL dst, INT count)
 /**********************************************************************
  *             CopyAcceleratorTableW   (USER32.@)
  */
-INT WINAPI CopyAcceleratorTableW(HACCEL src, LPACCEL dst, INT count)
+INT WINAPI DECLSPEC_HOTPATCH CopyAcceleratorTableW(HACCEL src, LPACCEL dst, INT count)
 {
     struct accelerator *accel;
     int i;
@@ -218,7 +220,7 @@ HACCEL WINAPI CreateAcceleratorTableW(LPACCEL lpaccel, INT count)
  *    Success: TRUE
  *    Failure: FALSE
  */
-BOOL WINAPI DestroyAcceleratorTable( HACCEL handle )
+BOOL WINAPI DECLSPEC_HOTPATCH DestroyAcceleratorTable( HACCEL handle )
 {
     struct accelerator *accel;
 
@@ -234,8 +236,8 @@ BOOL WINAPI DestroyAcceleratorTable( HACCEL handle )
 /**********************************************************************
  *	LoadStringW		(USER32.@)
  */
-INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
-                            LPWSTR buffer, INT buflen )
+INT WINAPI DECLSPEC_HOTPATCH LoadStringW( HINSTANCE instance, UINT resource_id,
+                                          LPWSTR buffer, INT buflen )
 {
     HGLOBAL hmem;
     HRSRC hrsrc;
@@ -320,7 +322,7 @@ INT WINAPI LoadStringA( HINSTANCE instance, UINT resource_id, LPSTR buffer, INT
 /**********************************************************************
  *	GetGuiResources	(USER32.@)
  */
-DWORD WINAPI GetGuiResources( HANDLE hProcess, DWORD uiFlags )
+DWORD WINAPI DECLSPEC_HOTPATCH GetGuiResources( HANDLE hProcess, DWORD uiFlags )
 {
     static BOOL warn = TRUE;
 
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index 0bd1dd2..1fc512e 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -2885,7 +2885,7 @@ BOOL WINAPI SwapMouseButton( BOOL fSwap )
 /**********************************************************************
  *		SetDoubleClickTime (USER32.@)
  */
-BOOL WINAPI SetDoubleClickTime( UINT interval )
+BOOL WINAPI DECLSPEC_HOTPATCH SetDoubleClickTime( UINT interval )
 {
     return SystemParametersInfoW(SPI_SETDOUBLECLICKTIME, interval, 0, 0);
 }
@@ -2894,7 +2894,7 @@ BOOL WINAPI SetDoubleClickTime( UINT interval )
 /**********************************************************************
  *		GetDoubleClickTime (USER32.@)
  */
-UINT WINAPI GetDoubleClickTime(void)
+UINT WINAPI DECLSPEC_HOTPATCH GetDoubleClickTime(void)
 {
     UINT time = 0;
 
@@ -3104,8 +3104,8 @@ LONG WINAPI ChangeDisplaySettingsExA( LPCSTR devname, LPDEVMODEA devmode, HWND h
 /***********************************************************************
  *		ChangeDisplaySettingsExW (USER32.@)
  */
-LONG WINAPI ChangeDisplaySettingsExW( LPCWSTR devname, LPDEVMODEW devmode, HWND hwnd,
-                                      DWORD flags, LPVOID lparam )
+LONG WINAPI DECLSPEC_HOTPATCH ChangeDisplaySettingsExW( LPCWSTR devname, LPDEVMODEW devmode, HWND hwnd,
+                                                        DWORD flags, LPVOID lparam )
 {
     /* make sure the desktop window is created before mode changing */
     GetDesktopWindow();
@@ -3178,8 +3178,8 @@ BOOL WINAPI EnumDisplaySettingsExA(LPCSTR lpszDeviceName, DWORD iModeNum,
 /***********************************************************************
  *		EnumDisplaySettingsExW (USER32.@)
  */
-BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR lpszDeviceName, DWORD iModeNum,
-                                   LPDEVMODEW lpDevMode, DWORD dwFlags)
+BOOL WINAPI DECLSPEC_HOTPATCH EnumDisplaySettingsExW(LPCWSTR lpszDeviceName, DWORD iModeNum,
+                                                     LPDEVMODEW lpDevMode, DWORD dwFlags)
 {
     /* make sure the desktop window is created before mode enumeration */
     GetDesktopWindow();
@@ -3190,7 +3190,7 @@ BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR lpszDeviceName, DWORD iModeNum,
 /***********************************************************************
  *              SetProcessDPIAware   (USER32.@)
  */
-BOOL WINAPI SetProcessDPIAware( VOID )
+BOOL WINAPI DECLSPEC_HOTPATCH SetProcessDPIAware( VOID )
 {
     FIXME( "stub!\n");
 
diff --git a/dlls/user32/uitools.c b/dlls/user32/uitools.c
index e11c411..5673ba0 100644
--- a/dlls/user32/uitools.c
+++ b/dlls/user32/uitools.c
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+
 #include <stdarg.h>
 
 #include "windef.h"
@@ -601,7 +603,7 @@ static BOOL UITOOLS95_DrawRectEdge(HDC hdc, LPRECT rc,
 /**********************************************************************
  *          DrawEdge   (USER32.@)
  */
-BOOL WINAPI DrawEdge( HDC hdc, LPRECT rc, UINT edge, UINT flags )
+BOOL WINAPI DECLSPEC_HOTPATCH DrawEdge( HDC hdc, LPRECT rc, UINT edge, UINT flags )
 {
     TRACE("%p %s %04x %04x\n", hdc, wine_dbgstr_rect(rc), edge, flags );
 
@@ -1496,7 +1498,7 @@ INT WINAPI FrameRect( HDC hdc, const RECT *rect, HBRUSH hbrush )
  *
  * FIXME: PatBlt(PATINVERT) with background brush.
  */
-BOOL WINAPI DrawFocusRect( HDC hdc, const RECT* rc )
+BOOL WINAPI DECLSPEC_HOTPATCH DrawFocusRect( HDC hdc, const RECT* rc )
 {
     HBRUSH hOldBrush;
     HPEN hOldPen, hNewPen;
@@ -1526,7 +1528,7 @@ BOOL WINAPI DrawFocusRect( HDC hdc, const RECT* rc )
 /**********************************************************************
  *		DrawAnimatedRects (USER32.@)
  */
-BOOL WINAPI DrawAnimatedRects( HWND hwnd, INT idAni, const RECT* lprcFrom, const RECT* lprcTo )
+BOOL WINAPI DECLSPEC_HOTPATCH DrawAnimatedRects( HWND hwnd, INT idAni, const RECT* lprcFrom, const RECT* lprcTo )
 {
     FIXME("(%p,%d,%p,%p): stub\n",hwnd,idAni,lprcFrom,lprcTo);
     return TRUE;
diff --git a/dlls/user32/user_main.c b/dlls/user32/user_main.c
index 2c2b256..4acf794 100644
--- a/dlls/user32/user_main.c
+++ b/dlls/user32/user_main.c
@@ -18,6 +18,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
@@ -345,7 +347,7 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
 /***********************************************************************
  *		ExitWindowsEx (USER32.@)
  */
-BOOL WINAPI ExitWindowsEx( UINT flags, DWORD reason )
+BOOL WINAPI DECLSPEC_HOTPATCH ExitWindowsEx( UINT flags, DWORD reason )
 {
     static const WCHAR winebootW[]    = { '\\','w','i','n','e','b','o','o','t','.','e','x','e',0 };
     static const WCHAR killW[]        = { ' ','-','-','k','i','l','l',0 };
@@ -389,7 +391,7 @@ BOOL WINAPI ExitWindowsEx( UINT flags, DWORD reason )
 /***********************************************************************
  *		LockWorkStation (USER32.@)
  */
-BOOL WINAPI LockWorkStation(void)
+BOOL WINAPI DECLSPEC_HOTPATCH LockWorkStation(void)
 {
     TRACE(": stub\n");
     SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
@@ -399,7 +401,7 @@ BOOL WINAPI LockWorkStation(void)
 /***********************************************************************
  *		RegisterServicesProcess (USER32.@)
  */
-int WINAPI RegisterServicesProcess(DWORD ServicesProcessId)
+int WINAPI DECLSPEC_HOTPATCH RegisterServicesProcess(DWORD ServicesProcessId)
 {
     FIXME("(0x%x): stub\n", ServicesProcessId);
     return 0;
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index b61d183..3913735 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -1627,7 +1627,7 @@ static void WIN_SendDestroyMsg( HWND hwnd )
 /***********************************************************************
  *		DestroyWindow (USER32.@)
  */
-BOOL WINAPI DestroyWindow( HWND hwnd )
+BOOL WINAPI DECLSPEC_HOTPATCH DestroyWindow( HWND hwnd )
 {
     BOOL is_child;
 
@@ -1976,7 +1976,7 @@ BOOL WINAPI EnableWindow( HWND hwnd, BOOL enable )
 /***********************************************************************
  *		IsWindowEnabled (USER32.@)
  */
-BOOL WINAPI IsWindowEnabled(HWND hWnd)
+BOOL WINAPI DECLSPEC_HOTPATCH IsWindowEnabled(HWND hWnd)
 {
     return !(GetWindowLongW( hWnd, GWL_STYLE ) & WS_DISABLED);
 }
@@ -2591,7 +2591,7 @@ BOOL WINAPI SetWindowTextW( HWND hwnd, LPCWSTR lpString )
 /*******************************************************************
  *		GetWindowTextLengthA (USER32.@)
  */
-INT WINAPI GetWindowTextLengthA( HWND hwnd )
+INT WINAPI DECLSPEC_HOTPATCH GetWindowTextLengthA( HWND hwnd )
 {
     return SendMessageA( hwnd, WM_GETTEXTLENGTH, 0, 0 );
 }
@@ -2599,7 +2599,7 @@ INT WINAPI GetWindowTextLengthA( HWND hwnd )
 /*******************************************************************
  *		GetWindowTextLengthW (USER32.@)
  */
-INT WINAPI GetWindowTextLengthW( HWND hwnd )
+INT WINAPI DECLSPEC_HOTPATCH GetWindowTextLengthW( HWND hwnd )
 {
     return SendMessageW( hwnd, WM_GETTEXTLENGTH, 0, 0 );
 }
@@ -2994,7 +2994,7 @@ HWND WINAPI GetWindow( HWND hwnd, UINT rel )
 /*******************************************************************
  *		ShowOwnedPopups (USER32.@)
  */
-BOOL WINAPI ShowOwnedPopups( HWND owner, BOOL fShow )
+BOOL WINAPI DECLSPEC_HOTPATCH ShowOwnedPopups( HWND owner, BOOL fShow )
 {
     int count = 0;
     WND *pWnd;
@@ -3078,7 +3078,7 @@ HWND *WIN_ListChildren( HWND hwnd )
 /*******************************************************************
  *		EnumWindows (USER32.@)
  */
-BOOL WINAPI EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam )
+BOOL WINAPI DECLSPEC_HOTPATCH EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam )
 {
     HWND *list;
     BOOL ret = TRUE;
@@ -3108,7 +3108,7 @@ BOOL WINAPI EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam )
 /**********************************************************************
  *		EnumThreadWindows (USER32.@)
  */
-BOOL WINAPI EnumThreadWindows( DWORD id, WNDENUMPROC func, LPARAM lParam )
+BOOL WINAPI DECLSPEC_HOTPATCH EnumThreadWindows( DWORD id, WNDENUMPROC func, LPARAM lParam )
 {
     HWND *list;
     int i;
@@ -3259,7 +3259,7 @@ BOOL WINAPI FlashWindow( HWND hWnd, BOOL bInvert )
 /*******************************************************************
  *		FlashWindowEx (USER32.@)
  */
-BOOL WINAPI FlashWindowEx( PFLASHWINFO pfwi )
+BOOL WINAPI DECLSPEC_HOTPATCH FlashWindowEx( PFLASHWINFO pfwi )
 {
     FIXME("%p\n", pfwi);
     return TRUE;
@@ -3305,7 +3305,7 @@ BOOL WINAPI SetWindowContextHelpId( HWND hwnd, DWORD id )
 /*******************************************************************
  *		DragDetect (USER32.@)
  */
-BOOL WINAPI DragDetect( HWND hWnd, POINT pt )
+BOOL WINAPI DECLSPEC_HOTPATCH DragDetect( HWND hWnd, POINT pt )
 {
     MSG msg;
     RECT rect;
@@ -3418,7 +3418,7 @@ BOOL WINAPI GetWindowInfo( HWND hwnd, PWINDOWINFO pwi)
  *
  * NOTES: Sets the current input or interactive desktop.
  */
-BOOL WINAPI SwitchDesktop( HDESK hDesktop)
+BOOL WINAPI DECLSPEC_HOTPATCH SwitchDesktop( HDESK hDesktop)
 {
     FIXME("(hwnd %p) stub!\n", hDesktop);
     return TRUE;
@@ -3622,7 +3622,7 @@ BOOL WINAPI GetProcessDefaultLayout( DWORD *layout )
  *
  * Sets the default layout for parentless windows.
  */
-BOOL WINAPI SetProcessDefaultLayout( DWORD layout )
+BOOL WINAPI DECLSPEC_HOTPATCH SetProcessDefaultLayout( DWORD layout )
 {
     process_layout = layout;
     return TRUE;
diff --git a/dlls/user32/winhelp.c b/dlls/user32/winhelp.c
index 1ffb707..963c473 100644
--- a/dlls/user32/winhelp.c
+++ b/dlls/user32/winhelp.c
@@ -74,7 +74,7 @@ typedef struct
 /**********************************************************************
  *		WinHelpA (USER32.@)
  */
-BOOL WINAPI WinHelpA( HWND hWnd, LPCSTR lpHelpFile, UINT wCommand, ULONG_PTR dwData )
+BOOL WINAPI DECLSPEC_HOTPATCH WinHelpA( HWND hWnd, LPCSTR lpHelpFile, UINT wCommand, ULONG_PTR dwData )
 {
     COPYDATASTRUCT      cds;
     HWND                hDest;
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c
index 57ccb81..a195834 100644
--- a/dlls/user32/winpos.c
+++ b/dlls/user32/winpos.c
@@ -580,7 +580,7 @@ INT WINAPI MapWindowPoints( HWND hwndFrom, HWND hwndTo, LPPOINT lppt, UINT count
 /***********************************************************************
  *		IsIconic (USER32.@)
  */
-BOOL WINAPI IsIconic(HWND hWnd)
+BOOL WINAPI DECLSPEC_HOTPATCH IsIconic(HWND hWnd)
 {
     return (GetWindowLongW( hWnd, GWL_STYLE ) & WS_MINIMIZE) != 0;
 }
@@ -589,7 +589,7 @@ BOOL WINAPI IsIconic(HWND hWnd)
 /***********************************************************************
  *		IsZoomed (USER32.@)
  */
-BOOL WINAPI IsZoomed(HWND hWnd)
+BOOL WINAPI DECLSPEC_HOTPATCH IsZoomed(HWND hWnd)
 {
     return (GetWindowLongW( hWnd, GWL_STYLE ) & WS_MAXIMIZE) != 0;
 }
@@ -620,7 +620,7 @@ BOOL WINAPI LockSetForegroundWindow( UINT lockcode )
 /***********************************************************************
  *		BringWindowToTop (USER32.@)
  */
-BOOL WINAPI BringWindowToTop( HWND hwnd )
+BOOL WINAPI DECLSPEC_HOTPATCH BringWindowToTop( HWND hwnd )
 {
     return SetWindowPos( hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE );
 }
@@ -1212,7 +1212,7 @@ UINT WINAPI GetInternalWindowPos( HWND hwnd, LPRECT rectWnd,
  * Win95:
  * Fails if wndpl->length of Win95 (!) apps is invalid.
  */
-BOOL WINAPI GetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *wndpl )
+BOOL WINAPI DECLSPEC_HOTPATCH GetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *wndpl )
 {
     WND *pWnd = WIN_GetPtr( hwnd );
 
@@ -2124,8 +2124,8 @@ BOOL USER_SetWindowPos( WINDOWPOS * winpos )
 /***********************************************************************
  *		SetWindowPos (USER32.@)
  */
-BOOL WINAPI SetWindowPos( HWND hwnd, HWND hwndInsertAfter,
-                          INT x, INT y, INT cx, INT cy, UINT flags )
+BOOL WINAPI DECLSPEC_HOTPATCH SetWindowPos( HWND hwnd, HWND hwndInsertAfter,
+                                            INT x, INT y, INT cx, INT cy, UINT flags )
 {
     WINDOWPOS winpos;
 
@@ -2271,7 +2271,7 @@ END:
 /***********************************************************************
  *		EndDeferWindowPos (USER32.@)
  */
-BOOL WINAPI EndDeferWindowPos( HDWP hdwp )
+BOOL WINAPI DECLSPEC_HOTPATCH EndDeferWindowPos( HDWP hdwp )
 {
     DWP *pDWP;
     WINDOWPOS *winpos;
@@ -2307,7 +2307,7 @@ BOOL WINAPI EndDeferWindowPos( HDWP hdwp )
 /***********************************************************************
  *		ArrangeIconicWindows (USER32.@)
  */
-UINT WINAPI ArrangeIconicWindows( HWND parent )
+UINT WINAPI DECLSPEC_HOTPATCH ArrangeIconicWindows( HWND parent )
 {
     RECT rectParent;
     HWND hwndChild;
diff --git a/dlls/user32/winproc.c b/dlls/user32/winproc.c
index b06e93d..89fd9c1 100644
--- a/dlls/user32/winproc.c
+++ b/dlls/user32/winproc.c
@@ -1134,7 +1134,7 @@ static DWORD wait_message( DWORD count, CONST HANDLE *handles, DWORD timeout, DW
  * NOTE: no attempt has been made to be compatible here,
  * the Windows function is most likely completely different.
  */
-void WINAPI UserRegisterWowHandlers( const struct wow_handlers16 *new, struct wow_handlers32 *orig )
+void WINAPI DECLSPEC_HOTPATCH UserRegisterWowHandlers( const struct wow_handlers16 *new, struct wow_handlers32 *orig )
 {
     orig->button_proc     = ButtonWndProc_common;
     orig->combo_proc      = ComboWndProc_common;
diff --git a/dlls/user32/winstation.c b/dlls/user32/winstation.c
index c6c52b7..9541ecc 100644
--- a/dlls/user32/winstation.c
+++ b/dlls/user32/winstation.c
@@ -18,6 +18,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+
 #include "ntstatus.h"
 #define WIN32_NO_STATUS
 
@@ -459,7 +461,7 @@ BOOL WINAPI EnumDesktopsW( HWINSTA winsta, DESKTOPENUMPROCW func, LPARAM lparam
 /******************************************************************************
  *              OpenInputDesktop   (USER32.@)
  */
-HDESK WINAPI OpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access )
+HDESK WINAPI DECLSPEC_HOTPATCH OpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access )
 {
     FIXME( "(%x,%i,%x): stub\n", flags, inherit, access );
     SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
@@ -641,8 +643,8 @@ BOOL WINAPI GetUserObjectSecurity( HANDLE handle, PSECURITY_INFORMATION info,
 /***********************************************************************
  *              SetUserObjectSecurity   (USER32.@)
  */
-BOOL WINAPI SetUserObjectSecurity( HANDLE handle, PSECURITY_INFORMATION info,
-                                   PSECURITY_DESCRIPTOR sid )
+BOOL WINAPI DECLSPEC_HOTPATCH SetUserObjectSecurity( HANDLE handle, PSECURITY_INFORMATION info,
+                                                     PSECURITY_DESCRIPTOR sid )
 {
     FIXME( "(%p,%p,%p),stub!\n", handle, info, sid );
     return TRUE;
-- 

Best Regards, André Hentschel



More information about the wine-patches mailing list