mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-02 02:13:38 +00:00
win32u: Introduce inline helpers for NtUserCallTwoParam calls.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
322ee79383
commit
dae11519da
|
@ -300,7 +300,7 @@ static HICON store_icon_32( HICON16 icon16, HICON icon )
|
|||
{
|
||||
memcpy( &ret, (char *)(ptr + 1) + and_size + xor_size, sizeof(ret) );
|
||||
memcpy( (char *)(ptr + 1) + and_size + xor_size, &icon, sizeof(icon) );
|
||||
NtUserCallTwoParam( HandleToUlong(icon), icon16, NtUserSetIconParam );
|
||||
NtUserSetIconParam( icon, icon16 );
|
||||
}
|
||||
release_icon_ptr( icon16, ptr );
|
||||
}
|
||||
|
@ -342,7 +342,7 @@ HICON get_icon_32( HICON16 icon16 )
|
|||
DeleteObject( iinfo.hbmMask );
|
||||
DeleteObject( iinfo.hbmColor );
|
||||
memcpy( (char *)(ptr + 1) + xor_size + and_size, &ret, sizeof(ret) );
|
||||
NtUserCallTwoParam( HandleToUlong(ret), icon16, NtUserSetIconParam );
|
||||
NtUserSetIconParam( ret, icon16 );
|
||||
}
|
||||
}
|
||||
release_icon_ptr( icon16, ptr );
|
||||
|
|
|
@ -379,7 +379,7 @@ HHOOK WINAPI SetWindowsHookExW( INT id, HOOKPROC proc, HINSTANCE inst, DWORD tid
|
|||
*/
|
||||
BOOL WINAPI UnhookWindowsHook( INT id, HOOKPROC proc )
|
||||
{
|
||||
return NtUserCallTwoParam( id, (UINT_PTR)proc, NtUserUnhookWindowsHook );
|
||||
return NtUserUnhookWindowsHook( id, proc );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -694,7 +694,7 @@ BOOL WINAPI SendMessageCallbackW( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa
|
|||
*/
|
||||
BOOL WINAPI ReplyMessage( LRESULT result )
|
||||
{
|
||||
return NtUserCallTwoParam( result, 0, NtUserReplyMessage );
|
||||
return NtUserReplyMessage( result, NULL );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -453,7 +453,7 @@ INT WINAPI GetSystemMetrics( INT index )
|
|||
*/
|
||||
INT WINAPI GetSystemMetricsForDpi( INT index, UINT dpi )
|
||||
{
|
||||
return NtUserCallTwoParam( index, dpi, NtUserGetSystemMetricsForDpi );
|
||||
return NtUserGetSystemMetricsForDpi( index, dpi );
|
||||
}
|
||||
|
||||
|
||||
|
@ -994,7 +994,7 @@ BOOL WINAPI PhysicalToLogicalPointForPerMonitorDPI( HWND hwnd, POINT *pt )
|
|||
*/
|
||||
HMONITOR WINAPI MonitorFromRect( const RECT *rect, DWORD flags )
|
||||
{
|
||||
return UlongToHandle( NtUserCallTwoParam( (LONG_PTR)rect, flags, NtUserMonitorFromRect ));
|
||||
return NtUserMonitorFromRect( rect, flags );
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -1045,7 +1045,7 @@ BOOL WINAPI GetMonitorInfoA( HMONITOR monitor, LPMONITORINFO info )
|
|||
*/
|
||||
BOOL WINAPI GetMonitorInfoW( HMONITOR monitor, LPMONITORINFO info )
|
||||
{
|
||||
return NtUserCallTwoParam( HandleToUlong(monitor), (ULONG_PTR)info, NtUserGetMonitorInfo );
|
||||
return NtUserGetMonitorInfo( monitor, info );
|
||||
}
|
||||
|
||||
#ifdef __i386__
|
||||
|
|
|
@ -1268,7 +1268,7 @@ BOOL WINAPI User32CallWindowProc( struct win_proc_params *params, ULONG size )
|
|||
msg.lParam = params->lparam;
|
||||
dispatch_win_proc_params( params );
|
||||
|
||||
NtUserCallTwoParam( result, (UINT_PTR)&msg, NtUserReplyMessage );
|
||||
NtUserReplyMessage( result, &msg );
|
||||
if (buffer != stack_buffer && buffer != params + 1)
|
||||
HeapFree( GetProcessHeap(), 0, buffer );
|
||||
}
|
||||
|
|
|
@ -4762,23 +4762,31 @@ ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code
|
|||
{
|
||||
switch(code)
|
||||
{
|
||||
case NtUserGetMonitorInfo:
|
||||
case NtUserCallTwoParam_GetMonitorInfo:
|
||||
return get_monitor_info( UlongToHandle(arg1), (MONITORINFO *)arg2 );
|
||||
case NtUserGetSystemMetricsForDpi:
|
||||
|
||||
case NtUserCallTwoParam_GetSystemMetricsForDpi:
|
||||
return get_system_metrics_for_dpi( arg1, arg2 );
|
||||
case NtUserMonitorFromRect:
|
||||
|
||||
case NtUserCallTwoParam_MonitorFromRect:
|
||||
return HandleToUlong( monitor_from_rect( (const RECT *)arg1, arg2, get_thread_dpi() ));
|
||||
case NtUserReplyMessage:
|
||||
|
||||
case NtUserCallTwoParam_ReplyMessage:
|
||||
return reply_message_result( arg1, (MSG *)arg2 );
|
||||
case NtUserSetIconParam:
|
||||
|
||||
case NtUserCallTwoParam_SetIconParam:
|
||||
return set_icon_param( UlongToHandle(arg1), arg2 );
|
||||
case NtUserUnhookWindowsHook:
|
||||
|
||||
case NtUserCallTwoParam_UnhookWindowsHook:
|
||||
return unhook_windows_hook( arg1, (HOOKPROC)arg2 );
|
||||
|
||||
/* temporary exports */
|
||||
case NtUserAllocWinProc:
|
||||
return (UINT_PTR)alloc_winproc( (WNDPROC)arg1, arg2 );
|
||||
|
||||
case NtUserGetHandlePtr:
|
||||
return (UINT_PTR)get_user_handle_ptr( UlongToHandle(arg1), arg2 );
|
||||
|
||||
default:
|
||||
FIXME( "invalid code %u\n", code );
|
||||
return 0;
|
||||
|
|
|
@ -131,20 +131,6 @@ struct win_hook_params
|
|||
#define NTUSER_DPI_PER_MONITOR_AWARE_V2 0x00000022
|
||||
#define NTUSER_DPI_PER_UNAWARE_GDISCALED 0x40006010
|
||||
|
||||
/* NtUserCallTwoParam codes, not compatible with Windows */
|
||||
enum
|
||||
{
|
||||
NtUserGetMonitorInfo,
|
||||
NtUserGetSystemMetricsForDpi,
|
||||
NtUserMonitorFromRect,
|
||||
NtUserReplyMessage,
|
||||
NtUserSetIconParam,
|
||||
NtUserUnhookWindowsHook,
|
||||
/* temporary exports */
|
||||
NtUserAllocWinProc,
|
||||
NtUserGetHandlePtr,
|
||||
};
|
||||
|
||||
/* NtUserCallHwnd codes, not compatible with Windows */
|
||||
enum
|
||||
{
|
||||
|
@ -778,4 +764,50 @@ static inline UINT NtUserRealizePalette( HDC hdc )
|
|||
return NtUserCallOneParam( HandleToUlong(hdc), NtUserCallOneParam_RealizePalette );
|
||||
}
|
||||
|
||||
/* NtUserCallTwoParam codes, not compatible with Windows */
|
||||
enum
|
||||
{
|
||||
NtUserCallTwoParam_GetMonitorInfo,
|
||||
NtUserCallTwoParam_GetSystemMetricsForDpi,
|
||||
NtUserCallTwoParam_MonitorFromRect,
|
||||
NtUserCallTwoParam_ReplyMessage,
|
||||
NtUserCallTwoParam_SetIconParam,
|
||||
NtUserCallTwoParam_UnhookWindowsHook,
|
||||
/* temporary exports */
|
||||
NtUserAllocWinProc,
|
||||
NtUserGetHandlePtr,
|
||||
};
|
||||
|
||||
static inline BOOL NtUserGetMonitorInfo( HMONITOR monitor, MONITORINFO *info )
|
||||
{
|
||||
return NtUserCallTwoParam( HandleToUlong(monitor), (ULONG_PTR)info,
|
||||
NtUserCallTwoParam_GetMonitorInfo );
|
||||
}
|
||||
|
||||
static inline INT NtUserGetSystemMetricsForDpi( INT index, UINT dpi )
|
||||
{
|
||||
return NtUserCallTwoParam( index, dpi, NtUserCallTwoParam_GetSystemMetricsForDpi );
|
||||
}
|
||||
|
||||
static inline HMONITOR NtUserMonitorFromRect( const RECT *rect, DWORD flags )
|
||||
{
|
||||
ULONG ret = NtUserCallTwoParam( (LONG_PTR)rect, flags, NtUserCallTwoParam_MonitorFromRect );
|
||||
return UlongToHandle( ret );
|
||||
}
|
||||
|
||||
static inline BOOL NtUserReplyMessage( LRESULT result, MSG *msg )
|
||||
{
|
||||
return NtUserCallTwoParam( result, (UINT_PTR)msg, NtUserCallTwoParam_ReplyMessage );
|
||||
}
|
||||
|
||||
static inline UINT_PTR NtUserSetIconParam( HICON icon, ULONG_PTR param )
|
||||
{
|
||||
return NtUserCallTwoParam( HandleToUlong(icon), param, NtUserCallTwoParam_SetIconParam );
|
||||
}
|
||||
|
||||
static inline BOOL NtUserUnhookWindowsHook( INT id, HOOKPROC proc )
|
||||
{
|
||||
return NtUserCallTwoParam( id, (UINT_PTR)proc, NtUserCallTwoParam_UnhookWindowsHook );
|
||||
}
|
||||
|
||||
#endif /* _NTUSER_ */
|
||||
|
|
Loading…
Reference in a new issue