-- v2: wow64win: Sort gdi syscall thunks. win32u: Use syscall interface for NtUserSystemParametersInfo. win32u: Use syscall interface for window class functions. win32u: Use syscall interface for more windowing functions.
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 8 ---- dlls/win32u/syscall.c | 8 ++++ dlls/win32u/win32u.spec | 16 +++---- dlls/win32u/win32u_private.h | 8 ---- dlls/win32u/wrappers.c | 48 ------------------- dlls/wow64win/syscall.h | 8 ++++ dlls/wow64win/user.c | 93 ++++++++++++++++++++++++++++++++++++ 7 files changed, 117 insertions(+), 72 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 2bb7011cf69..2bf3702ddcd 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1136,20 +1136,15 @@ static struct unix_funcs unix_funcs = NtGdiUnrealizeObject, NtGdiUpdateColors, NtGdiWidenPath, - NtUserDestroyMenu, NtUserDrawCaptionTemp, NtUserDrawMenuBarTemp, - NtUserEnableMenuItem, NtUserEnableScrollBar, NtUserEndPaint, NtUserExcludeUpdateRgn, NtUserFlashWindowEx, NtUserGetClassInfoEx, - NtUserGetMenuBarInfo, NtUserGetScrollBarInfo, - NtUserGetSystemMenu, NtUserGetWindowPlacement, - NtUserHiliteMenuItem, NtUserInternalGetWindowIcon, NtUserRegisterClassExWOW, NtUserReleaseDC, @@ -1159,10 +1154,8 @@ static struct unix_funcs unix_funcs = NtUserSetClassLongPtr, NtUserSetClassWord, NtUserSetLayeredWindowAttributes, - NtUserSetMenu, NtUserSetParent, NtUserSetScrollInfo, - NtUserSetSystemMenu, NtUserSetWindowLong, NtUserSetWindowLongPtr, NtUserSetWindowPlacement, @@ -1173,7 +1166,6 @@ static struct unix_funcs unix_funcs = NtUserShowWindowAsync, NtUserSystemParametersInfo, NtUserSystemParametersInfoForDpi, - NtUserTranslateAccelerator, NtUserUnregisterClass, NtUserUpdateLayeredWindow, NtUserWindowFromPoint, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 7c95d7d4848..4963657e8ba 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -134,12 +134,14 @@ static void * const syscalls[] = NtUserDestroyAcceleratorTable, NtUserDestroyCursor, NtUserDestroyInputContext, + NtUserDestroyMenu, NtUserDestroyWindow, NtUserDisableThreadIme, NtUserDispatchMessage, NtUserDragDetect, NtUserDrawIconEx, NtUserEmptyClipboard, + NtUserEnableMenuItem, NtUserEndDeferWindowPosEx, NtUserEndMenu, NtUserEnumDisplayDevices, @@ -176,6 +178,7 @@ static void * const syscalls[] = NtUserGetKeyboardLayoutName, NtUserGetKeyboardState, NtUserGetLayeredWindowAttributes, + NtUserGetMenuBarInfo, NtUserGetMenuItemRect, NtUserGetMessage, NtUserGetMouseMovePointsEx, @@ -192,6 +195,7 @@ static void * const syscalls[] = NtUserGetRawInputDeviceList, NtUserGetRegisteredRawInputDevices, NtUserGetSystemDpiForProcess, + NtUserGetSystemMenu, NtUserGetThreadDesktop, NtUserGetTitleBarInfo, NtUserGetUpdateRect, @@ -199,6 +203,7 @@ static void * const syscalls[] = NtUserGetUpdatedClipboardFormats, NtUserGetWindowRgnEx, NtUserHideCaret, + NtUserHiliteMenuItem, NtUserInitializeClientPfnArrays, NtUserInternalGetWindowText, NtUserInvalidateRect, @@ -238,6 +243,7 @@ static void * const syscalls[] = NtUserSetFocus, NtUserSetInternalWindowPos, NtUserSetKeyboardState, + NtUserSetMenu, NtUserSetMenuContextHelpId, NtUserSetMenuDefaultItem, NtUserSetObjectInformation, @@ -245,6 +251,7 @@ static void * const syscalls[] = NtUserSetProcessWindowStation, NtUserSetProp, NtUserSetSysColors, + NtUserSetSystemMenu, NtUserSetSystemTimer, NtUserSetThreadDesktop, NtUserSetTimer, @@ -258,6 +265,7 @@ static void * const syscalls[] = NtUserToUnicodeEx, NtUserTrackMouseEvent, NtUserTrackPopupMenuEx, + NtUserTranslateAccelerator, NtUserTranslateMessage, NtUserUnhookWinEvent, NtUserUnhookWindowsHookEx, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 1c91fef03da..9c067b0d4ac 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -832,7 +832,7 @@ @ stdcall -syscall NtUserDestroyCursor(long long) @ stub NtUserDestroyDCompositionHwndTarget @ stdcall -syscall NtUserDestroyInputContext(long) -@ stdcall NtUserDestroyMenu(long) +@ stdcall -syscall NtUserDestroyMenu(long) @ stub NtUserDestroyPalmRejectionDelayZone @ stdcall -syscall NtUserDestroyWindow(long) @ stub NtUserDisableImmersiveOwner @@ -860,7 +860,7 @@ @ stdcall -syscall NtUserEmptyClipboard() @ stub NtUserEnableChildWindowDpiMessage @ stub NtUserEnableIAMAccess -@ stdcall NtUserEnableMenuItem(long long long) +@ stdcall -syscall NtUserEnableMenuItem(long long long) @ stub NtUserEnableMouseInPointer @ stub NtUserEnableMouseInPointerForWindow @ stub NtUserEnableMouseInputForCursorSuppression @@ -952,7 +952,7 @@ @ stdcall -syscall NtUserGetKeyboardState(ptr) @ stdcall -syscall NtUserGetLayeredWindowAttributes(long ptr ptr ptr) @ stub NtUserGetListBoxInfo -@ stdcall NtUserGetMenuBarInfo(long long long ptr) +@ stdcall -syscall NtUserGetMenuBarInfo(long long long ptr) @ stub NtUserGetMenuIndex @ stdcall -syscall NtUserGetMenuItemRect(long long long ptr) @ stdcall -syscall NtUserGetMessage(ptr long long long) @@ -994,7 +994,7 @@ @ stdcall NtUserGetScrollBarInfo(long long ptr) @ stub NtUserGetSharedWindowData @ stdcall -syscall NtUserGetSystemDpiForProcess(long) -@ stdcall NtUserGetSystemMenu(long long) +@ stdcall -syscall NtUserGetSystemMenu(long long) @ stdcall -syscall NtUserGetThreadDesktop(long) @ stub NtUserGetThreadState @ stdcall -syscall NtUserGetTitleBarInfo(long ptr) @@ -1022,7 +1022,7 @@ @ stub NtUserHardErrorControl @ stdcall -syscall NtUserHideCaret(long) @ stub NtUserHidePointerContactVisualization -@ stdcall NtUserHiliteMenuItem(long long long long) +@ stdcall -syscall NtUserHiliteMenuItem(long long long long) @ stub NtUserHungWindowFromGhostWindow @ stub NtUserHwndQueryRedirectionInfo @ stub NtUserHwndSetRedirectionInfo @@ -1206,7 +1206,7 @@ @ stdcall NtUserSetLayeredWindowAttributes(ptr long long long) @ stub NtUserSetMagnificationDesktopMagnifierOffsetsDWMUpdated @ stub NtUserSetManipulationInputTarget -@ stdcall NtUserSetMenu(long long) +@ stdcall -syscall NtUserSetMenu(long long) @ stdcall -syscall NtUserSetMenuContextHelpId(long long) @ stdcall -syscall NtUserSetMenuDefaultItem(long long long) @ stub NtUserSetMenuFlagRtoL @@ -1229,7 +1229,7 @@ @ stub NtUserSetShellWindowEx @ stdcall -syscall NtUserSetSysColors(long ptr ptr) @ stub NtUserSetSystemCursor -@ stdcall NtUserSetSystemMenu(long long) +@ stdcall -syscall NtUserSetSystemMenu(long long) @ stdcall -syscall NtUserSetSystemTimer(long long long) @ stub NtUserSetTargetForResourceBrokering @ stdcall -syscall NtUserSetThreadDesktop(long) @@ -1281,7 +1281,7 @@ @ stdcall -syscall NtUserTrackPopupMenuEx(long long long long long ptr) @ stub NtUserTransformPoint @ stub NtUserTransformRect -@ stdcall NtUserTranslateAccelerator(long long ptr) +@ stdcall -syscall NtUserTranslateAccelerator(long long ptr) @ stdcall -syscall NtUserTranslateMessage(ptr long) @ stub NtUserUndelegateInput @ stdcall -syscall NtUserUnhookWinEvent(long) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index a4d7d5e940f..a7128648e51 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -186,22 +186,17 @@ struct unix_funcs BOOL (WINAPI *pNtGdiUnrealizeObject)( HGDIOBJ obj ); BOOL (WINAPI *pNtGdiUpdateColors)( HDC hdc ); BOOL (WINAPI *pNtGdiWidenPath)( HDC hdc ); - BOOL (WINAPI *pNtUserDestroyMenu)( HMENU handle ); BOOL (WINAPI *pNtUserDrawCaptionTemp)( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ); DWORD (WINAPI *pNtUserDrawMenuBarTemp)( HWND hwnd, HDC hdc, RECT *rect, HMENU handle, HFONT font ); - BOOL (WINAPI *pNtUserEnableMenuItem)( HMENU handle, UINT id, UINT flags ); BOOL (WINAPI *pNtUserEnableScrollBar)( HWND hwnd, UINT bar, UINT flags ); BOOL (WINAPI *pNtUserEndPaint)( HWND hwnd, const PAINTSTRUCT *ps ); INT (WINAPI *pNtUserExcludeUpdateRgn)( HDC hdc, HWND hwnd ); BOOL (WINAPI *pNtUserFlashWindowEx)( FLASHWINFO *info ); ATOM (WINAPI *pNtUserGetClassInfoEx)( HINSTANCE instance, UNICODE_STRING *name, WNDCLASSEXW *wc, struct client_menu_name *menu_name, BOOL ansi ); - BOOL (WINAPI *pNtUserGetMenuBarInfo)( HWND hwnd, LONG id, LONG item, MENUBARINFO *info ); BOOL (WINAPI *pNtUserGetScrollBarInfo)( HWND hwnd, LONG id, SCROLLBARINFO *info ); - HMENU (WINAPI *pNtUserGetSystemMenu)( HWND hwnd, BOOL revert ); BOOL (WINAPI *pNtUserGetWindowPlacement)( HWND hwnd, WINDOWPLACEMENT *placement ); - BOOL (WINAPI *pNtUserHiliteMenuItem)( HWND hwnd, HMENU handle, UINT item, UINT hilite ); HICON (WINAPI *pNtUserInternalGetWindowIcon)( HWND hwnd, UINT type ); ATOM (WINAPI *pNtUserRegisterClassExWOW)( const WNDCLASSEXW *wc, UNICODE_STRING *name, UNICODE_STRING *version, @@ -215,10 +210,8 @@ struct unix_funcs ULONG_PTR (WINAPI *pNtUserSetClassLongPtr)( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ); WORD (WINAPI *pNtUserSetClassWord)( HWND hwnd, INT offset, WORD newval ); BOOL (WINAPI *pNtUserSetLayeredWindowAttributes)( HWND hwnd, COLORREF key, BYTE alpha, DWORD flags ); - BOOL (WINAPI *pNtUserSetMenu)( HWND hwnd, HMENU menu ); HWND (WINAPI *pNtUserSetParent)( HWND hwnd, HWND parent ); INT (WINAPI *pNtUserSetScrollInfo)( HWND hwnd, INT bar, const SCROLLINFO *info, BOOL redraw ); - BOOL (WINAPI *pNtUserSetSystemMenu)( HWND hwnd, HMENU menu ); LONG (WINAPI *pNtUserSetWindowLong)( HWND hwnd, INT offset, LONG newval, BOOL ansi ); LONG_PTR (WINAPI *pNtUserSetWindowLongPtr)( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ); BOOL (WINAPI *pNtUserSetWindowPlacement)( HWND hwnd, const WINDOWPLACEMENT *wpl ); @@ -230,7 +223,6 @@ struct unix_funcs BOOL (WINAPI *pNtUserSystemParametersInfo)( UINT action, UINT val, PVOID ptr, UINT winini ); BOOL (WINAPI *pNtUserSystemParametersInfoForDpi)( UINT action, UINT val, PVOID ptr, UINT winini, UINT dpi ); - INT (WINAPI *pNtUserTranslateAccelerator)( HWND hwnd, HACCEL accel, MSG *msg ); BOOL (WINAPI *pNtUserUnregisterClass)( UNICODE_STRING *name, HINSTANCE instance, struct client_menu_name *client_menu_name ); BOOL (WINAPI *pNtUserUpdateLayeredWindow)( HWND hwnd, HDC hdc_dst, const POINT *pts_dst, diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 97acdda8982..b07c40a01ee 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -725,12 +725,6 @@ NTSTATUS WINAPI NtGdiDdDDISetVidPnSourceOwner( const D3DKMT_SETVIDPNSOURCEOWNER return unix_funcs->pNtGdiDdDDISetVidPnSourceOwner( desc ); }
-BOOL WINAPI NtUserDestroyMenu( HMENU handle ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserDestroyMenu( handle ); -} - BOOL WINAPI NtUserDrawCaptionTemp( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ) { @@ -744,12 +738,6 @@ DWORD WINAPI NtUserDrawMenuBarTemp( HWND hwnd, HDC hdc, RECT *rect, HMENU handle return unix_funcs->pNtUserDrawMenuBarTemp( hwnd, hdc, rect, handle, font ); }
-BOOL WINAPI NtUserEnableMenuItem( HMENU handle, UINT id, UINT flags ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserEnableMenuItem( handle, id, flags ); -} - BOOL WINAPI NtUserEnableScrollBar( HWND hwnd, UINT bar, UINT flags ) { if (!unix_funcs) return FALSE; @@ -775,24 +763,6 @@ ATOM WINAPI NtUserGetClassInfoEx( HINSTANCE instance, UNICODE_STRING *name, WNDC return unix_funcs->pNtUserGetClassInfoEx( instance, name, wc, menu_name, ansi ); }
-BOOL WINAPI NtUserGetMenuBarInfo( HWND hwnd, LONG id, LONG item, MENUBARINFO *info ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserGetMenuBarInfo( hwnd, id, item, info ); -} - -HMENU WINAPI NtUserGetSystemMenu( HWND hwnd, BOOL revert ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserGetSystemMenu( hwnd, revert ); -} - -BOOL WINAPI NtUserHiliteMenuItem( HWND hwnd, HMENU handle, UINT item, UINT hilite ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserHiliteMenuItem( hwnd, handle, item, hilite ); -} - BOOL WINAPI NtUserGetScrollBarInfo( HWND hwnd, LONG id, SCROLLBARINFO *info ) { if (!unix_funcs) return FALSE; @@ -862,12 +832,6 @@ BOOL WINAPI NtUserSetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alph return unix_funcs->pNtUserSetLayeredWindowAttributes( hwnd, key, alpha, flags ); }
-BOOL WINAPI NtUserSetMenu( HWND hwnd, HMENU menu ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserSetMenu( hwnd, menu ); -} - HWND WINAPI NtUserSetParent( HWND hwnd, HWND parent ) { if (!unix_funcs) return 0; @@ -880,12 +844,6 @@ INT WINAPI NtUserSetScrollInfo( HWND hwnd, INT bar, const SCROLLINFO *info, BOOL return unix_funcs->pNtUserSetScrollInfo( hwnd, bar, info, redraw ); }
-BOOL WINAPI NtUserSetSystemMenu( HWND hwnd, HMENU menu ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserSetSystemMenu( hwnd, menu ); -} - LONG WINAPI NtUserSetWindowLong( HWND hwnd, INT offset, LONG newval, BOOL ansi ) { if (!unix_funcs) return 0; @@ -946,12 +904,6 @@ BOOL WINAPI NtUserSystemParametersInfoForDpi( UINT action, UINT val, PVOID ptr, return unix_funcs->pNtUserSystemParametersInfoForDpi( action, val, ptr, winini, dpi ); }
-INT WINAPI NtUserTranslateAccelerator( HWND hwnd, HACCEL accel, MSG *msg ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserTranslateAccelerator( hwnd, accel, msg ); -} - BOOL WINAPI NtUserUnregisterClass( UNICODE_STRING *name, HINSTANCE instance, struct client_menu_name *client_menu_name ) { diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 9b2e1f020f8..cd1823edc76 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -121,12 +121,14 @@ SYSCALL_ENTRY( NtUserDestroyAcceleratorTable ) \ SYSCALL_ENTRY( NtUserDestroyCursor ) \ SYSCALL_ENTRY( NtUserDestroyInputContext ) \ + SYSCALL_ENTRY( NtUserDestroyMenu ) \ SYSCALL_ENTRY( NtUserDestroyWindow ) \ SYSCALL_ENTRY( NtUserDisableThreadIme ) \ SYSCALL_ENTRY( NtUserDispatchMessage ) \ SYSCALL_ENTRY( NtUserDragDetect ) \ SYSCALL_ENTRY( NtUserDrawIconEx ) \ SYSCALL_ENTRY( NtUserEmptyClipboard ) \ + SYSCALL_ENTRY( NtUserEnableMenuItem ) \ SYSCALL_ENTRY( NtUserEndDeferWindowPosEx ) \ SYSCALL_ENTRY( NtUserEndMenu ) \ SYSCALL_ENTRY( NtUserEnumDisplayDevices ) \ @@ -163,6 +165,7 @@ SYSCALL_ENTRY( NtUserGetKeyboardLayoutName ) \ SYSCALL_ENTRY( NtUserGetKeyboardState ) \ SYSCALL_ENTRY( NtUserGetLayeredWindowAttributes ) \ + SYSCALL_ENTRY( NtUserGetMenuBarInfo ) \ SYSCALL_ENTRY( NtUserGetMenuItemRect ) \ SYSCALL_ENTRY( NtUserGetMessage ) \ SYSCALL_ENTRY( NtUserGetMouseMovePointsEx ) \ @@ -179,6 +182,7 @@ SYSCALL_ENTRY( NtUserGetRawInputDeviceList ) \ SYSCALL_ENTRY( NtUserGetRegisteredRawInputDevices ) \ SYSCALL_ENTRY( NtUserGetSystemDpiForProcess ) \ + SYSCALL_ENTRY( NtUserGetSystemMenu ) \ SYSCALL_ENTRY( NtUserGetThreadDesktop ) \ SYSCALL_ENTRY( NtUserGetTitleBarInfo ) \ SYSCALL_ENTRY( NtUserGetUpdateRect ) \ @@ -186,6 +190,7 @@ SYSCALL_ENTRY( NtUserGetUpdatedClipboardFormats ) \ SYSCALL_ENTRY( NtUserGetWindowRgnEx ) \ SYSCALL_ENTRY( NtUserHideCaret ) \ + SYSCALL_ENTRY( NtUserHiliteMenuItem ) \ SYSCALL_ENTRY( NtUserInitializeClientPfnArrays ) \ SYSCALL_ENTRY( NtUserInternalGetWindowText ) \ SYSCALL_ENTRY( NtUserInvalidateRect ) \ @@ -225,6 +230,7 @@ SYSCALL_ENTRY( NtUserSetFocus ) \ SYSCALL_ENTRY( NtUserSetInternalWindowPos ) \ SYSCALL_ENTRY( NtUserSetKeyboardState ) \ + SYSCALL_ENTRY( NtUserSetMenu ) \ SYSCALL_ENTRY( NtUserSetMenuContextHelpId ) \ SYSCALL_ENTRY( NtUserSetMenuDefaultItem ) \ SYSCALL_ENTRY( NtUserSetObjectInformation ) \ @@ -232,6 +238,7 @@ SYSCALL_ENTRY( NtUserSetProcessWindowStation ) \ SYSCALL_ENTRY( NtUserSetProp ) \ SYSCALL_ENTRY( NtUserSetSysColors ) \ + SYSCALL_ENTRY( NtUserSetSystemMenu ) \ SYSCALL_ENTRY( NtUserSetSystemTimer ) \ SYSCALL_ENTRY( NtUserSetThreadDesktop ) \ SYSCALL_ENTRY( NtUserSetTimer ) \ @@ -245,6 +252,7 @@ SYSCALL_ENTRY( NtUserToUnicodeEx ) \ SYSCALL_ENTRY( NtUserTrackMouseEvent ) \ SYSCALL_ENTRY( NtUserTrackPopupMenuEx ) \ + SYSCALL_ENTRY( NtUserTranslateAccelerator ) \ SYSCALL_ENTRY( NtUserTranslateMessage ) \ SYSCALL_ENTRY( NtUserUnhookWinEvent ) \ SYSCALL_ENTRY( NtUserUnhookWindowsHookEx ) \ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index c54e96d53c6..057ca772905 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -507,6 +507,13 @@ NTSTATUS WINAPI wow64_NtUserDestroyInputContext( UINT *args ) return NtUserDestroyInputContext( handle ); }
+NTSTATUS WINAPI wow64_NtUserDestroyMenu( UINT *args ) +{ + HMENU handle = get_handle( &args ); + + return NtUserDestroyMenu( handle ); +} + NTSTATUS WINAPI wow64_NtUserDestroyWindow( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -558,6 +565,15 @@ NTSTATUS WINAPI wow64_NtUserEmptyClipboard( UINT *args ) return NtUserEmptyClipboard(); }
+NTSTATUS WINAPI wow64_NtUserEnableMenuItem( UINT *args ) +{ + HMENU handle = get_handle( &args ); + UINT id = get_ulong( &args ); + UINT flags = get_ulong( &args ); + + return NtUserEnableMenuItem( handle, id, flags ); +} + NTSTATUS WINAPI wow64_NtUserEndDeferWindowPosEx( UINT *args ) { HDWP hdwp = get_handle( &args ); @@ -950,6 +966,38 @@ NTSTATUS WINAPI wow64_NtUserGetLayeredWindowAttributes( UINT *args ) return NtUserGetLayeredWindowAttributes( hwnd, key, alpha, flags ); }
+NTSTATUS WINAPI wow64_NtUserGetMenuBarInfo( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + LONG id = get_ulong( &args ); + LONG item = get_ulong( &args ); + struct + { + DWORD cbSize; + RECT rcBar; + ULONG hMenu; + ULONG hwndMenu; + BOOL fBarFocused:1; + BOOL fFocused:1; + } *info32 = get_ptr( &args ); + + MENUBARINFO info; + + if (info32->cbSize != sizeof(*info32)) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + + info.cbSize = sizeof(info); + info.rcBar = info32->rcBar; + info.hMenu = UlongToHandle( info32->hMenu ); + info.hwndMenu = UlongToHandle( info32->hwndMenu ); + info.fBarFocused = info32->fBarFocused; + info.fFocused = info32->fFocused; + return NtUserGetMenuBarInfo( hwnd, id, item, &info ); +} + NTSTATUS WINAPI wow64_NtUserGetMenuItemRect( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -1241,6 +1289,14 @@ NTSTATUS WINAPI wow64_NtUserGetSystemDpiForProcess( UINT *args ) return NtUserGetSystemDpiForProcess( process ); }
+NTSTATUS WINAPI wow64_NtUserGetSystemMenu( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + BOOL revert = get_ulong( &args ); + + return HandleToUlong( NtUserGetSystemMenu( hwnd, revert )); +} + NTSTATUS WINAPI wow64_NtUserGetThreadDesktop( UINT *args ) { DWORD thread = get_ulong( &args ); @@ -1299,6 +1355,16 @@ NTSTATUS WINAPI wow64_NtUserHideCaret( UINT *args ) return NtUserHideCaret( hwnd ); }
+NTSTATUS WINAPI wow64_NtUserHiliteMenuItem( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + HMENU handle = get_handle( &args ); + UINT item = get_ulong( &args ); + UINT hilite = get_ulong( &args ); + + return NtUserHiliteMenuItem( hwnd, handle, item, hilite ); +} + NTSTATUS WINAPI wow64_NtUserInitializeClientPfnArrays( UINT *args ) { FIXME( "\n" ); @@ -1743,6 +1809,14 @@ NTSTATUS WINAPI wow64_NtUserSetKeyboardState( UINT *args ) return NtUserSetKeyboardState( state ); }
+NTSTATUS WINAPI wow64_NtUserSetMenu( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + HMENU menu = get_handle( &args ); + + return NtUserSetMenu( hwnd, menu ); +} + NTSTATUS WINAPI wow64_NtUserSetMenuContextHelpId( UINT *args ) { HMENU menu = get_handle( &args ); @@ -1803,6 +1877,14 @@ NTSTATUS WINAPI wow64_NtUserSetSysColors( UINT *args ) return NtUserSetSysColors( count, colors, values ); }
+NTSTATUS WINAPI wow64_NtUserSetSystemMenu( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + HMENU menu = get_handle( &args ); + + return NtUserSetSystemMenu( hwnd, menu ); +} + NTSTATUS WINAPI wow64_NtUserSetSystemTimer( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -2008,6 +2090,17 @@ NTSTATUS WINAPI wow64_NtUserTrackPopupMenuEx( UINT *args ) return NtUserTrackPopupMenuEx( handle, flags, x, y, hwnd, params ); }
+NTSTATUS WINAPI wow64_NtUserTranslateAccelerator( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + HACCEL accel = get_handle( &args ); + MSG32 *msg32 = get_ptr( &args ); + + MSG msg; + + return NtUserTranslateAccelerator( hwnd, accel, msg_32to64( &msg, msg32 )); +} + NTSTATUS WINAPI wow64_NtUserTranslateMessage( UINT *args ) { const MSG32 *msg32 = get_ptr( &args );
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 4 ---- dlls/win32u/syscall.c | 4 ++++ dlls/win32u/win32u.spec | 8 ++++---- dlls/win32u/win32u_private.h | 4 ---- dlls/win32u/wrappers.c | 24 ----------------------- dlls/wow64win/syscall.h | 4 ++++ dlls/wow64win/user.c | 37 ++++++++++++++++++++++++++++++++++++ 7 files changed, 49 insertions(+), 36 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 2bf3702ddcd..0c7693d24ed 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1138,12 +1138,10 @@ static struct unix_funcs unix_funcs = NtGdiWidenPath, NtUserDrawCaptionTemp, NtUserDrawMenuBarTemp, - NtUserEnableScrollBar, NtUserEndPaint, NtUserExcludeUpdateRgn, NtUserFlashWindowEx, NtUserGetClassInfoEx, - NtUserGetScrollBarInfo, NtUserGetWindowPlacement, NtUserInternalGetWindowIcon, NtUserRegisterClassExWOW, @@ -1155,13 +1153,11 @@ static struct unix_funcs unix_funcs = NtUserSetClassWord, NtUserSetLayeredWindowAttributes, NtUserSetParent, - NtUserSetScrollInfo, NtUserSetWindowLong, NtUserSetWindowLongPtr, NtUserSetWindowPlacement, NtUserSetWindowRgn, NtUserSetWindowWord, - NtUserShowScrollBar, NtUserShowWindow, NtUserShowWindowAsync, NtUserSystemParametersInfo, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 4963657e8ba..f6b044d8c38 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -142,6 +142,7 @@ static void * const syscalls[] = NtUserDrawIconEx, NtUserEmptyClipboard, NtUserEnableMenuItem, + NtUserEnableScrollBar, NtUserEndDeferWindowPosEx, NtUserEndMenu, NtUserEnumDisplayDevices, @@ -194,6 +195,7 @@ static void * const syscalls[] = NtUserGetRawInputDeviceInfo, NtUserGetRawInputDeviceList, NtUserGetRegisteredRawInputDevices, + NtUserGetScrollBarInfo, NtUserGetSystemDpiForProcess, NtUserGetSystemMenu, NtUserGetThreadDesktop, @@ -250,6 +252,7 @@ static void * const syscalls[] = NtUserSetProcessDpiAwarenessContext, NtUserSetProcessWindowStation, NtUserSetProp, + NtUserSetScrollInfo, NtUserSetSysColors, NtUserSetSystemMenu, NtUserSetSystemTimer, @@ -260,6 +263,7 @@ static void * const syscalls[] = NtUserSetWindowsHookEx, NtUserShowCaret, NtUserShowCursor, + NtUserShowScrollBar, NtUserThunkedMenuInfo, NtUserThunkedMenuItemInfo, NtUserToUnicodeEx, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 9c067b0d4ac..8ddc4e0c9f7 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -866,7 +866,7 @@ @ stub NtUserEnableMouseInputForCursorSuppression @ stub NtUserEnableNonClientDpiScaling @ stub NtUserEnableResizeLayoutSynchronization -@ stdcall NtUserEnableScrollBar(long long long) +@ stdcall -syscall NtUserEnableScrollBar(long long long) @ stub NtUserEnableSoftwareCursorForScreenCapture @ stub NtUserEnableTouchPad @ stub NtUserEnableWindowGDIScaledDpiMessage @@ -991,7 +991,7 @@ @ stdcall -syscall NtUserGetRegisteredRawInputDevices(ptr ptr long) @ stub NtUserGetRequiredCursorSizes @ stub NtUserGetResizeDCompositionSynchronizationObject -@ stdcall NtUserGetScrollBarInfo(long long ptr) +@ stdcall -syscall NtUserGetScrollBarInfo(long long ptr) @ stub NtUserGetSharedWindowData @ stdcall -syscall NtUserGetSystemDpiForProcess(long) @ stdcall -syscall NtUserGetSystemMenu(long long) @@ -1223,7 +1223,7 @@ @ stub NtUserSetProcessUIAccessZorder @ stdcall -syscall NtUserSetProcessWindowStation(long) @ stdcall -syscall NtUserSetProp(long wstr ptr) -@ stdcall NtUserSetScrollInfo(long long ptr long) +@ stdcall -syscall NtUserSetScrollInfo(long long ptr long) @ stub NtUserSetSensorPresence @ stub NtUserSetSharedWindowData @ stub NtUserSetShellWindowEx @@ -1259,7 +1259,7 @@ @ stdcall -syscall NtUserSetWindowsHookEx(ptr ptr long long ptr long) @ stdcall -syscall NtUserShowCaret(long) @ stdcall -syscall NtUserShowCursor(long) -@ stdcall NtUserShowScrollBar(long long long) +@ stdcall -syscall NtUserShowScrollBar(long long long) @ stub NtUserShowSystemCursor @ stdcall NtUserShowWindow(long long) @ stdcall NtUserShowWindowAsync(long long) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index a7128648e51..aec24b73f53 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -189,13 +189,11 @@ struct unix_funcs BOOL (WINAPI *pNtUserDrawCaptionTemp)( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ); DWORD (WINAPI *pNtUserDrawMenuBarTemp)( HWND hwnd, HDC hdc, RECT *rect, HMENU handle, HFONT font ); - BOOL (WINAPI *pNtUserEnableScrollBar)( HWND hwnd, UINT bar, UINT flags ); BOOL (WINAPI *pNtUserEndPaint)( HWND hwnd, const PAINTSTRUCT *ps ); INT (WINAPI *pNtUserExcludeUpdateRgn)( HDC hdc, HWND hwnd ); BOOL (WINAPI *pNtUserFlashWindowEx)( FLASHWINFO *info ); ATOM (WINAPI *pNtUserGetClassInfoEx)( HINSTANCE instance, UNICODE_STRING *name, WNDCLASSEXW *wc, struct client_menu_name *menu_name, BOOL ansi ); - BOOL (WINAPI *pNtUserGetScrollBarInfo)( HWND hwnd, LONG id, SCROLLBARINFO *info ); BOOL (WINAPI *pNtUserGetWindowPlacement)( HWND hwnd, WINDOWPLACEMENT *placement ); HICON (WINAPI *pNtUserInternalGetWindowIcon)( HWND hwnd, UINT type ); ATOM (WINAPI *pNtUserRegisterClassExWOW)( const WNDCLASSEXW *wc, UNICODE_STRING *name, @@ -211,13 +209,11 @@ struct unix_funcs WORD (WINAPI *pNtUserSetClassWord)( HWND hwnd, INT offset, WORD newval ); BOOL (WINAPI *pNtUserSetLayeredWindowAttributes)( HWND hwnd, COLORREF key, BYTE alpha, DWORD flags ); HWND (WINAPI *pNtUserSetParent)( HWND hwnd, HWND parent ); - INT (WINAPI *pNtUserSetScrollInfo)( HWND hwnd, INT bar, const SCROLLINFO *info, BOOL redraw ); LONG (WINAPI *pNtUserSetWindowLong)( HWND hwnd, INT offset, LONG newval, BOOL ansi ); LONG_PTR (WINAPI *pNtUserSetWindowLongPtr)( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ); BOOL (WINAPI *pNtUserSetWindowPlacement)( HWND hwnd, const WINDOWPLACEMENT *wpl ); int (WINAPI *pNtUserSetWindowRgn)( HWND hwnd, HRGN hrgn, BOOL redraw ); WORD (WINAPI *pNtUserSetWindowWord)( HWND hwnd, INT offset, WORD newval ); - BOOL (WINAPI *pNtUserShowScrollBar)( HWND hwnd, INT bar, BOOL show ); BOOL (WINAPI *pNtUserShowWindow)( HWND hwnd, INT cmd ); BOOL (WINAPI *pNtUserShowWindowAsync)( HWND hwnd, INT cmd ); BOOL (WINAPI *pNtUserSystemParametersInfo)( UINT action, UINT val, PVOID ptr, UINT winini ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index b07c40a01ee..b2b143cc136 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -738,12 +738,6 @@ DWORD WINAPI NtUserDrawMenuBarTemp( HWND hwnd, HDC hdc, RECT *rect, HMENU handle return unix_funcs->pNtUserDrawMenuBarTemp( hwnd, hdc, rect, handle, font ); }
-BOOL WINAPI NtUserEnableScrollBar( HWND hwnd, UINT bar, UINT flags ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserEnableScrollBar( hwnd, bar, flags ); -} - INT WINAPI NtUserExcludeUpdateRgn( HDC hdc, HWND hwnd ) { if (!unix_funcs) return ERROR; @@ -763,12 +757,6 @@ ATOM WINAPI NtUserGetClassInfoEx( HINSTANCE instance, UNICODE_STRING *name, WNDC return unix_funcs->pNtUserGetClassInfoEx( instance, name, wc, menu_name, ansi ); }
-BOOL WINAPI NtUserGetScrollBarInfo( HWND hwnd, LONG id, SCROLLBARINFO *info ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserGetScrollBarInfo( hwnd, id, info ); -} - BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement ) { if (!unix_funcs) return FALSE; @@ -838,12 +826,6 @@ HWND WINAPI NtUserSetParent( HWND hwnd, HWND parent ) return unix_funcs->pNtUserSetParent( hwnd, parent ); }
-INT WINAPI NtUserSetScrollInfo( HWND hwnd, INT bar, const SCROLLINFO *info, BOOL redraw ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetScrollInfo( hwnd, bar, info, redraw ); -} - LONG WINAPI NtUserSetWindowLong( HWND hwnd, INT offset, LONG newval, BOOL ansi ) { if (!unix_funcs) return 0; @@ -874,12 +856,6 @@ WORD WINAPI NtUserSetWindowWord( HWND hwnd, INT offset, WORD newval ) return unix_funcs->pNtUserSetWindowWord( hwnd, offset, newval ); }
-BOOL WINAPI NtUserShowScrollBar( HWND hwnd, INT bar, BOOL show ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserShowScrollBar( hwnd, bar, show ); -} - BOOL WINAPI NtUserShowWindowAsync( HWND hwnd, INT cmd ) { if (!unix_funcs) return FALSE; diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index cd1823edc76..3a2cdf3f8ec 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -129,6 +129,7 @@ SYSCALL_ENTRY( NtUserDrawIconEx ) \ SYSCALL_ENTRY( NtUserEmptyClipboard ) \ SYSCALL_ENTRY( NtUserEnableMenuItem ) \ + SYSCALL_ENTRY( NtUserEnableScrollBar ) \ SYSCALL_ENTRY( NtUserEndDeferWindowPosEx ) \ SYSCALL_ENTRY( NtUserEndMenu ) \ SYSCALL_ENTRY( NtUserEnumDisplayDevices ) \ @@ -181,6 +182,7 @@ SYSCALL_ENTRY( NtUserGetRawInputDeviceInfo ) \ SYSCALL_ENTRY( NtUserGetRawInputDeviceList ) \ SYSCALL_ENTRY( NtUserGetRegisteredRawInputDevices ) \ + SYSCALL_ENTRY( NtUserGetScrollBarInfo ) \ SYSCALL_ENTRY( NtUserGetSystemDpiForProcess ) \ SYSCALL_ENTRY( NtUserGetSystemMenu ) \ SYSCALL_ENTRY( NtUserGetThreadDesktop ) \ @@ -237,6 +239,7 @@ SYSCALL_ENTRY( NtUserSetProcessDpiAwarenessContext ) \ SYSCALL_ENTRY( NtUserSetProcessWindowStation ) \ SYSCALL_ENTRY( NtUserSetProp ) \ + SYSCALL_ENTRY( NtUserSetScrollInfo ) \ SYSCALL_ENTRY( NtUserSetSysColors ) \ SYSCALL_ENTRY( NtUserSetSystemMenu ) \ SYSCALL_ENTRY( NtUserSetSystemTimer ) \ @@ -247,6 +250,7 @@ SYSCALL_ENTRY( NtUserSetWindowsHookEx ) \ SYSCALL_ENTRY( NtUserShowCaret ) \ SYSCALL_ENTRY( NtUserShowCursor ) \ + SYSCALL_ENTRY( NtUserShowScrollBar ) \ SYSCALL_ENTRY( NtUserThunkedMenuInfo ) \ SYSCALL_ENTRY( NtUserThunkedMenuItemInfo ) \ SYSCALL_ENTRY( NtUserToUnicodeEx ) \ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 057ca772905..a6acccf5089 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -574,6 +574,15 @@ NTSTATUS WINAPI wow64_NtUserEnableMenuItem( UINT *args ) return NtUserEnableMenuItem( handle, id, flags ); }
+NTSTATUS WINAPI wow64_NtUserEnableScrollBar( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + UINT bar = get_ulong( &args ); + UINT flags = get_ulong( &args ); + + return NtUserEnableScrollBar( hwnd, bar, flags ); +} + NTSTATUS WINAPI wow64_NtUserEndDeferWindowPosEx( UINT *args ) { HDWP hdwp = get_handle( &args ); @@ -1282,6 +1291,15 @@ NTSTATUS WINAPI wow64_NtUserGetRegisteredRawInputDevices( UINT *args ) } }
+NTSTATUS WINAPI wow64_NtUserGetScrollBarInfo( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + LONG id = get_ulong( &args ); + SCROLLBARINFO *info = get_ptr( &args ); + + return NtUserGetScrollBarInfo( hwnd, id, info ); +} + NTSTATUS WINAPI wow64_NtUserGetSystemDpiForProcess( UINT *args ) { HANDLE process = get_handle( &args ); @@ -1868,6 +1886,16 @@ NTSTATUS WINAPI wow64_NtUserSetProp( UINT *args ) return NtUserSetProp( hwnd, str, handle ); }
+NTSTATUS WINAPI wow64_NtUserSetScrollInfo( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT bar = get_ulong( &args ); + const SCROLLINFO *info = get_ptr( &args ); + BOOL redraw = get_ulong( &args ); + + return NtUserSetScrollInfo( hwnd, bar, info, redraw ); +} + NTSTATUS WINAPI wow64_NtUserSetSysColors( UINT *args ) { INT count = get_ulong( &args ); @@ -1974,6 +2002,15 @@ NTSTATUS WINAPI wow64_NtUserShowCursor( UINT *args ) return NtUserShowCursor( show ); }
+NTSTATUS WINAPI wow64_NtUserShowScrollBar( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT bar = get_ulong( &args ); + BOOL show = get_ulong( &args ); + + return NtUserShowScrollBar( hwnd, bar, show ); +} + NTSTATUS WINAPI wow64_NtUserThunkedMenuInfo( UINT *args ) { HMENU menu = get_handle( &args );
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 5 ---- dlls/win32u/syscall.c | 5 ++++ dlls/win32u/win32u.spec | 10 ++++---- dlls/win32u/win32u_private.h | 5 ---- dlls/win32u/wrappers.c | 30 ----------------------- dlls/wow64win/syscall.h | 5 ++++ dlls/wow64win/user.c | 46 ++++++++++++++++++++++++++++++++++++ 7 files changed, 61 insertions(+), 45 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 0c7693d24ed..c5316137df4 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1153,11 +1153,6 @@ static struct unix_funcs unix_funcs = NtUserSetClassWord, NtUserSetLayeredWindowAttributes, NtUserSetParent, - NtUserSetWindowLong, - NtUserSetWindowLongPtr, - NtUserSetWindowPlacement, - NtUserSetWindowRgn, - NtUserSetWindowWord, NtUserShowWindow, NtUserShowWindowAsync, NtUserSystemParametersInfo, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index f6b044d8c38..562febcf7e0 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -259,7 +259,12 @@ static void * const syscalls[] = NtUserSetThreadDesktop, NtUserSetTimer, NtUserSetWinEventHook, + NtUserSetWindowLong, + NtUserSetWindowLongPtr, + NtUserSetWindowPlacement, NtUserSetWindowPos, + NtUserSetWindowRgn, + NtUserSetWindowWord, NtUserSetWindowsHookEx, NtUserShowCaret, NtUserShowCursor, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 8ddc4e0c9f7..18eb5e77d9c 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1246,15 +1246,15 @@ @ stub NtUserSetWindowFNID @ stub NtUserSetWindowFeedbackSetting @ stub NtUserSetWindowGroup -@ stdcall NtUserSetWindowLong(long long long long) -@ stdcall NtUserSetWindowLongPtr(long long long long) -@ stdcall NtUserSetWindowPlacement(long ptr) +@ stdcall -syscall NtUserSetWindowLong(long long long long) +@ stdcall -syscall NtUserSetWindowLongPtr(long long long long) +@ stdcall -syscall NtUserSetWindowPlacement(long ptr) @ stdcall -syscall NtUserSetWindowPos(long long long long long long long) -@ stdcall NtUserSetWindowRgn(long long long) +@ stdcall -syscall NtUserSetWindowRgn(long long long) @ stub NtUserSetWindowRgnEx @ stub NtUserSetWindowShowState @ stub NtUserSetWindowStationUser -@ stdcall NtUserSetWindowWord(long long long) +@ stdcall -syscall NtUserSetWindowWord(long long long) @ stub NtUserSetWindowsHookAW @ stdcall -syscall NtUserSetWindowsHookEx(ptr ptr long long ptr long) @ stdcall -syscall NtUserShowCaret(long) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index aec24b73f53..582facc0ddf 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -209,11 +209,6 @@ struct unix_funcs WORD (WINAPI *pNtUserSetClassWord)( HWND hwnd, INT offset, WORD newval ); BOOL (WINAPI *pNtUserSetLayeredWindowAttributes)( HWND hwnd, COLORREF key, BYTE alpha, DWORD flags ); HWND (WINAPI *pNtUserSetParent)( HWND hwnd, HWND parent ); - LONG (WINAPI *pNtUserSetWindowLong)( HWND hwnd, INT offset, LONG newval, BOOL ansi ); - LONG_PTR (WINAPI *pNtUserSetWindowLongPtr)( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ); - BOOL (WINAPI *pNtUserSetWindowPlacement)( HWND hwnd, const WINDOWPLACEMENT *wpl ); - int (WINAPI *pNtUserSetWindowRgn)( HWND hwnd, HRGN hrgn, BOOL redraw ); - WORD (WINAPI *pNtUserSetWindowWord)( HWND hwnd, INT offset, WORD newval ); BOOL (WINAPI *pNtUserShowWindow)( HWND hwnd, INT cmd ); BOOL (WINAPI *pNtUserShowWindowAsync)( HWND hwnd, INT cmd ); BOOL (WINAPI *pNtUserSystemParametersInfo)( UINT action, UINT val, PVOID ptr, UINT winini ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index b2b143cc136..290c4a51f1d 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -826,36 +826,6 @@ HWND WINAPI NtUserSetParent( HWND hwnd, HWND parent ) return unix_funcs->pNtUserSetParent( hwnd, parent ); }
-LONG WINAPI NtUserSetWindowLong( HWND hwnd, INT offset, LONG newval, BOOL ansi ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetWindowLong( hwnd, offset, newval, ansi ); -} - -LONG_PTR WINAPI NtUserSetWindowLongPtr( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetWindowLongPtr( hwnd, offset, newval, ansi ); -} - -BOOL WINAPI NtUserSetWindowPlacement( HWND hwnd, const WINDOWPLACEMENT *wpl ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetWindowPlacement( hwnd, wpl ); -} - -int WINAPI NtUserSetWindowRgn( HWND hwnd, HRGN hrgn, BOOL redraw ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetWindowRgn( hwnd, hrgn, redraw ); -} - -WORD WINAPI NtUserSetWindowWord( HWND hwnd, INT offset, WORD newval ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetWindowWord( hwnd, offset, newval ); -} - BOOL WINAPI NtUserShowWindowAsync( HWND hwnd, INT cmd ) { if (!unix_funcs) return FALSE; diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 3a2cdf3f8ec..6a42e1ee7d7 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -246,7 +246,12 @@ SYSCALL_ENTRY( NtUserSetThreadDesktop ) \ SYSCALL_ENTRY( NtUserSetTimer ) \ SYSCALL_ENTRY( NtUserSetWinEventHook ) \ + SYSCALL_ENTRY( NtUserSetWindowLong ) \ + SYSCALL_ENTRY( NtUserSetWindowLongPtr ) \ + SYSCALL_ENTRY( NtUserSetWindowPlacement ) \ SYSCALL_ENTRY( NtUserSetWindowPos ) \ + SYSCALL_ENTRY( NtUserSetWindowRgn ) \ + SYSCALL_ENTRY( NtUserSetWindowWord ) \ SYSCALL_ENTRY( NtUserSetWindowsHookEx ) \ SYSCALL_ENTRY( NtUserShowCaret ) \ SYSCALL_ENTRY( NtUserShowCursor ) \ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index a6acccf5089..12ede1397c1 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -1959,6 +1959,34 @@ NTSTATUS WINAPI wow64_NtUserSetWinEventHook( UINT *args ) return HandleToUlong( ret ); }
+NTSTATUS WINAPI wow64_NtUserSetWindowLong( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT offset = get_ulong( &args ); + LONG newval = get_ulong( &args ); + BOOL ansi = get_ulong( &args ); + + return NtUserSetWindowLong( hwnd, offset, newval, ansi ); +} + +NTSTATUS WINAPI wow64_NtUserSetWindowLongPtr( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT offset = get_ulong( &args ); + LONG_PTR newval = get_ulong( &args ); + BOOL ansi = get_ulong( &args ); + + return NtUserSetWindowLongPtr( hwnd, offset, newval, ansi ); +} + +NTSTATUS WINAPI wow64_NtUserSetWindowPlacement( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + const WINDOWPLACEMENT *wpl = get_ptr( &args ); + + return NtUserSetWindowPlacement( hwnd, wpl ); +} + NTSTATUS WINAPI wow64_NtUserSetWindowPos( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -1972,6 +2000,24 @@ NTSTATUS WINAPI wow64_NtUserSetWindowPos( UINT *args ) return NtUserSetWindowPos( hwnd, after, x, y, cx, cy, flags ); }
+NTSTATUS WINAPI wow64_NtUserSetWindowRgn( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + HRGN hrgn = get_handle( &args ); + BOOL redraw = get_ulong( &args ); + + return NtUserSetWindowRgn( hwnd, hrgn, redraw ); +} + +NTSTATUS WINAPI wow64_NtUserSetWindowWord( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT offset = get_ulong( &args ); + WORD newval = get_ulong( &args ); + + return NtUserSetWindowWord( hwnd, offset, newval ); +} + NTSTATUS WINAPI wow64_NtUserSetWindowsHookEx( UINT *args ) { HINSTANCE inst = get_handle( &args );
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 8 ---- dlls/win32u/syscall.c | 8 ++++ dlls/win32u/win32u.spec | 16 +++---- dlls/win32u/win32u_private.h | 8 ---- dlls/win32u/wrappers.c | 48 ------------------- dlls/wow64win/syscall.h | 10 +++- dlls/wow64win/user.c | 91 ++++++++++++++++++++++++++++++++++++ 7 files changed, 116 insertions(+), 73 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index c5316137df4..3b2c82601f7 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1140,10 +1140,7 @@ static struct unix_funcs unix_funcs = NtUserDrawMenuBarTemp, NtUserEndPaint, NtUserExcludeUpdateRgn, - NtUserFlashWindowEx, NtUserGetClassInfoEx, - NtUserGetWindowPlacement, - NtUserInternalGetWindowIcon, NtUserRegisterClassExWOW, NtUserReleaseDC, NtUserScrollDC, @@ -1151,15 +1148,10 @@ static struct unix_funcs unix_funcs = NtUserSetClassLong, NtUserSetClassLongPtr, NtUserSetClassWord, - NtUserSetLayeredWindowAttributes, - NtUserSetParent, - NtUserShowWindow, - NtUserShowWindowAsync, NtUserSystemParametersInfo, NtUserSystemParametersInfoForDpi, NtUserUnregisterClass, NtUserUpdateLayeredWindow, - NtUserWindowFromPoint,
SetDIBits, __wine_get_brush_bitmap_info, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 562febcf7e0..eb432ccc96a 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -150,6 +150,7 @@ static void * const syscalls[] = NtUserEnumDisplaySettings, NtUserFindExistingCursorIcon, NtUserFindWindowEx, + NtUserFlashWindowEx, NtUserGetAncestor, NtUserGetAsyncKeyState, NtUserGetAtomName, @@ -203,10 +204,12 @@ static void * const syscalls[] = NtUserGetUpdateRect, NtUserGetUpdateRgn, NtUserGetUpdatedClipboardFormats, + NtUserGetWindowPlacement, NtUserGetWindowRgnEx, NtUserHideCaret, NtUserHiliteMenuItem, NtUserInitializeClientPfnArrays, + NtUserInternalGetWindowIcon, NtUserInternalGetWindowText, NtUserInvalidateRect, NtUserInvalidateRgn, @@ -245,10 +248,12 @@ static void * const syscalls[] = NtUserSetFocus, NtUserSetInternalWindowPos, NtUserSetKeyboardState, + NtUserSetLayeredWindowAttributes, NtUserSetMenu, NtUserSetMenuContextHelpId, NtUserSetMenuDefaultItem, NtUserSetObjectInformation, + NtUserSetParent, NtUserSetProcessDpiAwarenessContext, NtUserSetProcessWindowStation, NtUserSetProp, @@ -269,6 +274,8 @@ static void * const syscalls[] = NtUserShowCaret, NtUserShowCursor, NtUserShowScrollBar, + NtUserShowWindow, + NtUserShowWindowAsync, NtUserThunkedMenuInfo, NtUserThunkedMenuItemInfo, NtUserToUnicodeEx, @@ -283,6 +290,7 @@ static void * const syscalls[] = NtUserVkKeyScanEx, NtUserWaitForInputIdle, NtUserWindowFromDC, + NtUserWindowFromPoint, };
static BYTE arguments[ARRAY_SIZE(syscalls)]; diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 18eb5e77d9c..85fe3ec7237 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -883,7 +883,7 @@ @ stub NtUserFillWindow @ stdcall -syscall NtUserFindExistingCursorIcon(ptr ptr ptr) @ stdcall -syscall NtUserFindWindowEx(long long ptr ptr long) -@ stdcall NtUserFlashWindowEx(ptr) +@ stdcall -syscall NtUserFlashWindowEx(ptr) @ stub NtUserForceWindowToDpiForTest @ stub NtUserFrostCrashedWindow @ stub NtUserFunctionalizeDisplayConfig @@ -1014,7 +1014,7 @@ @ stub NtUserGetWindowFeedbackSetting @ stub NtUserGetWindowGroupId @ stub NtUserGetWindowMinimizeRect -@ stdcall NtUserGetWindowPlacement(long ptr) +@ stdcall -syscall NtUserGetWindowPlacement(long ptr) @ stub NtUserGetWindowProcessHandle @ stdcall -syscall NtUserGetWindowRgnEx(long long long) @ stub NtUserGhostWindowFromHungWindow @@ -1044,7 +1044,7 @@ @ stub NtUserInjectPointerInput @ stub NtUserInjectTouchInput @ stub NtUserInteractiveControlQueryUsage -@ stdcall NtUserInternalGetWindowIcon(ptr long) +@ stdcall -syscall NtUserInternalGetWindowIcon(ptr long) @ stdcall -syscall NtUserInternalGetWindowText(long ptr long) @ stub NtUserInternalToUnicode @ stdcall -syscall NtUserInvalidateRect(long ptr long) @@ -1203,7 +1203,7 @@ @ stub NtUserSetInteractiveCtrlRotationAngle @ stdcall -syscall NtUserSetInternalWindowPos(long long ptr ptr) @ stdcall -syscall NtUserSetKeyboardState(ptr) -@ stdcall NtUserSetLayeredWindowAttributes(ptr long long long) +@ stdcall -syscall NtUserSetLayeredWindowAttributes(ptr long long long) @ stub NtUserSetMagnificationDesktopMagnifierOffsetsDWMUpdated @ stub NtUserSetManipulationInputTarget @ stdcall -syscall NtUserSetMenu(long long) @@ -1214,7 +1214,7 @@ @ stub NtUserSetMonitorWorkArea @ stub NtUserSetMouseInputRateLimitingTimer @ stdcall -syscall NtUserSetObjectInformation(long long ptr long) -@ stdcall NtUserSetParent(long long) +@ stdcall -syscall NtUserSetParent(long long) @ stub NtUserSetPrecisionTouchPadConfiguration @ stdcall -syscall NtUserSetProcessDpiAwarenessContext(long long) @ stub NtUserSetProcessInteractionFlags @@ -1261,8 +1261,8 @@ @ stdcall -syscall NtUserShowCursor(long) @ stdcall -syscall NtUserShowScrollBar(long long long) @ stub NtUserShowSystemCursor -@ stdcall NtUserShowWindow(long long) -@ stdcall NtUserShowWindowAsync(long long) +@ stdcall -syscall NtUserShowWindow(long long) +@ stdcall -syscall NtUserShowWindowAsync(long long) @ stub NtUserShutdownBlockReasonCreate @ stub NtUserShutdownBlockReasonQuery @ stub NtUserShutdownReasonDestroy @@ -1311,7 +1311,7 @@ @ stub NtUserWaitMessage @ stdcall -syscall NtUserWindowFromDC(long) @ stub NtUserWindowFromPhysicalPoint -@ stdcall NtUserWindowFromPoint(long long) +@ stdcall -syscall NtUserWindowFromPoint(long long) @ stub NtUserYieldTask @ stub NtValidateCompositionSurfaceHandle @ stub NtVisualCaptureBits diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 582facc0ddf..1376405cafb 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -191,11 +191,8 @@ struct unix_funcs DWORD (WINAPI *pNtUserDrawMenuBarTemp)( HWND hwnd, HDC hdc, RECT *rect, HMENU handle, HFONT font ); BOOL (WINAPI *pNtUserEndPaint)( HWND hwnd, const PAINTSTRUCT *ps ); INT (WINAPI *pNtUserExcludeUpdateRgn)( HDC hdc, HWND hwnd ); - BOOL (WINAPI *pNtUserFlashWindowEx)( FLASHWINFO *info ); ATOM (WINAPI *pNtUserGetClassInfoEx)( HINSTANCE instance, UNICODE_STRING *name, WNDCLASSEXW *wc, struct client_menu_name *menu_name, BOOL ansi ); - BOOL (WINAPI *pNtUserGetWindowPlacement)( HWND hwnd, WINDOWPLACEMENT *placement ); - HICON (WINAPI *pNtUserInternalGetWindowIcon)( HWND hwnd, UINT type ); ATOM (WINAPI *pNtUserRegisterClassExWOW)( const WNDCLASSEXW *wc, UNICODE_STRING *name, UNICODE_STRING *version, struct client_menu_name *client_menu_name, @@ -207,10 +204,6 @@ struct unix_funcs DWORD (WINAPI *pNtUserSetClassLong)( HWND hwnd, INT offset, LONG newval, BOOL ansi ); ULONG_PTR (WINAPI *pNtUserSetClassLongPtr)( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ); WORD (WINAPI *pNtUserSetClassWord)( HWND hwnd, INT offset, WORD newval ); - BOOL (WINAPI *pNtUserSetLayeredWindowAttributes)( HWND hwnd, COLORREF key, BYTE alpha, DWORD flags ); - HWND (WINAPI *pNtUserSetParent)( HWND hwnd, HWND parent ); - BOOL (WINAPI *pNtUserShowWindow)( HWND hwnd, INT cmd ); - BOOL (WINAPI *pNtUserShowWindowAsync)( HWND hwnd, INT cmd ); BOOL (WINAPI *pNtUserSystemParametersInfo)( UINT action, UINT val, PVOID ptr, UINT winini ); BOOL (WINAPI *pNtUserSystemParametersInfoForDpi)( UINT action, UINT val, PVOID ptr, UINT winini, UINT dpi ); @@ -220,7 +213,6 @@ struct unix_funcs const SIZE *size, HDC hdc_src, const POINT *pts_src, COLORREF key, const BLENDFUNCTION *blend, DWORD flags, const RECT *dirty ); - HWND (WINAPI *pNtUserWindowFromPoint)( LONG x, LONG y );
/* Wine-specific functions */ INT (WINAPI *pSetDIBits)( HDC hdc, HBITMAP hbitmap, UINT startscan, diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 290c4a51f1d..bd185129b65 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -744,12 +744,6 @@ INT WINAPI NtUserExcludeUpdateRgn( HDC hdc, HWND hwnd ) return unix_funcs->pNtUserExcludeUpdateRgn( hdc, hwnd ); }
-BOOL WINAPI NtUserFlashWindowEx( FLASHWINFO *info ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserFlashWindowEx( info ); -} - ATOM WINAPI NtUserGetClassInfoEx( HINSTANCE instance, UNICODE_STRING *name, WNDCLASSEXW *wc, struct client_menu_name *menu_name, BOOL ansi ) { @@ -757,18 +751,6 @@ ATOM WINAPI NtUserGetClassInfoEx( HINSTANCE instance, UNICODE_STRING *name, WNDC return unix_funcs->pNtUserGetClassInfoEx( instance, name, wc, menu_name, ansi ); }
-BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserGetWindowPlacement( hwnd, placement ); -} - -HICON WINAPI NtUserInternalGetWindowIcon( HWND hwnd, UINT type ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserInternalGetWindowIcon( hwnd, type ); -} - ATOM WINAPI NtUserRegisterClassExWOW( const WNDCLASSEXW *wc, UNICODE_STRING *name, UNICODE_STRING *version, struct client_menu_name *client_menu_name, DWORD fnid, DWORD flags, DWORD *wow ) @@ -814,30 +796,6 @@ WORD WINAPI NtUserSetClassWord( HWND hwnd, INT offset, WORD newval ) return unix_funcs->pNtUserSetClassWord( hwnd, offset, newval ); }
-BOOL WINAPI NtUserSetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha, DWORD flags ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserSetLayeredWindowAttributes( hwnd, key, alpha, flags ); -} - -HWND WINAPI NtUserSetParent( HWND hwnd, HWND parent ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetParent( hwnd, parent ); -} - -BOOL WINAPI NtUserShowWindowAsync( HWND hwnd, INT cmd ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserShowWindowAsync( hwnd, cmd ); -} - -BOOL WINAPI NtUserShowWindow( HWND hwnd, INT cmd ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserShowWindow( hwnd, cmd ); -} - BOOL WINAPI NtUserSystemParametersInfo( UINT action, UINT val, PVOID ptr, UINT winini ) { if (!unix_funcs) return FALSE; @@ -866,12 +824,6 @@ BOOL WINAPI NtUserUpdateLayeredWindow( HWND hwnd, HDC hdc_dst, const POINT *pts_ key, blend, flags, dirty ); }
-HWND WINAPI NtUserWindowFromPoint( LONG x, LONG y ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserWindowFromPoint( x, y ); -} - INT WINAPI SetDIBits( HDC hdc, HBITMAP hbitmap, UINT startscan, UINT lines, const void *bits, const BITMAPINFO *info, UINT coloruse ) diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 6a42e1ee7d7..1477650f686 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -137,6 +137,7 @@ SYSCALL_ENTRY( NtUserEnumDisplaySettings ) \ SYSCALL_ENTRY( NtUserFindExistingCursorIcon ) \ SYSCALL_ENTRY( NtUserFindWindowEx ) \ + SYSCALL_ENTRY( NtUserFlashWindowEx ) \ SYSCALL_ENTRY( NtUserGetAncestor ) \ SYSCALL_ENTRY( NtUserGetAsyncKeyState ) \ SYSCALL_ENTRY( NtUserGetAtomName ) \ @@ -190,10 +191,12 @@ SYSCALL_ENTRY( NtUserGetUpdateRect ) \ SYSCALL_ENTRY( NtUserGetUpdateRgn ) \ SYSCALL_ENTRY( NtUserGetUpdatedClipboardFormats ) \ + SYSCALL_ENTRY( NtUserGetWindowPlacement ) \ SYSCALL_ENTRY( NtUserGetWindowRgnEx ) \ SYSCALL_ENTRY( NtUserHideCaret ) \ SYSCALL_ENTRY( NtUserHiliteMenuItem ) \ SYSCALL_ENTRY( NtUserInitializeClientPfnArrays ) \ + SYSCALL_ENTRY( NtUserInternalGetWindowIcon ) \ SYSCALL_ENTRY( NtUserInternalGetWindowText ) \ SYSCALL_ENTRY( NtUserInvalidateRect ) \ SYSCALL_ENTRY( NtUserInvalidateRgn ) \ @@ -232,10 +235,12 @@ SYSCALL_ENTRY( NtUserSetFocus ) \ SYSCALL_ENTRY( NtUserSetInternalWindowPos ) \ SYSCALL_ENTRY( NtUserSetKeyboardState ) \ + SYSCALL_ENTRY( NtUserSetLayeredWindowAttributes ) \ SYSCALL_ENTRY( NtUserSetMenu ) \ SYSCALL_ENTRY( NtUserSetMenuContextHelpId ) \ SYSCALL_ENTRY( NtUserSetMenuDefaultItem ) \ SYSCALL_ENTRY( NtUserSetObjectInformation ) \ + SYSCALL_ENTRY( NtUserSetParent ) \ SYSCALL_ENTRY( NtUserSetProcessDpiAwarenessContext ) \ SYSCALL_ENTRY( NtUserSetProcessWindowStation ) \ SYSCALL_ENTRY( NtUserSetProp ) \ @@ -256,6 +261,8 @@ SYSCALL_ENTRY( NtUserShowCaret ) \ SYSCALL_ENTRY( NtUserShowCursor ) \ SYSCALL_ENTRY( NtUserShowScrollBar ) \ + SYSCALL_ENTRY( NtUserShowWindow ) \ + SYSCALL_ENTRY( NtUserShowWindowAsync ) \ SYSCALL_ENTRY( NtUserThunkedMenuInfo ) \ SYSCALL_ENTRY( NtUserThunkedMenuItemInfo ) \ SYSCALL_ENTRY( NtUserToUnicodeEx ) \ @@ -269,6 +276,7 @@ SYSCALL_ENTRY( NtUserUpdateInputContext ) \ SYSCALL_ENTRY( NtUserVkKeyScanEx ) \ SYSCALL_ENTRY( NtUserWaitForInputIdle ) \ - SYSCALL_ENTRY( NtUserWindowFromDC ) + SYSCALL_ENTRY( NtUserWindowFromDC ) \ + SYSCALL_ENTRY( NtUserWindowFromPoint )
#endif /* __WOW64WIN_SYSCALL_H */ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 12ede1397c1..5ede6cb10b9 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -662,6 +662,39 @@ NTSTATUS WINAPI wow64_NtUserFindWindowEx( UINT *args ) return HandleToUlong( ret ); }
+NTSTATUS WINAPI wow64_NtUserFlashWindowEx( UINT *args ) +{ + struct + { + UINT cbSize; + ULONG hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; + } *info32 = get_ptr( &args ); + + FLASHWINFO info; + + if (!info32) + { + SetLastError( ERROR_NOACCESS ); + return FALSE; + } + + if (info32->cbSize != sizeof(*info32)) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + + info.cbSize = sizeof(info); + info.hwnd = UlongToHandle( info32->hwnd ); + info.dwFlags = info32->dwFlags; + info.uCount = info32->uCount; + info.dwTimeout = info32->dwTimeout; + return NtUserFlashWindowEx( &info ); +} + NTSTATUS WINAPI wow64_NtUserGetAncestor( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -1357,6 +1390,14 @@ NTSTATUS WINAPI wow64_NtUserGetUpdatedClipboardFormats( UINT *args ) return NtUserGetUpdatedClipboardFormats( formats, size, out_size ); }
+NTSTATUS WINAPI wow64_NtUserGetWindowPlacement( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + WINDOWPLACEMENT *placement = get_ptr( &args ); + + return NtUserGetWindowPlacement( hwnd, placement ); +} + NTSTATUS WINAPI wow64_NtUserGetWindowRgnEx( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -1389,6 +1430,14 @@ NTSTATUS WINAPI wow64_NtUserInitializeClientPfnArrays( UINT *args ) return STATUS_NOT_SUPPORTED; }
+NTSTATUS WINAPI wow64_NtUserInternalGetWindowIcon( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + UINT type = get_ulong( &args ); + + return HandleToUlong( NtUserInternalGetWindowIcon( hwnd, type )); +} + NTSTATUS WINAPI wow64_NtUserInternalGetWindowText( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -1827,6 +1876,16 @@ NTSTATUS WINAPI wow64_NtUserSetKeyboardState( UINT *args ) return NtUserSetKeyboardState( state ); }
+NTSTATUS WINAPI wow64_NtUserSetLayeredWindowAttributes( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + COLORREF key = get_ulong( &args ); + BYTE alpha = get_ulong( &args ); + DWORD flags = get_ulong( &args ); + + return NtUserSetLayeredWindowAttributes( hwnd, key, alpha, flags ); +} + NTSTATUS WINAPI wow64_NtUserSetMenu( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -1862,6 +1921,14 @@ NTSTATUS WINAPI wow64_NtUserSetObjectInformation( UINT *args ) return NtUserSetObjectInformation( handle, index, info, len ); }
+NTSTATUS WINAPI wow64_NtUserSetParent( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + HWND parent = get_handle( &args ); + + return HandleToUlong( NtUserSetParent( hwnd, parent )); +} + NTSTATUS WINAPI wow64_NtUserSetProcessDpiAwarenessContext( UINT *args ) { ULONG awareness = get_ulong( &args ); @@ -2057,6 +2124,22 @@ NTSTATUS WINAPI wow64_NtUserShowScrollBar( UINT *args ) return NtUserShowScrollBar( hwnd, bar, show ); }
+NTSTATUS WINAPI wow64_NtUserShowWindow( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT cmd = get_ulong( &args ); + + return NtUserShowWindow( hwnd, cmd ); +} + +NTSTATUS WINAPI wow64_NtUserShowWindowAsync( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT cmd = get_ulong( &args ); + + return NtUserShowWindowAsync( hwnd, cmd ); +} + NTSTATUS WINAPI wow64_NtUserThunkedMenuInfo( UINT *args ) { HMENU menu = get_handle( &args ); @@ -2247,3 +2330,11 @@ NTSTATUS WINAPI wow64_NtUserWindowFromDC( UINT *args )
return HandleToUlong( NtUserWindowFromDC( hdc )); } + +NTSTATUS WINAPI wow64_NtUserWindowFromPoint( UINT *args ) +{ + LONG x = get_ulong( &args ); + LONG y = get_ulong( &args ); + + return HandleToUlong( NtUserWindowFromPoint( x, y )); +}
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 6 -- dlls/win32u/syscall.c | 6 ++ dlls/win32u/win32u.spec | 12 +-- dlls/win32u/win32u_private.h | 11 --- dlls/win32u/wrappers.c | 40 --------- dlls/wow64win/syscall.h | 6 ++ dlls/wow64win/user.c | 161 +++++++++++++++++++++++++++++++++++ 7 files changed, 179 insertions(+), 63 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 3b2c82601f7..0ace308c7ca 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1140,17 +1140,11 @@ static struct unix_funcs unix_funcs = NtUserDrawMenuBarTemp, NtUserEndPaint, NtUserExcludeUpdateRgn, - NtUserGetClassInfoEx, - NtUserRegisterClassExWOW, NtUserReleaseDC, NtUserScrollDC, NtUserSelectPalette, - NtUserSetClassLong, - NtUserSetClassLongPtr, - NtUserSetClassWord, NtUserSystemParametersInfo, NtUserSystemParametersInfoForDpi, - NtUserUnregisterClass, NtUserUpdateLayeredWindow,
SetDIBits, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index eb432ccc96a..54a0e2436b7 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -156,6 +156,7 @@ static void * const syscalls[] = NtUserGetAtomName, NtUserGetCaretBlinkTime, NtUserGetCaretPos, + NtUserGetClassInfoEx, NtUserGetClassName, NtUserGetClipboardData, NtUserGetClipboardFormatName, @@ -231,6 +232,7 @@ static void * const syscalls[] = NtUserPostThreadMessage, NtUserQueryInputContext, NtUserRedrawWindow, + NtUserRegisterClassExWOW, NtUserRegisterHotKey, NtUserRegisterRawInputDevices, NtUserRemoveClipboardFormatListener, @@ -240,6 +242,9 @@ static void * const syscalls[] = NtUserSendInput, NtUserSetActiveWindow, NtUserSetCapture, + NtUserSetClassLong, + NtUserSetClassLongPtr, + NtUserSetClassWord, NtUserSetClipboardData, NtUserSetClipboardViewer, NtUserSetCursor, @@ -285,6 +290,7 @@ static void * const syscalls[] = NtUserTranslateMessage, NtUserUnhookWinEvent, NtUserUnhookWindowsHookEx, + NtUserUnregisterClass, NtUserUnregisterHotKey, NtUserUpdateInputContext, NtUserVkKeyScanEx, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 85fe3ec7237..e67db13f5c1 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -898,7 +898,7 @@ @ stub NtUserGetCPD @ stdcall -syscall NtUserGetCaretBlinkTime() @ stdcall -syscall NtUserGetCaretPos(ptr) -@ stdcall NtUserGetClassInfoEx(ptr ptr ptr ptr long) +@ stdcall -syscall NtUserGetClassInfoEx(ptr ptr ptr ptr long) @ stdcall -syscall NtUserGetClassName(long long ptr) @ stub NtUserGetClipCursor @ stub NtUserGetClipboardAccessToken @@ -1122,7 +1122,7 @@ @ stub NtUserRealWaitMessageEx @ stdcall -syscall NtUserRedrawWindow(long ptr long long) @ stub NtUserRegisterBSDRWindow -@ stdcall NtUserRegisterClassExWOW(ptr ptr ptr ptr long long long) +@ stdcall -syscall NtUserRegisterClassExWOW(ptr ptr ptr ptr long long long) @ stub NtUserRegisterDManipHook @ stub NtUserRegisterEdgy @ stub NtUserRegisterErrorReportingDialog @@ -1171,9 +1171,9 @@ @ stub NtUserSetCalibrationData @ stdcall -syscall NtUserSetCapture(long) @ stub NtUserSetChildWindowNoActivate -@ stdcall NtUserSetClassLong(long long long long) -@ stdcall NtUserSetClassLongPtr(long long long long) -@ stdcall NtUserSetClassWord(long long long) +@ stdcall -syscall NtUserSetClassLong(long long long long) +@ stdcall -syscall NtUserSetClassLongPtr(long long long long) +@ stdcall -syscall NtUserSetClassWord(long long long) @ stdcall -syscall NtUserSetClipboardData(long ptr ptr) @ stdcall -syscall NtUserSetClipboardViewer(long) @ stub NtUserSetCoreWindow @@ -1288,7 +1288,7 @@ @ stdcall -syscall NtUserUnhookWindowsHookEx(long) @ stub NtUserUnloadKeyboardLayout @ stub NtUserUnlockWindowStation -@ stdcall NtUserUnregisterClass(ptr ptr ptr) +@ stdcall -syscall NtUserUnregisterClass(ptr ptr ptr) @ stdcall -syscall NtUserUnregisterHotKey(long long) @ stub NtUserUnregisterSessionPort @ stub NtUserUnregisterUserApiHook diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 1376405cafb..e1f6b5ba155 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -191,24 +191,13 @@ struct unix_funcs DWORD (WINAPI *pNtUserDrawMenuBarTemp)( HWND hwnd, HDC hdc, RECT *rect, HMENU handle, HFONT font ); BOOL (WINAPI *pNtUserEndPaint)( HWND hwnd, const PAINTSTRUCT *ps ); INT (WINAPI *pNtUserExcludeUpdateRgn)( HDC hdc, HWND hwnd ); - ATOM (WINAPI *pNtUserGetClassInfoEx)( HINSTANCE instance, UNICODE_STRING *name, WNDCLASSEXW *wc, - struct client_menu_name *menu_name, BOOL ansi ); - ATOM (WINAPI *pNtUserRegisterClassExWOW)( const WNDCLASSEXW *wc, UNICODE_STRING *name, - UNICODE_STRING *version, - struct client_menu_name *client_menu_name, - DWORD fnid, DWORD flags, DWORD *wow ); INT (WINAPI *pNtUserReleaseDC)( HWND hwnd, HDC hdc ); BOOL (WINAPI *pNtUserScrollDC)( HDC hdc, INT dx, INT dy, const RECT *scroll, const RECT *clip, HRGN ret_update_rgn, RECT *update_rect ); HPALETTE (WINAPI *pNtUserSelectPalette)( HDC hdc, HPALETTE hpal, WORD bkg ); - DWORD (WINAPI *pNtUserSetClassLong)( HWND hwnd, INT offset, LONG newval, BOOL ansi ); - ULONG_PTR (WINAPI *pNtUserSetClassLongPtr)( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ); - WORD (WINAPI *pNtUserSetClassWord)( HWND hwnd, INT offset, WORD newval ); BOOL (WINAPI *pNtUserSystemParametersInfo)( UINT action, UINT val, PVOID ptr, UINT winini ); BOOL (WINAPI *pNtUserSystemParametersInfoForDpi)( UINT action, UINT val, PVOID ptr, UINT winini, UINT dpi ); - BOOL (WINAPI *pNtUserUnregisterClass)( UNICODE_STRING *name, HINSTANCE instance, - struct client_menu_name *client_menu_name ); BOOL (WINAPI *pNtUserUpdateLayeredWindow)( HWND hwnd, HDC hdc_dst, const POINT *pts_dst, const SIZE *size, HDC hdc_src, const POINT *pts_src, COLORREF key, const BLENDFUNCTION *blend, diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index bd185129b65..57951643399 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -744,21 +744,6 @@ INT WINAPI NtUserExcludeUpdateRgn( HDC hdc, HWND hwnd ) return unix_funcs->pNtUserExcludeUpdateRgn( hdc, hwnd ); }
-ATOM WINAPI NtUserGetClassInfoEx( HINSTANCE instance, UNICODE_STRING *name, WNDCLASSEXW *wc, - struct client_menu_name *menu_name, BOOL ansi ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserGetClassInfoEx( instance, name, wc, menu_name, ansi ); -} - -ATOM WINAPI NtUserRegisterClassExWOW( const WNDCLASSEXW *wc, UNICODE_STRING *name, UNICODE_STRING *version, - struct client_menu_name *client_menu_name, DWORD fnid, DWORD flags, - DWORD *wow ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserRegisterClassExWOW( wc, name, version, client_menu_name, fnid, flags, wow ); -} - INT WINAPI NtUserReleaseDC( HWND hwnd, HDC hdc ) { if (!unix_funcs) return 0; @@ -778,24 +763,6 @@ HPALETTE WINAPI NtUserSelectPalette( HDC hdc, HPALETTE hpal, WORD bkg ) return unix_funcs->pNtUserSelectPalette( hdc, hpal, bkg ); }
-DWORD WINAPI NtUserSetClassLong( HWND hwnd, INT offset, LONG newval, BOOL ansi ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetClassLong( hwnd, offset, newval, ansi ); -} - -ULONG_PTR WINAPI NtUserSetClassLongPtr( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetClassLongPtr( hwnd, offset, newval, ansi ); -} - -WORD WINAPI NtUserSetClassWord( HWND hwnd, INT offset, WORD newval ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtUserSetClassWord( hwnd, offset, newval ); -} - BOOL WINAPI NtUserSystemParametersInfo( UINT action, UINT val, PVOID ptr, UINT winini ) { if (!unix_funcs) return FALSE; @@ -808,13 +775,6 @@ BOOL WINAPI NtUserSystemParametersInfoForDpi( UINT action, UINT val, PVOID ptr, return unix_funcs->pNtUserSystemParametersInfoForDpi( action, val, ptr, winini, dpi ); }
-BOOL WINAPI NtUserUnregisterClass( UNICODE_STRING *name, HINSTANCE instance, - struct client_menu_name *client_menu_name ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserUnregisterClass( name, instance, client_menu_name ); -} - BOOL WINAPI NtUserUpdateLayeredWindow( HWND hwnd, HDC hdc_dst, const POINT *pts_dst, const SIZE *size, HDC hdc_src, const POINT *pts_src, COLORREF key, const BLENDFUNCTION *blend, DWORD flags, const RECT *dirty ) diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 1477650f686..16774a25165 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -143,6 +143,7 @@ SYSCALL_ENTRY( NtUserGetAtomName ) \ SYSCALL_ENTRY( NtUserGetCaretBlinkTime ) \ SYSCALL_ENTRY( NtUserGetCaretPos ) \ + SYSCALL_ENTRY( NtUserGetClassInfoEx ) \ SYSCALL_ENTRY( NtUserGetClassName ) \ SYSCALL_ENTRY( NtUserGetClipboardData ) \ SYSCALL_ENTRY( NtUserGetClipboardFormatName ) \ @@ -218,6 +219,7 @@ SYSCALL_ENTRY( NtUserPostThreadMessage ) \ SYSCALL_ENTRY( NtUserQueryInputContext ) \ SYSCALL_ENTRY( NtUserRedrawWindow ) \ + SYSCALL_ENTRY( NtUserRegisterClassExWOW ) \ SYSCALL_ENTRY( NtUserRegisterHotKey ) \ SYSCALL_ENTRY( NtUserRegisterRawInputDevices ) \ SYSCALL_ENTRY( NtUserRemoveClipboardFormatListener ) \ @@ -227,6 +229,9 @@ SYSCALL_ENTRY( NtUserSendInput ) \ SYSCALL_ENTRY( NtUserSetActiveWindow ) \ SYSCALL_ENTRY( NtUserSetCapture ) \ + SYSCALL_ENTRY( NtUserSetClassLong ) \ + SYSCALL_ENTRY( NtUserSetClassLongPtr ) \ + SYSCALL_ENTRY( NtUserSetClassWord ) \ SYSCALL_ENTRY( NtUserSetClipboardData ) \ SYSCALL_ENTRY( NtUserSetClipboardViewer ) \ SYSCALL_ENTRY( NtUserSetCursor ) \ @@ -272,6 +277,7 @@ SYSCALL_ENTRY( NtUserTranslateMessage ) \ SYSCALL_ENTRY( NtUserUnhookWinEvent ) \ SYSCALL_ENTRY( NtUserUnhookWindowsHookEx ) \ + SYSCALL_ENTRY( NtUserUnregisterClass ) \ SYSCALL_ENTRY( NtUserUnregisterHotKey ) \ SYSCALL_ENTRY( NtUserUpdateInputContext ) \ SYSCALL_ENTRY( NtUserVkKeyScanEx ) \ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 5ede6cb10b9..5328edd5375 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -118,6 +118,29 @@ typedef struct BYTE rgbReserved[32]; } PAINTSTRUCT32;
+typedef struct +{ + UINT cbSize; + UINT style; + ULONG lpfnWndProc; + INT cbClsExtra; + INT cbWndExtra; + ULONG hInstance; + ULONG hIcon; + ULONG hCursor; + ULONG hbrBackground; + ULONG lpszMenuName; + ULONG lpszClassName; + ULONG hIconSm; +} WNDCLASSEXW32; + +struct client_menu_name32 +{ + ULONG nameA; + ULONG nameW; + ULONG nameUS; +}; + static MSG *msg_32to64( MSG *msg, const MSG32 *msg32 ) { if (!msg32) return NULL; @@ -144,6 +167,28 @@ static MSG32 *msg_64to32( MSG *msg, MSG32 *msg32 ) return msg32; }
+static struct client_menu_name *client_menu_name_32to64( struct client_menu_name *name, + const struct client_menu_name32 *name32 ) +{ + if (!name32) return NULL; + name->nameA = UlongToPtr( name32->nameA ); + name->nameW = UlongToPtr( name32->nameW ); + name->nameUS = UlongToPtr( name32->nameUS ); + return name; +} + +static struct client_menu_name32 *client_menu_name_64to32( const struct client_menu_name *name, + struct client_menu_name32 *name32 ) +{ + if (name32) + { + name32->nameA = PtrToUlong( name->nameA ); + name32->nameW = PtrToUlong( name->nameW ); + name32->nameUS = PtrToUlong( name->nameUS ); + } + return name32; +} + NTSTATUS WINAPI wow64_NtUserActivateKeyboardLayout( UINT *args ) { HKL layout = get_handle( &args ); @@ -732,6 +777,38 @@ NTSTATUS WINAPI wow64_NtUserGetCaretPos( UINT *args ) return NtUserGetCaretPos( pt ); }
+NTSTATUS WINAPI wow64_NtUserGetClassInfoEx( UINT *args ) +{ + HINSTANCE instance = get_ptr( &args ); + UNICODE_STRING32 *name32 = get_ptr( &args ); + WNDCLASSEXW32 *wc32 = get_ptr( &args ); + struct client_menu_name32 *client_name32 = get_ptr( &args ); + BOOL ansi = get_ulong( &args ); + + struct client_menu_name client_name; + UNICODE_STRING name; + WNDCLASSEXW wc; + + wc.cbSize = sizeof(wc); + if (!NtUserGetClassInfoEx( instance, unicode_str_32to64( &name, name32 ), &wc, + &client_name, ansi )) + return FALSE; + + wc32->style = wc.style; + wc32->lpfnWndProc = PtrToUlong( wc.lpfnWndProc ); + wc32->cbClsExtra = wc.cbClsExtra; + wc32->cbWndExtra = wc.cbWndExtra; + wc32->hInstance = HandleToUlong( wc.hInstance ); + wc32->hIcon = HandleToUlong( wc.hIcon ); + wc32->hCursor = HandleToUlong( wc.hCursor ); + wc32->hbrBackground = HandleToUlong( wc.hbrBackground ); + wc32->lpszMenuName = PtrToUlong( wc.lpszMenuName ); + wc32->lpszClassName = PtrToUlong( wc.lpszClassName ); + wc32->hIconSm = HandleToUlong( wc.hIconSm ); + client_menu_name_64to32( &client_name, client_name32 ); + return TRUE; +} + NTSTATUS WINAPI wow64_NtUserGetClassName( UINT *args ) { HWND hwnd = get_handle( &args ); @@ -1283,6 +1360,46 @@ NTSTATUS WINAPI wow64_NtUserGetRawInputDeviceList( UINT *args ) } }
+NTSTATUS WINAPI wow64_NtUserRegisterClassExWOW( UINT *args ) +{ + const WNDCLASSEXW32 *wc32 = get_ptr( &args ); + UNICODE_STRING32 *name32 = get_ptr( &args ); + UNICODE_STRING32 *version32 = get_ptr( &args ); + struct client_menu_name32 *client_name32 = get_ptr( &args ); + DWORD fnid = get_ulong( &args ); + DWORD flags = get_ulong( &args ); + DWORD *wow = get_ptr( &args ); + + struct client_menu_name client_name; + UNICODE_STRING name, version; + WNDCLASSEXW wc; + + if (wc32->cbSize != sizeof(*wc32)) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return 0; + } + + wc.cbSize = sizeof(wc); + wc.style = wc32->style; + wc.lpfnWndProc = UlongToPtr( wc32->lpfnWndProc ); + wc.cbClsExtra = wc32->cbClsExtra; + wc.cbWndExtra = wc32->cbWndExtra; + wc.hInstance = UlongToHandle( wc32->hInstance ); + wc.hIcon = UlongToHandle( wc32->hIcon ); + wc.hCursor = UlongToHandle( wc32->hCursor ); + wc.hbrBackground = UlongToHandle( wc32->hbrBackground ); + wc.lpszMenuName = UlongToPtr( wc32->lpszMenuName ); + wc.lpszClassName = UlongToPtr( wc32->lpszClassName ); + wc.hIconSm = UlongToHandle( wc32->hIconSm ); + + return NtUserRegisterClassExWOW( &wc, + unicode_str_32to64( &name, name32 ), + unicode_str_32to64( &version, version32 ), + client_menu_name_32to64( &client_name, client_name32 ), + fnid, flags, wow ); +} + NTSTATUS WINAPI wow64_NtUserGetRegisteredRawInputDevices( UINT *args ) { RAWINPUTDEVICE32 *devices32 = get_ptr( &args ); @@ -1797,6 +1914,35 @@ NTSTATUS WINAPI wow64_NtUserSetCapture( UINT *args ) return HandleToUlong( NtUserSetCapture( hwnd )); }
+NTSTATUS WINAPI wow64_NtUserSetClassLong( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT offset = get_ulong( &args ); + LONG newval = get_ulong( &args ); + BOOL ansi = get_ulong( &args ); + + return NtUserSetClassLong( hwnd, offset, newval, ansi ); +} + +NTSTATUS WINAPI wow64_NtUserSetClassLongPtr( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT offset = get_ulong( &args ); + LONG_PTR newval = get_ulong( &args ); + BOOL ansi = get_ulong( &args ); + + return NtUserSetClassLongPtr( hwnd, offset, newval, ansi ); +} + +NTSTATUS WINAPI wow64_NtUserSetClassWord( UINT *args ) +{ + HWND hwnd = get_handle( &args ); + INT offset = get_ulong( &args ); + WORD newval = get_ulong( &args ); + + return NtUserSetClassWord( hwnd, offset, newval ); +} + NTSTATUS WINAPI wow64_NtUserSetClipboardData( UINT *args ) { UINT format = get_ulong( &args ); @@ -2290,6 +2436,21 @@ NTSTATUS WINAPI wow64_NtUserUnhookWindowsHookEx( UINT *args ) return NtUserUnhookWindowsHookEx( handle ); }
+NTSTATUS WINAPI wow64_NtUserUnregisterClass( UINT *args ) +{ + UNICODE_STRING32 *name32 = get_ptr( &args ); + HINSTANCE instance = get_ptr( &args ); + struct client_menu_name32 *menu_name32 = get_ptr( &args ); + + UNICODE_STRING name; + struct client_menu_name menu_name; + BOOL ret; + + ret = NtUserUnregisterClass( unicode_str_32to64( &name, name32 ), instance, &menu_name ); + if (ret) client_menu_name_64to32( &menu_name, menu_name32 ); + return ret; +} + NTSTATUS WINAPI wow64_NtUserUnregisterHotKey( UINT *args ) { HWND hwnd = get_handle( &args );
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 2 - dlls/win32u/syscall.c | 2 + dlls/win32u/win32u.spec | 4 +- dlls/win32u/win32u_private.h | 3 - dlls/win32u/wrappers.c | 12 ---- dlls/wow64win/syscall.h | 2 + dlls/wow64win/user.c | 110 +++++++++++++++++++++++++++++++++++ 7 files changed, 116 insertions(+), 19 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 0ace308c7ca..cb5297c5676 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1143,8 +1143,6 @@ static struct unix_funcs unix_funcs = NtUserReleaseDC, NtUserScrollDC, NtUserSelectPalette, - NtUserSystemParametersInfo, - NtUserSystemParametersInfoForDpi, NtUserUpdateLayeredWindow,
SetDIBits, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 54a0e2436b7..532c08ef2e0 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -281,6 +281,8 @@ static void * const syscalls[] = NtUserShowScrollBar, NtUserShowWindow, NtUserShowWindowAsync, + NtUserSystemParametersInfo, + NtUserSystemParametersInfoForDpi, NtUserThunkedMenuInfo, NtUserThunkedMenuItemInfo, NtUserToUnicodeEx, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index e67db13f5c1..979fa8475b2 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1271,8 +1271,8 @@ @ stub NtUserSoundSentry @ stub NtUserStopAndEndInertia @ stub NtUserSwitchDesktop -@ stdcall NtUserSystemParametersInfo(long long ptr long) -@ stdcall NtUserSystemParametersInfoForDpi(long long ptr long long) +@ stdcall -syscall NtUserSystemParametersInfo(long long ptr long) +@ stdcall -syscall NtUserSystemParametersInfoForDpi(long long ptr long long) @ stub NtUserTestForInteractiveUser @ stdcall -syscall NtUserThunkedMenuInfo(long ptr) @ stdcall -syscall NtUserThunkedMenuItemInfo(long long long long ptr ptr) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index e1f6b5ba155..d8509c83445 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -195,9 +195,6 @@ struct unix_funcs BOOL (WINAPI *pNtUserScrollDC)( HDC hdc, INT dx, INT dy, const RECT *scroll, const RECT *clip, HRGN ret_update_rgn, RECT *update_rect ); HPALETTE (WINAPI *pNtUserSelectPalette)( HDC hdc, HPALETTE hpal, WORD bkg ); - BOOL (WINAPI *pNtUserSystemParametersInfo)( UINT action, UINT val, PVOID ptr, UINT winini ); - BOOL (WINAPI *pNtUserSystemParametersInfoForDpi)( UINT action, UINT val, PVOID ptr, - UINT winini, UINT dpi ); BOOL (WINAPI *pNtUserUpdateLayeredWindow)( HWND hwnd, HDC hdc_dst, const POINT *pts_dst, const SIZE *size, HDC hdc_src, const POINT *pts_src, COLORREF key, const BLENDFUNCTION *blend, diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 57951643399..f331039714e 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -763,18 +763,6 @@ HPALETTE WINAPI NtUserSelectPalette( HDC hdc, HPALETTE hpal, WORD bkg ) return unix_funcs->pNtUserSelectPalette( hdc, hpal, bkg ); }
-BOOL WINAPI NtUserSystemParametersInfo( UINT action, UINT val, PVOID ptr, UINT winini ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserSystemParametersInfo( action, val, ptr, winini ); -} - -BOOL WINAPI NtUserSystemParametersInfoForDpi( UINT action, UINT val, PVOID ptr, UINT winini, UINT dpi ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtUserSystemParametersInfoForDpi( action, val, ptr, winini, dpi ); -} - BOOL WINAPI NtUserUpdateLayeredWindow( HWND hwnd, HDC hdc_dst, const POINT *pts_dst, const SIZE *size, HDC hdc_src, const POINT *pts_src, COLORREF key, const BLENDFUNCTION *blend, DWORD flags, const RECT *dirty ) diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 16774a25165..3c59dd00b3e 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -268,6 +268,8 @@ SYSCALL_ENTRY( NtUserShowScrollBar ) \ SYSCALL_ENTRY( NtUserShowWindow ) \ SYSCALL_ENTRY( NtUserShowWindowAsync ) \ + SYSCALL_ENTRY( NtUserSystemParametersInfo ) \ + SYSCALL_ENTRY( NtUserSystemParametersInfoForDpi ) \ SYSCALL_ENTRY( NtUserThunkedMenuInfo ) \ SYSCALL_ENTRY( NtUserThunkedMenuItemInfo ) \ SYSCALL_ENTRY( NtUserToUnicodeEx ) \ diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 5328edd5375..4f54921ff02 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -2286,6 +2286,116 @@ NTSTATUS WINAPI wow64_NtUserShowWindowAsync( UINT *args ) return NtUserShowWindowAsync( hwnd, cmd ); }
+NTSTATUS WINAPI wow64_NtUserSystemParametersInfo( UINT *args ) +{ + UINT action = get_ulong( &args ); + UINT val = get_ulong( &args ); + void *ptr = get_ptr( &args ); + UINT winini = get_ulong( &args ); + + switch (action) + { + case SPI_GETSERIALKEYS: + if (ptr) + { + struct + { + UINT cbSize; + DWORD dwFlags; + ULONG lpszActivePort; + ULONG lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; + } *keys32 = ptr; + SERIALKEYSW keys; + + if (keys32->cbSize != sizeof(*keys32)) return FALSE; + keys.cbSize = sizeof(keys); + if (!NtUserSystemParametersInfo( action, val, &keys, winini )) return FALSE; + keys32->dwFlags = keys.dwFlags; + keys32->lpszActivePort = PtrToUlong( keys.lpszActivePort ); + keys32->lpszPort = PtrToUlong( keys.lpszPort ); + keys32->iBaudRate = keys.iBaudRate; + keys32->iPortState = keys.iPortState; + keys32->iActive = keys.iActive; + return TRUE; + } + break; + + case SPI_GETSOUNDSENTRY: + if (ptr) + { + struct + { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + ULONG lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; + } *entry32 = ptr; + SOUNDSENTRYW entry; + + if (entry32->cbSize != sizeof(*entry32)) return FALSE; + entry.cbSize = sizeof(entry); + if (!NtUserSystemParametersInfo( action, val, &entry, winini )) return FALSE; + entry32->dwFlags = entry.dwFlags; + entry32->iFSTextEffect = entry.iFSTextEffect; + entry32->iFSTextEffectMSec = entry.iFSTextEffectMSec; + entry32->iFSTextEffectColorBits = entry.iFSTextEffectColorBits; + entry32->iFSGrafEffect = entry.iFSGrafEffect; + entry32->iFSGrafEffectMSec = entry.iFSGrafEffectMSec; + entry32->iFSGrafEffectColor = entry.iFSGrafEffectColor; + entry32->iWindowsEffect = entry.iWindowsEffect; + entry32->iWindowsEffectMSec = entry.iWindowsEffectMSec; + entry32->lpszWindowsEffectDLL = PtrToUlong( entry.lpszWindowsEffectDLL ); + entry32->iWindowsEffectOrdinal = entry.iWindowsEffectOrdinal; + return TRUE; + } + break; + + case SPI_GETHIGHCONTRAST: + if (ptr) + { + struct + { + UINT cbSize; + DWORD dwFlags; + ULONG lpszDefaultScheme; + } *info32 = ptr; + HIGHCONTRASTW info; + + if (info32->cbSize != sizeof(*info32)) return FALSE; + info.cbSize = sizeof(info); + if (!NtUserSystemParametersInfo( action, val, &info, winini )) return FALSE; + info32->dwFlags = info.dwFlags; + info32->lpszDefaultScheme = PtrToUlong( info.lpszDefaultScheme ); + return TRUE; + } + break; + } + + return NtUserSystemParametersInfo( action, val, ptr, winini ); +} + +NTSTATUS WINAPI wow64_NtUserSystemParametersInfoForDpi( UINT *args ) +{ + UINT action = get_ulong( &args ); + UINT val = get_ulong( &args ); + void *ptr = get_ptr( &args ); + UINT winini = get_ulong( &args ); + UINT dpi = get_ulong( &args ); + + return NtUserSystemParametersInfoForDpi( action, val, ptr, winini, dpi ); +} + NTSTATUS WINAPI wow64_NtUserThunkedMenuInfo( UINT *args ) { HMENU menu = get_handle( &args );
From: Jacek Caban jacek@codeweavers.com
--- dlls/wow64win/gdi.c | 668 ++++++++++++++++++++++---------------------- 1 file changed, 334 insertions(+), 334 deletions(-)
diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index 5fdc9906a02..4d98a1b9b13 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -27,53 +27,37 @@ #include "ntgdi.h" #include "wow64win_private.h"
-NTSTATUS WINAPI wow64_NtGdiCreateClientObj( UINT *args ) -{ - ULONG type = get_ulong( &args ); - - return HandleToUlong( NtGdiCreateClientObj( type )); -} - -NTSTATUS WINAPI wow64_NtGdiDeleteClientObj( UINT *args ) -{ - HGDIOBJ obj = get_handle( &args ); - - return NtGdiDeleteClientObj( obj ); -} - -NTSTATUS WINAPI wow64_NtGdiExtGetObjectW( UINT *args ) -{ - HGDIOBJ handle = get_handle( &args ); - INT count = get_ulong( &args ); - void *buffer = get_ptr( &args ); - - return NtGdiExtGetObjectW( handle, count, buffer ); -} - -NTSTATUS WINAPI wow64_NtGdiGetDCDword( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiAddFontMemResourceEx( UINT *args ) { - HDC hdc = get_handle( &args ); - UINT method = get_ulong( &args ); - DWORD *result = get_ptr( &args ); + void *ptr = get_ptr( &args ); + DWORD size = get_ulong( &args ); + void *dv = get_ptr( &args ); + ULONG dv_size = get_ulong( &args ); + DWORD *count = get_ptr( &args );
- return NtGdiGetDCDword( hdc, method, result ); + return HandleToUlong( NtGdiAddFontMemResourceEx( ptr, size, dv, dv_size, count )); }
-NTSTATUS WINAPI wow64_NtGdiGetDCObject( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiAddFontResourceW( UINT *args ) { - HDC hdc = get_handle( &args ); - UINT type = get_ulong( &args ); + const WCHAR *str = get_ptr( &args ); + ULONG size = get_ulong( &args ); + ULONG files = get_ulong( &args ); + DWORD flags = get_ulong( &args ); + DWORD tid = get_ulong( &args ); + void *dv = get_ptr( &args );
- return HandleToUlong( NtGdiGetDCObject( hdc, type )); + return NtGdiAddFontResourceW( str, size, files, flags, tid, dv ); }
-NTSTATUS WINAPI wow64_NtGdiGetDCPoint( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiCombineRgn( UINT *args ) { - HDC hdc = get_handle( &args ); - UINT method = get_ulong( &args ); - POINT *result = get_ptr( &args ); + HRGN dest = get_handle( &args ); + HRGN src1 = get_handle( &args ); + HRGN src2 = get_handle( &args ); + INT mode = get_ulong( &args );
- return NtGdiGetDCPoint( hdc, method, result ); + return NtGdiCombineRgn( dest, src1, src2, mode ); }
NTSTATUS WINAPI wow64_NtGdiCreateBitmap( UINT *args ) @@ -87,40 +71,23 @@ NTSTATUS WINAPI wow64_NtGdiCreateBitmap( UINT *args ) return HandleToUlong( NtGdiCreateBitmap( width, height, planes, bpp, bits )); }
-NTSTATUS WINAPI wow64_NtGdiGetBitmapBits( UINT *args ) -{ - HBITMAP bitmap = get_handle( &args ); - LONG count = get_ulong( &args ); - void *bits = get_ptr( &args ); - - return NtGdiGetBitmapBits( bitmap, count, bits ); -} - -NTSTATUS WINAPI wow64_NtGdiSetBitmapBits( UINT *args ) -{ - HBITMAP hbitmap = get_handle( &args ); - LONG count = get_ulong( &args ); - const void *bits = get_ptr( &args ); - - return NtGdiSetBitmapBits( hbitmap, count, bits ); -} - -NTSTATUS WINAPI wow64_NtGdiGetBitmapDimension( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiCreateClientObj( UINT *args ) { - HBITMAP bitmap = get_handle( &args ); - SIZE *size = get_ptr( &args ); + ULONG type = get_ulong( &args );
- return NtGdiGetBitmapDimension( bitmap, size ); + return HandleToUlong( NtGdiCreateClientObj( type )); }
-NTSTATUS WINAPI wow64_NtGdiSetBitmapDimension( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiCreateDIBBrush( UINT *args ) { - HBITMAP hbitmap = get_handle( &args ); - INT x = get_ulong( &args ); - INT y = get_ulong( &args ); - SIZE *prev_size = get_ptr( &args ); + const void *data = get_ptr( &args ); + UINT coloruse = get_ulong( &args ); + UINT size = get_ulong( &args ); + BOOL is_8x8 = get_ulong( &args ); + BOOL pen = get_ulong( &args ); + const void *client = get_ptr( &args );
- return NtGdiSetBitmapDimension( hbitmap, x, y, prev_size ); + return HandleToUlong( NtGdiCreateDIBBrush( data, coloruse, size, is_8x8, pen, client )); }
NTSTATUS WINAPI wow64_NtGdiCreateDIBSection( UINT *args ) @@ -144,16 +111,21 @@ NTSTATUS WINAPI wow64_NtGdiCreateDIBSection( UINT *args ) return HandleToUlong( ret ); }
-NTSTATUS WINAPI wow64_NtGdiCreateDIBBrush( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiCreateEllipticRgn( UINT *args ) { - const void *data = get_ptr( &args ); - UINT coloruse = get_ulong( &args ); - UINT size = get_ulong( &args ); - BOOL is_8x8 = get_ulong( &args ); - BOOL pen = get_ulong( &args ); - const void *client = get_ptr( &args ); + INT left = get_ulong( &args ); + INT top = get_ulong( &args ); + INT right = get_ulong( &args ); + INT bottom = get_ulong( &args );
- return HandleToUlong( NtGdiCreateDIBBrush( data, coloruse, size, is_8x8, pen, client )); + return HandleToUlong( NtGdiCreateEllipticRgn( left, top, right, bottom )); +} + +NTSTATUS WINAPI wow64_NtGdiCreateHalftonePalette( UINT *args ) +{ + HDC hdc = get_handle( &args ); + + return HandleToUlong( NtGdiCreateHalftonePalette( hdc )); }
NTSTATUS WINAPI wow64_NtGdiCreateHatchBrushInternal( UINT *args ) @@ -165,6 +137,14 @@ NTSTATUS WINAPI wow64_NtGdiCreateHatchBrushInternal( UINT *args ) return HandleToULong( NtGdiCreateHatchBrushInternal( style, color, pen )); }
+NTSTATUS WINAPI wow64_NtGdiCreatePaletteInternal( UINT *args ) +{ + const LOGPALETTE *palette = get_ptr( &args ); + UINT count = get_ulong( &args ); + + return HandleToUlong( NtGdiCreatePaletteInternal( palette, count )); +} + NTSTATUS WINAPI wow64_NtGdiCreatePatternBrushInternal( UINT *args ) { HBITMAP hbitmap = get_handle( &args ); @@ -174,14 +154,6 @@ NTSTATUS WINAPI wow64_NtGdiCreatePatternBrushInternal( UINT *args ) return HandleToUlong( NtGdiCreatePatternBrushInternal( hbitmap, pen, is_8x8 )); }
-NTSTATUS WINAPI wow64_NtGdiCreateSolidBrush( UINT *args ) -{ - COLORREF color = get_ulong( &args ); - HBRUSH brush = get_handle( &args ); - - return HandleToUlong( NtGdiCreateSolidBrush( color, brush )); -} - NTSTATUS WINAPI wow64_NtGdiCreatePen( UINT *args ) { INT style = get_ulong( &args ); @@ -192,25 +164,6 @@ NTSTATUS WINAPI wow64_NtGdiCreatePen( UINT *args ) return HandleToUlong( NtGdiCreatePen( style, width, color, brush )); }
-NTSTATUS WINAPI wow64_NtGdiExtCreatePen( UINT *args ) -{ - DWORD style = get_ulong( &args ); - DWORD width = get_ulong( &args ); - ULONG brush_style = get_ulong( &args ); - ULONG color = get_ulong( &args ); - ULONG_PTR client_hatch = get_ulong( &args ); - ULONG_PTR hatch = get_ulong( &args ); - DWORD style_count = get_ulong( &args ); - const DWORD *style_bits = get_ptr( &args ); - ULONG dib_size = get_ulong( &args ); - BOOL old_style = get_ulong( &args ); - HBRUSH brush = get_handle( &args ); - - return HandleToUlong( NtGdiExtCreatePen( style, width, brush_style, color, client_hatch, - hatch, style_count, style_bits, dib_size, - old_style, brush )); -} - NTSTATUS WINAPI wow64_NtGdiCreateRectRgn( UINT *args ) { INT left = get_ulong( &args ); @@ -234,182 +187,217 @@ NTSTATUS WINAPI wow64_NtGdiCreateRoundRectRgn( UINT *args ) ellipse_width, ellipse_height )); }
-NTSTATUS WINAPI wow64_NtGdiCreateEllipticRgn( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiCreateSolidBrush( UINT *args ) { - INT left = get_ulong( &args ); - INT top = get_ulong( &args ); - INT right = get_ulong( &args ); - INT bottom = get_ulong( &args ); + COLORREF color = get_ulong( &args ); + HBRUSH brush = get_handle( &args );
- return HandleToUlong( NtGdiCreateEllipticRgn( left, top, right, bottom )); + return HandleToUlong( NtGdiCreateSolidBrush( color, brush )); }
-NTSTATUS WINAPI wow64_NtGdiExtCreateRegion( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiDdDDICreateDevice( UINT *args ) { - const XFORM *xform = get_ptr( &args ); - DWORD count = get_ulong( &args ); - const RGNDATA *data = get_ptr( &args ); - - return HandleToUlong( NtGdiExtCreateRegion( xform, count, data )); -} + struct + { + D3DKMT_HANDLE hAdapter; + D3DKMT_CREATEDEVICEFLAGS Flags; + D3DKMT_HANDLE hDevice; + ULONG pCommandBuffer; + UINT CommandBufferSize; + ULONG pAllocationList; + UINT AllocationListSize; + ULONG pPatchLocationList; + UINT PatchLocationListSize; + } *desc32 = get_ptr( &args );
-NTSTATUS WINAPI wow64_NtGdiGetRegionData( UINT *args ) -{ - HRGN hrgn = get_ptr( &args ); - DWORD count = get_ulong( &args ); - RGNDATA *data = get_ptr( &args ); + D3DKMT_CREATEDEVICE desc = + { + { desc32->hAdapter }, + desc32->Flags + }; + NTSTATUS status;
- return NtGdiGetRegionData( hrgn, count, data ); + if (!(status = NtGdiDdDDICreateDevice( &desc ))) + { + desc32->hDevice = desc.hDevice; + desc32->pCommandBuffer = PtrToUlong( desc.pCommandBuffer ); + desc32->CommandBufferSize = desc.CommandBufferSize; + desc32->pAllocationList = PtrToUlong( desc.pAllocationList ); + desc32->AllocationListSize = desc.AllocationListSize; + desc32->pPatchLocationList = PtrToUlong( desc.pPatchLocationList ); + desc32->PatchLocationListSize = desc.PatchLocationListSize; + } + return status; }
-NTSTATUS WINAPI wow64_NtGdiEqualRgn( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromHdc( UINT *args ) { - HRGN hrgn1 = get_handle( &args ); - HRGN hrgn2 = get_handle( &args ); + struct + { + ULONG hDc; + D3DKMT_HANDLE hAdapter; + LUID AdapterLuid; + D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; + } *desc32 = get_ptr( &args );
- return NtGdiEqualRgn( hrgn1, hrgn2 ); + D3DKMT_OPENADAPTERFROMHDC desc = { UlongToHandle( desc32->hDc ) }; + NTSTATUS status; + + if (!(status = NtGdiDdDDIOpenAdapterFromHdc( &desc ))) + { + desc32->hAdapter = desc.hAdapter; + desc32->AdapterLuid = desc.AdapterLuid; + desc32->VidPnSourceId = desc.VidPnSourceId; + } + return status; }
-NTSTATUS WINAPI wow64_NtGdiGetRgnBox( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiDdDDIQueryStatistics( UINT *args ) { - HRGN hrgn = get_handle( &args ); - RECT *rect = get_ptr( &args ); + D3DKMT_QUERYSTATISTICS *stats = get_ptr( &args );
- return NtGdiGetRgnBox( hrgn, rect ); + return NtGdiDdDDIQueryStatistics( stats ); }
-NTSTATUS WINAPI wow64_NtGdiSetRectRgn( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiDdDDISetQueuedLimit( UINT *args ) { - HRGN hrgn = get_handle( &args ); - INT left = get_ulong( &args ); - INT top = get_ulong( &args ); - INT right = get_ulong( &args ); - INT bottom = get_ulong( &args ); + D3DKMT_SETQUEUEDLIMIT *desc = get_ptr( &args );
- return NtGdiSetRectRgn( hrgn, left, top, right, bottom ); + return NtGdiDdDDISetQueuedLimit( desc ); }
-NTSTATUS WINAPI wow64_NtGdiOffsetRgn( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiDeleteClientObj( UINT *args ) { - HRGN hrgn = get_handle( &args ); - INT x = get_ulong( &args ); - INT y = get_ulong( &args ); + HGDIOBJ obj = get_handle( &args );
- return NtGdiOffsetRgn( hrgn, x, y ); + return NtGdiDeleteClientObj( obj ); }
-NTSTATUS WINAPI wow64_NtGdiCombineRgn( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiDescribePixelFormat( UINT *args ) { - HRGN dest = get_handle( &args ); - HRGN src1 = get_handle( &args ); - HRGN src2 = get_handle( &args ); - INT mode = get_ulong( &args ); + HDC hdc = get_handle( &args ); + INT format = get_ulong( &args ); + UINT size = get_ulong( &args ); + PIXELFORMATDESCRIPTOR *descr = get_ptr( &args );
- return NtGdiCombineRgn( dest, src1, src2, mode ); + return NtGdiDescribePixelFormat( hdc, format, size, descr ); }
-NTSTATUS WINAPI wow64_NtGdiPtInRegion( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiDrawStream( UINT *args ) { - HRGN hrgn = get_handle( &args ); - INT x = get_ulong( &args ); - INT y = get_ulong( &args ); + HDC hdc = get_handle( &args ); + ULONG in = get_ulong( &args ); + void *pvin = get_ptr( &args );
- return NtGdiPtInRegion( hrgn, x, y ); + return NtGdiDrawStream( hdc, in, pvin ); }
-NTSTATUS WINAPI wow64_NtGdiRectInRegion( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiEqualRgn( UINT *args ) { - HRGN hrgn = get_handle( &args ); - const RECT *rect = get_ptr( &args ); + HRGN hrgn1 = get_handle( &args ); + HRGN hrgn2 = get_handle( &args );
- return NtGdiRectInRegion( hrgn, rect ); + return NtGdiEqualRgn( hrgn1, hrgn2 ); }
-NTSTATUS WINAPI wow64_NtGdiSetMetaRgn( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiExtCreatePen( UINT *args ) { - HDC hdc = get_handle( &args ); + DWORD style = get_ulong( &args ); + DWORD width = get_ulong( &args ); + ULONG brush_style = get_ulong( &args ); + ULONG color = get_ulong( &args ); + ULONG_PTR client_hatch = get_ulong( &args ); + ULONG_PTR hatch = get_ulong( &args ); + DWORD style_count = get_ulong( &args ); + const DWORD *style_bits = get_ptr( &args ); + ULONG dib_size = get_ulong( &args ); + BOOL old_style = get_ulong( &args ); + HBRUSH brush = get_handle( &args );
- return NtGdiSetMetaRgn( hdc ); + return HandleToUlong( NtGdiExtCreatePen( style, width, brush_style, color, client_hatch, + hatch, style_count, style_bits, dib_size, + old_style, brush )); }
-NTSTATUS WINAPI wow64_NtGdiSaveDC( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiExtCreateRegion( UINT *args ) { - HDC hdc = get_handle( &args ); + const XFORM *xform = get_ptr( &args ); + DWORD count = get_ulong( &args ); + const RGNDATA *data = get_ptr( &args );
- return NtGdiSaveDC( hdc ); + return HandleToUlong( NtGdiExtCreateRegion( xform, count, data )); }
-NTSTATUS WINAPI wow64_NtGdiSetBrushOrg( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiExtGetObjectW( UINT *args ) { - HDC hdc = get_handle( &args ); - INT x = get_ulong( &args ); - INT y = get_ulong( &args ); - POINT *prev_org = get_ptr( &args ); + HGDIOBJ handle = get_handle( &args ); + INT count = get_ulong( &args ); + void *buffer = get_ptr( &args );
- return NtGdiSetBrushOrg( hdc, x, y, prev_org ); + return NtGdiExtGetObjectW( handle, count, buffer ); }
-NTSTATUS WINAPI wow64_NtGdiGetTransform( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiFlattenPath( UINT *args ) { HDC hdc = get_handle( &args ); - DWORD which = get_ulong( &args ); - XFORM *xform = get_ptr( &args );
- return NtGdiGetTransform( hdc, which, xform ); + return NtGdiFlattenPath( hdc ); }
-NTSTATUS WINAPI wow64_NtGdiDescribePixelFormat( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiFlush( UINT *args ) { - HDC hdc = get_handle( &args ); - INT format = get_ulong( &args ); - UINT size = get_ulong( &args ); - PIXELFORMATDESCRIPTOR *descr = get_ptr( &args ); + return NtGdiFlush(); +}
- return NtGdiDescribePixelFormat( hdc, format, size, descr ); +NTSTATUS WINAPI wow64_NtGdiGetBitmapBits( UINT *args ) +{ + HBITMAP bitmap = get_handle( &args ); + LONG count = get_ulong( &args ); + void *bits = get_ptr( &args ); + + return NtGdiGetBitmapBits( bitmap, count, bits ); }
-NTSTATUS WINAPI wow64_NtGdiSetPixelFormat( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetBitmapDimension( UINT *args ) { - HDC hdc = get_handle( &args ); - INT format = get_ulong( &args ); + HBITMAP bitmap = get_handle( &args ); + SIZE *size = get_ptr( &args );
- return NtGdiSetPixelFormat( hdc, format ); + return NtGdiGetBitmapDimension( bitmap, size ); }
-NTSTATUS WINAPI wow64_NtGdiSwapBuffers( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetColorAdjustment( UINT *args ) { HDC hdc = get_handle( &args ); + COLORADJUSTMENT *ca = get_ptr( &args );
- return NtGdiSwapBuffers( hdc ); + return NtGdiGetColorAdjustment( hdc, ca ); }
-NTSTATUS WINAPI wow64_NtGdiDrawStream( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetDCDword( UINT *args ) { HDC hdc = get_handle( &args ); - ULONG in = get_ulong( &args ); - void *pvin = get_ptr( &args ); + UINT method = get_ulong( &args ); + DWORD *result = get_ptr( &args );
- return NtGdiDrawStream( hdc, in, pvin ); + return NtGdiGetDCDword( hdc, method, result ); }
-NTSTATUS WINAPI wow64_NtGdiSetTextJustification( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetDCObject( UINT *args ) { HDC hdc = get_handle( &args ); - INT extra = get_ulong( &args ); - INT breaks = get_ulong( &args ); + UINT type = get_ulong( &args );
- return NtGdiSetTextJustification( hdc, extra, breaks ); + return HandleToUlong( NtGdiGetDCObject( hdc, type )); }
-NTSTATUS WINAPI wow64_NtGdiHfontCreate( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetDCPoint( UINT *args ) { - const void *logfont = get_ptr( &args ); - ULONG unk2 = get_ulong( &args ); - ULONG unk3 = get_ulong( &args ); - ULONG unk4 = get_ulong( &args ); - void *data = get_ptr( &args ); + HDC hdc = get_handle( &args ); + UINT method = get_ulong( &args ); + POINT *result = get_ptr( &args );
- return HandleToUlong( NtGdiHfontCreate( logfont, unk2, unk3, unk4, data )); + return NtGdiGetDCPoint( hdc, method, result ); }
NTSTATUS WINAPI wow64_NtGdiGetFontFileData( UINT *args ) @@ -439,236 +427,248 @@ NTSTATUS WINAPI wow64_NtGdiGetFontFileInfo( UINT *args ) return ret; }
-NTSTATUS WINAPI wow64_NtGdiAddFontMemResourceEx( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetNearestPaletteIndex( UINT *args ) { - void *ptr = get_ptr( &args ); - DWORD size = get_ulong( &args ); - void *dv = get_ptr( &args ); - ULONG dv_size = get_ulong( &args ); - DWORD *count = get_ptr( &args ); + HPALETTE hpalette = get_handle( &args ); + COLORREF color = get_ulong( &args );
- return HandleToUlong( NtGdiAddFontMemResourceEx( ptr, size, dv, dv_size, count )); + return NtGdiGetNearestPaletteIndex( hpalette, color ); }
-NTSTATUS WINAPI wow64_NtGdiAddFontResourceW( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetPath( UINT *args ) { - const WCHAR *str = get_ptr( &args ); - ULONG size = get_ulong( &args ); - ULONG files = get_ulong( &args ); - DWORD flags = get_ulong( &args ); - DWORD tid = get_ulong( &args ); - void *dv = get_ptr( &args ); + HDC hdc = get_handle( &args ); + POINT *points = get_ptr( &args ); + BYTE *types = get_ptr( &args ); + INT size = get_ulong( &args );
- return NtGdiAddFontResourceW( str, size, files, flags, tid, dv ); + return NtGdiGetPath( hdc, points, types, size ); }
-NTSTATUS WINAPI wow64_NtGdiRemoveFontMemResourceEx( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetRegionData( UINT *args ) { - HANDLE handle = get_handle( &args ); + HRGN hrgn = get_ptr( &args ); + DWORD count = get_ulong( &args ); + RGNDATA *data = get_ptr( &args );
- return NtGdiRemoveFontMemResourceEx( handle ); + return NtGdiGetRegionData( hrgn, count, data ); }
-NTSTATUS WINAPI wow64_NtGdiRemoveFontResourceW( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetRgnBox( UINT *args ) { - const WCHAR *str = get_ptr( &args ); - ULONG size = get_ulong( &args ); - ULONG files = get_ulong( &args ); - DWORD flags = get_ulong( &args ); - DWORD tid = get_ulong( &args ); - void *dv = get_ptr( &args ); + HRGN hrgn = get_handle( &args ); + RECT *rect = get_ptr( &args );
- return NtGdiRemoveFontResourceW( str, size, files, flags, tid, dv ); + return NtGdiGetRgnBox( hrgn, rect ); }
-NTSTATUS WINAPI wow64_NtGdiGetColorAdjustment( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetSpoolMessage( UINT *args ) { - HDC hdc = get_handle( &args ); - COLORADJUSTMENT *ca = get_ptr( &args ); + void *ptr1 = get_ptr( &args ); + DWORD data2 = get_ulong( &args ); + void *ptr3 = get_ptr( &args ); + DWORD data4 = get_ulong( &args );
- return NtGdiGetColorAdjustment( hdc, ca ); + return NtGdiGetSpoolMessage( ptr1, data2, ptr3, data4 ); }
-NTSTATUS WINAPI wow64_NtGdiSetColorAdjustment( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetSystemPaletteUse( UINT *args ) { HDC hdc = get_handle( &args ); - const COLORADJUSTMENT *ca = get_ptr( &args );
- return NtGdiSetColorAdjustment( hdc, ca ); + return NtGdiGetSystemPaletteUse( hdc ); }
-NTSTATUS WINAPI wow64_NtGdiSetVirtualResolution( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiGetTransform( UINT *args ) { HDC hdc = get_handle( &args ); - DWORD horz_res = get_ulong( &args ); - DWORD vert_res = get_ulong( &args ); - DWORD horz_size = get_ulong( &args ); - DWORD vert_size = get_ulong( &args ); + DWORD which = get_ulong( &args ); + XFORM *xform = get_ptr( &args );
- return NtGdiSetVirtualResolution( hdc, horz_res, vert_res, horz_size, vert_size ); + return NtGdiGetTransform( hdc, which, xform ); }
-NTSTATUS WINAPI wow64_NtGdiTransformPoints( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiHfontCreate( UINT *args ) { - HDC hdc = get_handle( &args ); - const POINT *points_in = get_ptr( &args ); - POINT *points_out = get_ptr( &args ); - INT count = get_ulong( &args ); - UINT mode = get_ulong( &args ); + const void *logfont = get_ptr( &args ); + ULONG unk2 = get_ulong( &args ); + ULONG unk3 = get_ulong( &args ); + ULONG unk4 = get_ulong( &args ); + void *data = get_ptr( &args );
- return NtGdiTransformPoints( hdc, points_in, points_out, count, mode ); + return HandleToUlong( NtGdiHfontCreate( logfont, unk2, unk3, unk4, data )); }
-NTSTATUS WINAPI wow64_NtGdiCreatePaletteInternal( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiInitSpool( UINT *args ) { - const LOGPALETTE *palette = get_ptr( &args ); - UINT count = get_ulong( &args ); + return NtGdiInitSpool(); +}
- return HandleToUlong( NtGdiCreatePaletteInternal( palette, count )); +NTSTATUS WINAPI wow64_NtGdiOffsetRgn( UINT *args ) +{ + HRGN hrgn = get_handle( &args ); + INT x = get_ulong( &args ); + INT y = get_ulong( &args ); + + return NtGdiOffsetRgn( hrgn, x, y ); }
-NTSTATUS WINAPI wow64_NtGdiCreateHalftonePalette( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiPathToRegion( UINT *args ) { HDC hdc = get_handle( &args );
- return HandleToUlong( NtGdiCreateHalftonePalette( hdc )); + return HandleToUlong( NtGdiPathToRegion( hdc )); }
-NTSTATUS WINAPI wow64_NtGdiGetNearestPaletteIndex( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiPtInRegion( UINT *args ) { - HPALETTE hpalette = get_handle( &args ); - COLORREF color = get_ulong( &args ); + HRGN hrgn = get_handle( &args ); + INT x = get_ulong( &args ); + INT y = get_ulong( &args );
- return NtGdiGetNearestPaletteIndex( hpalette, color ); + return NtGdiPtInRegion( hrgn, x, y ); }
-NTSTATUS WINAPI wow64_NtGdiGetSystemPaletteUse( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiRectInRegion( UINT *args ) { - HDC hdc = get_handle( &args ); + HRGN hrgn = get_handle( &args ); + const RECT *rect = get_ptr( &args );
- return NtGdiGetSystemPaletteUse( hdc ); + return NtGdiRectInRegion( hrgn, rect ); }
-NTSTATUS WINAPI wow64_NtGdiSetMagicColors( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiRemoveFontMemResourceEx( UINT *args ) { - HDC hdc = get_handle( &args ); - DWORD magic = get_ulong( &args ); - ULONG index = get_ulong( &args ); + HANDLE handle = get_handle( &args );
- return NtGdiSetMagicColors( hdc, magic, index ); + return NtGdiRemoveFontMemResourceEx( handle ); }
-NTSTATUS WINAPI wow64_NtGdiGetPath( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiRemoveFontResourceW( UINT *args ) { - HDC hdc = get_handle( &args ); - POINT *points = get_ptr( &args ); - BYTE *types = get_ptr( &args ); - INT size = get_ulong( &args ); + const WCHAR *str = get_ptr( &args ); + ULONG size = get_ulong( &args ); + ULONG files = get_ulong( &args ); + DWORD flags = get_ulong( &args ); + DWORD tid = get_ulong( &args ); + void *dv = get_ptr( &args );
- return NtGdiGetPath( hdc, points, types, size ); + return NtGdiRemoveFontResourceW( str, size, files, flags, tid, dv ); }
-NTSTATUS WINAPI wow64_NtGdiPathToRegion( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiSaveDC( UINT *args ) { HDC hdc = get_handle( &args );
- return HandleToUlong( NtGdiPathToRegion( hdc )); + return NtGdiSaveDC( hdc ); }
-NTSTATUS WINAPI wow64_NtGdiFlattenPath( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiSetBitmapBits( UINT *args ) +{ + HBITMAP hbitmap = get_handle( &args ); + LONG count = get_ulong( &args ); + const void *bits = get_ptr( &args ); + + return NtGdiSetBitmapBits( hbitmap, count, bits ); +} + +NTSTATUS WINAPI wow64_NtGdiSetBitmapDimension( UINT *args ) +{ + HBITMAP hbitmap = get_handle( &args ); + INT x = get_ulong( &args ); + INT y = get_ulong( &args ); + SIZE *prev_size = get_ptr( &args ); + + return NtGdiSetBitmapDimension( hbitmap, x, y, prev_size ); +} + +NTSTATUS WINAPI wow64_NtGdiSetBrushOrg( UINT *args ) { HDC hdc = get_handle( &args ); + INT x = get_ulong( &args ); + INT y = get_ulong( &args ); + POINT *prev_org = get_ptr( &args );
- return NtGdiFlattenPath( hdc ); + return NtGdiSetBrushOrg( hdc, x, y, prev_org ); }
-NTSTATUS WINAPI wow64_NtGdiGetSpoolMessage( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiSetColorAdjustment( UINT *args ) { - void *ptr1 = get_ptr( &args ); - DWORD data2 = get_ulong( &args ); - void *ptr3 = get_ptr( &args ); - DWORD data4 = get_ulong( &args ); + HDC hdc = get_handle( &args ); + const COLORADJUSTMENT *ca = get_ptr( &args );
- return NtGdiGetSpoolMessage( ptr1, data2, ptr3, data4 ); + return NtGdiSetColorAdjustment( hdc, ca ); }
-NTSTATUS WINAPI wow64_NtGdiInitSpool( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiSetMagicColors( UINT *args ) { - return NtGdiInitSpool(); + HDC hdc = get_handle( &args ); + DWORD magic = get_ulong( &args ); + ULONG index = get_ulong( &args ); + + return NtGdiSetMagicColors( hdc, magic, index ); }
-NTSTATUS WINAPI wow64_NtGdiFlush( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiSetMetaRgn( UINT *args ) { - return NtGdiFlush(); + HDC hdc = get_handle( &args ); + + return NtGdiSetMetaRgn( hdc ); }
-NTSTATUS WINAPI wow64_NtGdiDdDDICreateDevice( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiSetPixelFormat( UINT *args ) { - struct - { - D3DKMT_HANDLE hAdapter; - D3DKMT_CREATEDEVICEFLAGS Flags; - D3DKMT_HANDLE hDevice; - ULONG pCommandBuffer; - UINT CommandBufferSize; - ULONG pAllocationList; - UINT AllocationListSize; - ULONG pPatchLocationList; - UINT PatchLocationListSize; - } *desc32 = get_ptr( &args ); + HDC hdc = get_handle( &args ); + INT format = get_ulong( &args );
- D3DKMT_CREATEDEVICE desc = - { - { desc32->hAdapter }, - desc32->Flags - }; - NTSTATUS status; + return NtGdiSetPixelFormat( hdc, format ); +}
- if (!(status = NtGdiDdDDICreateDevice( &desc ))) - { - desc32->hDevice = desc.hDevice; - desc32->pCommandBuffer = PtrToUlong( desc.pCommandBuffer ); - desc32->CommandBufferSize = desc.CommandBufferSize; - desc32->pAllocationList = PtrToUlong( desc.pAllocationList ); - desc32->AllocationListSize = desc.AllocationListSize; - desc32->pPatchLocationList = PtrToUlong( desc.pPatchLocationList ); - desc32->PatchLocationListSize = desc.PatchLocationListSize; - } - return status; +NTSTATUS WINAPI wow64_NtGdiSetRectRgn( UINT *args ) +{ + HRGN hrgn = get_handle( &args ); + INT left = get_ulong( &args ); + INT top = get_ulong( &args ); + INT right = get_ulong( &args ); + INT bottom = get_ulong( &args ); + + return NtGdiSetRectRgn( hrgn, left, top, right, bottom ); }
-NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromHdc( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiSetTextJustification( UINT *args ) { - struct - { - ULONG hDc; - D3DKMT_HANDLE hAdapter; - LUID AdapterLuid; - D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; - } *desc32 = get_ptr( &args ); + HDC hdc = get_handle( &args ); + INT extra = get_ulong( &args ); + INT breaks = get_ulong( &args );
- D3DKMT_OPENADAPTERFROMHDC desc = { UlongToHandle( desc32->hDc ) }; - NTSTATUS status; + return NtGdiSetTextJustification( hdc, extra, breaks ); +}
- if (!(status = NtGdiDdDDIOpenAdapterFromHdc( &desc ))) - { - desc32->hAdapter = desc.hAdapter; - desc32->AdapterLuid = desc.AdapterLuid; - desc32->VidPnSourceId = desc.VidPnSourceId; - } - return status; +NTSTATUS WINAPI wow64_NtGdiSetVirtualResolution( UINT *args ) +{ + HDC hdc = get_handle( &args ); + DWORD horz_res = get_ulong( &args ); + DWORD vert_res = get_ulong( &args ); + DWORD horz_size = get_ulong( &args ); + DWORD vert_size = get_ulong( &args ); + + return NtGdiSetVirtualResolution( hdc, horz_res, vert_res, horz_size, vert_size ); }
-NTSTATUS WINAPI wow64_NtGdiDdDDIQueryStatistics( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiSwapBuffers( UINT *args ) { - D3DKMT_QUERYSTATISTICS *stats = get_ptr( &args ); + HDC hdc = get_handle( &args );
- return NtGdiDdDDIQueryStatistics( stats ); + return NtGdiSwapBuffers( hdc ); }
-NTSTATUS WINAPI wow64_NtGdiDdDDISetQueuedLimit( UINT *args ) +NTSTATUS WINAPI wow64_NtGdiTransformPoints( UINT *args ) { - D3DKMT_SETQUEUEDLIMIT *desc = get_ptr( &args ); + HDC hdc = get_handle( &args ); + const POINT *points_in = get_ptr( &args ); + POINT *points_out = get_ptr( &args ); + INT count = get_ulong( &args ); + UINT mode = get_ulong( &args );
- return NtGdiDdDDISetQueuedLimit( desc ); + return NtGdiTransformPoints( hdc, points_in, points_out, count, mode ); }
On Tue Jul 26 10:01:22 2022 +0000, Huw Davies wrote:
commit 3a7827a1b5b84 is producing test failures here (native 32-bit macOS):
tools/runtest -q -P wine -T . -M comctl32.dll -p dlls/comctl32/tests/comctl32_test.exe listview && touch dlls/comctl32/tests/listview.ok 0128:fixme:imm:ImeSetActiveContext (003F00B6, 1): stub 0128:fixme:imm:ImmReleaseContext (000400C2, 003F00B6): stub listview.c:484: Test failed: SetKeyboardState failed. listview.c:2474: Test failed: Failed multiple selection using VK_DOWN. There should be 5 selected items (is 1) listview.c:496: Test failed: SetKeyboardState failed. listview.c:484: Test failed: SetKeyboardState failed. ...
I messed sorting in syscall table, the new version should fix it.
This merge request was approved by Huw Davies.