Patch by Stefan Ginsberg (stefan__100__ AT hotmail DOT com):

- remove NtUserEnumClipboardFormats, use ->ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMAT insetad
- remove NtUserRegisterClipboardFormat, use NtUserRegisterWIndowsMessage instead
- remove NtUserKillSystemTimer, use HWNDPARAM_ROUTINE_KILLSYSTEMTIMER instead
- remove NtUserInsertMenuItem, use NtUserThunkedMenuItemInfo instead
- remove NtUserGetCapture, use THREADSTATE_CAPTUREWINDOW instead
- remove NtUserGetActiveWindow, use THREADSTATE_ACTIVEWINDOW instead
- remove NtUserGetQueueStatus, use ONEPARAM_ROUTIME_GETQUEUESTATUS instead
- remove NtUserGetLastActivePopup, wasn't implemented
- remove NtUserRealizePalette from ntuser.h, it's not implemented
- remove duplicate NtUserGetLastInputInfo from ntuser.h
- remove PrivateCsrssRergisterPrimitive from user32, it was unused and unimplemented
- remove NtUserDereferenceWndprocHandle, it was unused
- move WNDPROC_INFO structure from ntuser.h to win32k/include/class.h, as it's not used in usermode anymore
tested with AbiWord and FF on VMWare

svn path=/trunk/; revision=32825
This commit is contained in:
Timo Kreuzer 2008-04-03 02:13:34 +00:00
parent 3df1bfcf2e
commit 1e51a48800
24 changed files with 83 additions and 258 deletions

View file

@ -43,7 +43,7 @@ KillSystemTimer(
HWND hWnd,
UINT_PTR IDEvent)
{
return NtUserKillSystemTimer(hWnd, IDEvent);
return NtUserCallHwndParam(hWnd, IDEvent, HWNDPARAM_ROUTINE_KILLSYSTEMTIMER);
}
@ -89,3 +89,6 @@ SetTimer(
return NtUserSetTimer(hWnd, IDEvent, Period, TimerFunc);
}

View file

@ -521,7 +521,6 @@ PostQuitMessage@4
PostThreadMessageA@16
PostThreadMessageW@16
PrintWindow@12
PrivateCsrssRegisterPrimitive@0
PrivateCsrssManualGuiCheck@4
PrivateCsrssInitialized@0
PrivateExtractIconExA@20

View file

@ -69,7 +69,7 @@ EmptyClipboard(VOID)
UINT STDCALL
EnumClipboardFormats(UINT format)
{
UINT ret = NtUserEnumClipboardFormats(format);
UINT ret = NtUserCallOneParam(format, ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS);
return ret;
}
@ -248,7 +248,7 @@ RegisterClipboardFormatA(LPCSTR lpszFormat)
ret = RtlCreateUnicodeStringFromAsciiz(&usFormat, lpszFormat);
if (ret)
{
ret = NtUserRegisterClipboardFormat(&usFormat); //(LPCWSTR)
ret = NtUserRegisterWindowMessage(&usFormat); //(LPCWSTR)
RtlFreeUnicodeString(&usFormat);
}
@ -278,7 +278,7 @@ RegisterClipboardFormatW(LPCWSTR lpszFormat)
}
RtlInitUnicodeString(&usFormat, lpszFormat);
ret = NtUserRegisterClipboardFormat(&usFormat);
ret = NtUserRegisterWindowMessage(&usFormat);
return ret;
}

View file

@ -574,15 +574,6 @@ SendInput(
return NtUserSendInput(nInputs, pInputs, cbSize);
}
/*
* Private call for CSRSS
*/
VOID
STDCALL
PrivateCsrssRegisterPrimitive(VOID)
{
NtUserCallNoParam(NOPARAM_ROUTINE_REGISTER_PRIMITIVE);
}
/*
* @implemented

View file

@ -4458,7 +4458,7 @@ InsertMenuItemA(
mi.cch = MenuText.Length / sizeof(WCHAR);
CleanHeap = TRUE;
}
res = NtUserInsertMenuItem(hMenu, uItem, fByPosition, &mi);
res = NtUserThunkedMenuItemInfo(hMenu, uItem, fByPosition, TRUE, &mi, NULL);
if ( CleanHeap ) RtlFreeUnicodeString ( &MenuText );
}
@ -4504,7 +4504,7 @@ InsertMenuItemW(
mi.dwTypeData = MenuText.Buffer;
mi.cch = MenuText.Length / sizeof(WCHAR);
}
res = NtUserInsertMenuItem(hMenu, uItem, fByPosition, &mi);
res = NtUserThunkedMenuItemInfo(hMenu, uItem, fByPosition, TRUE, &mi, NULL);
}
return res;
}
@ -5173,3 +5173,6 @@ ChangeMenuA(
}

View file

@ -2140,7 +2140,7 @@ SetCapture(HWND hWnd)
HWND STDCALL
GetCapture(VOID)
{
return(NtUserGetCapture());
return (HWND)NtUserGetThreadState(THREADSTATE_CAPTUREWINDOW);
}
/*
@ -2171,7 +2171,7 @@ RealGetQueueStatus(UINT flags)
USER_Driver.pMsgWaitForMultipleObjectsEx( 0, NULL, 0, 0, 0 );
#endif
ret = NtUserGetQueueStatus(TRUE /*ClearChanges*/);
ret = NtUserCallOneParam(TRUE, ONEPARAM_ROUTINE_GETQUEUESTATUS);
changed_bits = LOWORD(ret);
wake_bits = HIWORD(ret);
@ -2195,7 +2195,7 @@ BOOL STDCALL GetInputState(VOID)
USER_Driver.pMsgWaitForMultipleObjectsEx( 0, NULL, 0, 0, 0 );
#endif
ret = NtUserGetQueueStatus(FALSE /*ClearChanges*/);
ret = NtUserCallOneParam(FALSE, ONEPARAM_ROUTINE_GETQUEUESTATUS);
wake_bits = HIWORD(ret);

View file

@ -919,7 +919,8 @@ GetGUIThreadInfo(DWORD idThread,
HWND STDCALL
GetLastActivePopup(HWND hWnd)
{
return NtUserGetLastActivePopup(hWnd);
UNIMPLEMENTED;
return 0;
}
@ -1987,3 +1988,6 @@ DisableProcessWindowsGhosting(VOID)
/* EOF */

View file

@ -99,7 +99,7 @@ WinPosGetMinMaxInfo(HWND hWnd, POINT* MaxSize, POINT* MaxPos,
HWND STDCALL
GetActiveWindow(VOID)
{
return(NtUserGetActiveWindow());
return (HWND)NtUserGetThreadState(THREADSTATE_ACTIVEWINDOW);
}
/*

View file

@ -1424,11 +1424,18 @@ NtUserGetThreadDesktop(
DWORD dwThreadId,
DWORD Unknown1);
#define THREADSTATE_GETTHREADINFO (0)
#define THREADSTATE_FOCUSWINDOW (1)
#define THREADSTATE_INSENDMESSAGE (2)
#define THREADSTATE_PROGMANWINDOW (3)
#define THREADSTATE_TASKMANWINDOW (4)
enum ThreadStateRoutines
{
THREADSTATE_GETTHREADINFO,
THREADSTATE_INSENDMESSAGE,
THREADSTATE_FOCUSWINDOW,
THREADSTATE_ACTIVEWINDOW,
THREADSTATE_CAPTUREWINDOW,
THREADSTATE_PROGMANWINDOW,
THREADSTATE_TASKMANWINDOW
};
DWORD
NTAPI
NtUserGetThreadState(
@ -1773,10 +1780,6 @@ NtUserRealInternalGetMessage(
DWORD dwUnknown5,
DWORD dwUnknown6);
UINT
NTAPI
NtUserRealizePalette(HDC hDC);
DWORD
NTAPI
NtUserRealChildWindowFromPoint(
@ -1831,11 +1834,6 @@ NtUserRegisterHotKey(HWND hWnd,
UINT fsModifiers,
UINT vk);
BOOL
NTAPI
NtUserGetLastInputInfo(
PLASTINPUTINFO plii);
DWORD
NTAPI
NtUserRegisterTasklist(
@ -2475,7 +2473,6 @@ typedef struct tagKMDDELPARAM
* ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
*/
#define NOPARAM_ROUTINE_REGISTER_PRIMITIVE 0xffff0001
#define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
#define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006
#define NOPARAM_ROUTINE_CSRSS_INITIALIZED 0xffff0007
@ -2533,30 +2530,6 @@ NtUserCreateCursorIconHandle(
BOOL Indirect);
typedef struct _WNDPROC_INFO
{
WNDPROC WindowProc;
BOOL IsUnicode;
} WNDPROC_INFO, *PWNDPROC_INFO;
BOOL
NTAPI
NtUserDereferenceWndProcHandle(IN HANDLE wpHandle, OUT PWNDPROC_INFO wpInfo);
/* Use ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS */
UINT
NTAPI
NtUserEnumClipboardFormats(
UINT format);
HWND
NTAPI
NtUserGetActiveWindow(VOID);
HWND
NTAPI
NtUserGetCapture(VOID);
/* Should be done in usermode */
ULONG_PTR
NTAPI
@ -2579,10 +2552,6 @@ NtUserGetMenuDefaultItem(
UINT fByPos,
UINT gmdiFlags);
HWND
NTAPI
NtUserGetLastActivePopup(HWND hWnd);
BOOL
NTAPI
NtUserGetLastInputInfo(
@ -2606,10 +2575,6 @@ HANDLE
NTAPI
NtUserGetProp(HWND hWnd, ATOM Atom);
DWORD
NTAPI
NtUserGetQueueStatus(BOOL ClearChanges);
BOOL
NTAPI
NtUserGetScrollInfo(
@ -2643,17 +2608,7 @@ DWORD
NTAPI
NtUserGetWindowThreadProcessId(HWND hWnd, LPDWORD UnsafePid);
DWORD
NTAPI
NtUserInsertMenuItem(
HMENU hMenu,
UINT uItem,
BOOL fByPosition,
LPCMENUITEMINFOW lpmii);
BOOL
NTAPI
NtUserKillSystemTimer(HWND hWnd, UINT_PTR uIDEvent);
VOID
NTAPI
@ -2762,11 +2717,6 @@ NtUserRegisterClassEx(
HMENU hMenu);
UINT
NTAPI
NtUserRegisterClipboardFormat(
PUNICODE_STRING format);
typedef struct tagNTUSERSENDMESSAGEINFO
{

View file

@ -4,6 +4,12 @@
#define IS_ATOM(x) \
(((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
typedef struct _WNDPROC_INFO
{
WNDPROC WindowProc;
BOOL IsUnicode;
} WNDPROC_INFO, *PWNDPROC_INFO;
static BOOL __inline
IsCallProcHandle(IN WNDPROC lpWndProc)
{

View file

@ -43,6 +43,8 @@ typedef struct _CLIPBOARDSYSTEM
VOID FASTCALL
IntClipboardFreeWindow(PWINDOW_OBJECT window);
UINT STDCALL IntEnumClipboardFormats(UINT format);
/*
UINT FASTCALL
IntEnumClipboardFormats(UINT format);

View file

@ -14,6 +14,8 @@ IntGetFocusWindow();
*/
HWND FASTCALL
IntGetThreadFocusWindow();
HWND STDCALL IntGetCapture();
HWND FASTCALL UserGetActiveWindow();
BOOL FASTCALL
co_IntMouseActivateWindow(PWINDOW_OBJECT Window);

View file

@ -98,6 +98,8 @@ IntCheckMenuItem(PMENU_OBJECT MenuObject, UINT uIDCheckItem, UINT uCheck);
BOOL FASTCALL
IntSetMenuItemRect(PMENU_OBJECT MenuObject, UINT Item, BOOL fByPos, RECT *rcRect);
DWORD STDCALL UserInsertMenuItem(HMENU hMenu, UINT uItem, BOOL fByPosition, LPCMENUITEMINFOW lpmii);
BOOL FASTCALL
IntCleanupMenus(struct _EPROCESS *Process, PW32PROCESS Win32Process);

View file

@ -7,5 +7,6 @@
#define W32PF_CREATEDWINORDC (0x0004)
ULONG FASTCALL IntSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni);
DWORD STDCALL IntGetQueueStatus(BOOL ClearChanges);
#endif /* __WIN32K_MISC_H */

View file

@ -130,31 +130,3 @@ UserGetCallProcInfo(IN HANDLE hCallProc,
return TRUE;
}
BOOL NTAPI
NtUserDereferenceWndProcHandle(IN HANDLE wpHandle,
OUT PWNDPROC_INFO wpInfo)
{
BOOL Ret = FALSE;
UserEnterShared();
_SEH_TRY
{
ProbeForWrite(wpInfo,
sizeof(WNDPROC_INFO),
sizeof(ULONG));
Ret = UserGetCallProcInfo(wpHandle,
wpInfo);
}
_SEH_HANDLE
{
SetLastWin32Error(_SEH_GetExceptionCode());
}
_SEH_END;
UserLeave();
return Ret;
}

View file

@ -746,48 +746,6 @@ NtUserGetClipboardFormatName(UINT format, PUNICODE_STRING FormatName,
return ret;
}
UINT STDCALL
NtUserRegisterClipboardFormat(PUNICODE_STRING FormatName)
{
UINT ret = 0;
UNICODE_STRING cFormatName = {0};
if (FormatName == NULL)
{
SetLastWin32Error(ERROR_INVALID_PARAMETER);
return ret;
}
UserEnterExclusive();
_SEH_TRY
{
cFormatName = ProbeForReadUnicodeString(FormatName);
if (cFormatName.Length > 0)
{
ret = (UINT)IntAddAtom(cFormatName.Buffer);
//RtlFreeUnicodeString(&cFormatName);
}
else
{
SetLastWin32Error(ERROR_INVALID_NAME);
_SEH_LEAVE;
}
}
_SEH_HANDLE
{
SetLastNtError(_SEH_GetExceptionCode());
}
_SEH_END;
UserLeave();
return ret;
}
HWND STDCALL
NtUserGetClipboardOwner(VOID)
{
@ -1107,12 +1065,10 @@ NtUserSetClipboardViewer(HWND hWndNewViewer)
}
UINT STDCALL
NtUserEnumClipboardFormats(UINT uFormat)
IntEnumClipboardFormats(UINT uFormat)
{
UINT ret = 0;
UserEnterShared();
if (intIsClipboardOpenByMe())
{
if (uFormat == 0)
@ -1162,8 +1118,6 @@ NtUserEnumClipboardFormats(UINT uFormat)
SetLastWin32Error(ERROR_CLIPBOARD_NOT_OPEN);
}
UserLeave();
return ret;
}

View file

@ -386,25 +386,6 @@ HWND FASTCALL UserGetActiveWindow()
}
/*
* @implemented
*/
HWND STDCALL
NtUserGetActiveWindow(VOID)
{
DECLARE_RETURN(HWND);
DPRINT("Enter NtUserGetActiveWindow\n");
UserEnterShared();
RETURN( UserGetActiveWindow());
CLEANUP:
DPRINT("Leave NtUserGetActiveWindow, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
HWND STDCALL
NtUserSetActiveWindow(HWND hWnd)
{
@ -454,20 +435,18 @@ CLEANUP:
* @implemented
*/
HWND STDCALL
NtUserGetCapture(VOID)
IntGetCapture(VOID)
{
PUSER_MESSAGE_QUEUE ThreadQueue;
DECLARE_RETURN(HWND);
DPRINT("Enter NtUserGetCapture\n");
UserEnterShared();
DPRINT("Enter IntGetCapture\n");
ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
RETURN( ThreadQueue ? ThreadQueue->CaptureWindow : 0);
CLEANUP:
DPRINT("Leave NtUserGetCapture, ret=%i\n",_ret_);
UserLeave();
DPRINT("Leave IntGetCapture, ret=%i\n",_ret_);
END_CLEANUP;
}

View file

@ -1613,7 +1613,7 @@ CLEANUP:
* @implemented
*/
DWORD STDCALL
NtUserInsertMenuItem(
UserInsertMenuItem(
HMENU hMenu,
UINT uItem,
BOOL fByPosition,
@ -1624,7 +1624,7 @@ NtUserInsertMenuItem(
ROSMENUITEMINFO ItemInfo;
DECLARE_RETURN(DWORD);
DPRINT("Enter NtUserInsertMenuItem\n");
DPRINT("Enter UserInsertMenuItem\n");
UserEnterExclusive();
if(!(Menu = UserGetMenuObject(hMenu)))
@ -1662,7 +1662,7 @@ NtUserInsertMenuItem(
RETURN( FALSE);
CLEANUP:
DPRINT("Leave NtUserInsertMenuItem, ret=%i\n",_ret_);
DPRINT("Leave UserInsertMenuItem, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
@ -2444,10 +2444,13 @@ NtUserThunkedMenuItemInfo(
LPMENUITEMINFOW lpmii,
PUNICODE_STRING lpszCaption)
{
UNIMPLEMENTED
/* lpszCaption may be NULL, check for it and call RtlInitUnicodeString()
if bInsert == TRUE call NtUserInsertMenuItem() else NtUserSetMenuItemInfo()
*/
if bInsert == TRUE call NtUserInsertMenuItem() else NtUserSetMenuItemInfo() */
if (bInsert) return UserInsertMenuItem(hMenu, uItem, fByPosition, lpmii);
UNIMPLEMENTED
return 0;
}

View file

@ -1797,14 +1797,13 @@ CLEANUP:
}
DWORD STDCALL
NtUserGetQueueStatus(BOOL ClearChanges)
IntGetQueueStatus(BOOL ClearChanges)
{
PUSER_MESSAGE_QUEUE Queue;
DWORD Result;
DECLARE_RETURN(DWORD);
DPRINT("Enter NtUserGetQueueStatus\n");
UserEnterExclusive();
DPRINT("Enter IntGetQueueStatus\n");
Queue = PsGetCurrentThreadWin32Thread()->MessageQueue;
@ -1814,11 +1813,10 @@ NtUserGetQueueStatus(BOOL ClearChanges)
Queue->ChangedBits = 0;
}
RETURN( Result);
RETURN(Result);
CLEANUP:
DPRINT("Leave NtUserGetQueueStatus, ret=%i\n",_ret_);
UserLeave();
DPRINT("Leave IntGetQueueStatus, ret=%i\n",_ret_);
END_CLEANUP;
}

View file

@ -41,10 +41,15 @@ NtUserGetThreadState(
case THREADSTATE_FOCUSWINDOW:
RETURN( (DWORD)IntGetThreadFocusWindow());
case THREADSTATE_CAPTUREWINDOW:
/* FIXME should use UserEnterShared */
RETURN( (DWORD)IntGetCapture());
case THREADSTATE_PROGMANWINDOW:
RETURN( (DWORD)GetW32ThreadInfo()->Desktop->hProgmanWindow);
case THREADSTATE_TASKMANWINDOW:
RETURN( (DWORD)GetW32ThreadInfo()->Desktop->hTaskManWindow);
case THREADSTATE_ACTIVEWINDOW:
RETURN ( (DWORD)UserGetActiveWindow());
}
RETURN( 0);

View file

@ -245,10 +245,7 @@ NtUserCallOneParam(
case ONEPARAM_ROUTINE_SETCARETBLINKTIME:
RETURN( (DWORD)IntSetCaretBlinkTime((UINT)Param));
/*
case ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS:
RETURN( (DWORD)NtUserEnumClipboardFormats((UINT)Param));
*/
case ONEPARAM_ROUTINE_GETWINDOWINSTANCE:
{
PWINDOW_OBJECT Window;
@ -391,6 +388,13 @@ NtUserCallOneParam(
case ONEPARAM_ROUTINE_REALIZEPALETTE:
RETURN (UserRealizePalette((HDC) Param));
case ONEPARAM_ROUTINE_GETQUEUESTATUS:
RETURN (IntGetQueueStatus((BOOL) Param));
case ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS:
/* FIXME: Should use UserEnterShared */
RETURN(IntEnumClipboardFormats(Param));
}
DPRINT1("Calling invalid routine number 0x%x in NtUserCallOneParam(), Param=0x%x\n",
Routine, Param);
@ -870,6 +874,13 @@ NtUserCallHwndParam(
DWORD Param,
DWORD Routine)
{
switch (Routine)
{
case HWNDPARAM_ROUTINE_KILLSYSTEMTIMER:
return IntKillTimer(hWnd, (UINT_PTR)Param, TRUE);
}
UNIMPLEMENTED;
return 0;

View file

@ -268,24 +268,4 @@ CLEANUP:
}
BOOL
STDCALL
NtUserKillSystemTimer(
HWND hWnd,
UINT_PTR uIDEvent
)
{
DECLARE_RETURN(BOOL);
DPRINT("Enter NtUserKillSystemTimer\n");
UserEnterExclusive();
RETURN(IntKillTimer(hWnd, uIDEvent, TRUE));
CLEANUP:
DPRINT("Leave NtUserKillSystemTimer, ret=%i\n", _ret_);
UserLeave();
END_CLEANUP;
}
/* EOF */

View file

@ -2979,37 +2979,6 @@ NtUserGetInternalWindowPos(DWORD Unknown0,
return 0;
}
/*
* @unimplemented
*/
HWND STDCALL
NtUserGetLastActivePopup(HWND hWnd)
{
/*
* This code can't work, because hWndLastPopup member of WINDOW_OBJECT is
* not changed anywhere.
* -- Filip, 01/nov/2003
*/
#if 0
PWINDOW_OBJECT Wnd;
HWND hWndLastPopup;
if (!(Wnd = UserGetWindowObject(hWnd)))
{
return NULL;
}
hWndLastPopup = Wnd->hWndLastPopup;
return hWndLastPopup;
#else
return NULL;
#endif
}
DWORD
STDCALL
NtUserGetListBoxInfo(

View file

@ -681,20 +681,14 @@ NtGdiSetWindowExtEx 4
NtGdiSetWindowOrgEx 4
NtUserBuildMenuItemList 4
NtUserCreateCursorIconHandle 2
NtUserDereferenceWndProcHandle 2
NtUserEnumClipboardFormats 1
NtUserGetActiveWindow 0
NtUserGetCapture 0
NtUserGetClassLong 3
NtUserGetClientOrigin 2
NtUserGetClientRect 2
NtUserGetMenuDefaultItem 3
NtUserGetLastActivePopup 1
NtUserGetLastInputInfo 1
NtUserGetMinMaxInfo 3
NtUserGetMonitorInfo 2
NtUserGetProp 2
NtUserGetQueueStatus 1
NtUserGetScrollInfo 3
NtUserGetShellWindow 0
NtUserGetSystemMetrics 1
@ -702,8 +696,6 @@ NtUserGetWindow 2
NtUserGetWindowLong 3
NtUserGetWindowRect 2
NtUserGetWindowThreadProcessId 2
NtUserInsertMenuItem 4
NtUserKillSystemTimer 2
NtUserManualGuiCheck 1
NtUserMenuInfo 3
NtUserMenuItemInfo 5
@ -711,7 +703,6 @@ NtUserMonitorFromPoint 3
NtUserMonitorFromRect 2
NtUserMonitorFromWindow 2
NtUserRegisterClassEx 6
NtUserRegisterClipboardFormat 1
NtUserSendMessage 5
NtUserSendMessageTimeout 8
NtUserSendNotifyMessage 4