ReactOS 0.4.15-dev-7958-gcd0bb1a
simplecall.c File Reference
#include <win32k.h>
Include dependency graph for simplecall.c:

Go to the source code of this file.

Functions

 DBG_DEFAULT_CHANNEL (UserMisc)
 
BOOL FASTCALL co_IntRegisterLogonProcess (HANDLE ProcessId, BOOL Register)
 
DWORD_PTR APIENTRY NtUserCallNoParam (DWORD Routine)
 
DWORD_PTR APIENTRY NtUserCallOneParam (DWORD_PTR Param, DWORD Routine)
 
DWORD_PTR APIENTRY NtUserCallTwoParam (DWORD_PTR Param1, DWORD_PTR Param2, DWORD Routine)
 
BOOL APIENTRY NtUserCallHwndLock (HWND hWnd, DWORD Routine)
 
HWND APIENTRY NtUserCallHwndOpt (HWND hWnd, DWORD Routine)
 
DWORD APIENTRY NtUserCallHwnd (HWND hWnd, DWORD Routine)
 
DWORD APIENTRY NtUserCallHwndParam (HWND hWnd, DWORD_PTR Param, DWORD Routine)
 
DWORD APIENTRY NtUserCallHwndParamLock (HWND hWnd, DWORD_PTR Param, DWORD Routine)
 

Variables

HANDLE gpidLogon = 0
 

Function Documentation

◆ co_IntRegisterLogonProcess()

BOOL FASTCALL co_IntRegisterLogonProcess ( HANDLE  ProcessId,
BOOL  Register 
)

Definition at line 18 of file simplecall.c.

19{
22
24 if (!NT_SUCCESS(Status))
25 {
27 return FALSE;
28 }
29
30 ProcessId = Process->UniqueProcessId;
31
33
34 if (Register)
35 {
36 /* Register the logon process */
37 if (gpidLogon != 0)
38 return FALSE;
39
41 }
42 else
43 {
44 /* Deregister the logon process */
45 if (gpidLogon != ProcessId)
46 return FALSE;
47
48 gpidLogon = 0;
49 }
50
51 return TRUE;
52}
LONG NTSTATUS
Definition: precomp.h:26
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
Definition: fatprocs.h:2711
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:223
Status
Definition: gdiplustypes.h:25
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
NTSTATUS NTAPI PsLookupProcessByProcessId(IN HANDLE ProcessId, OUT PEPROCESS *Process)
Definition: process.c:919
HANDLE gpidLogon
Definition: simplecall.c:15
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
Definition: error.c:22
#define ObDereferenceObject
Definition: obfuncs.h:203

Referenced by NtUserCallTwoParam().

◆ DBG_DEFAULT_CHANNEL()

DBG_DEFAULT_CHANNEL ( UserMisc  )

◆ NtUserCallHwnd()

DWORD APIENTRY NtUserCallHwnd ( HWND  hWnd,
DWORD  Routine 
)

Definition at line 711 of file simplecall.c.

714{
715 switch (Routine)
716 {
718 {
719 PWND Window;
720 DWORD HelpId;
721
723
725 {
726 UserLeave();
727 return 0;
728 }
729
731
732 UserLeave();
733 return HelpId;
734 }
735
737 if (IntIsWindow(hWnd))
739 return FALSE;
740 break;
741
743 if (IntIsWindow(hWnd))
745 return FALSE;
746
748 {
749 PWND Window;
752 {
753 Window->state |= WNDS_MSGBOX;
754 }
755 UserLeave();
756 return FALSE;
757 }
758 }
759
760 STUB;
761
762 return 0;
763}
HWND hWnd
Definition: settings.c:17
PSERVERINFO gpsi
Definition: imm.c:18
unsigned long DWORD
Definition: ntddk_ex.h:95
@ HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
Definition: ntuser.h:1615
@ HWND_ROUTINE_SETMSGBOX
Definition: ntuser.h:1616
@ HWND_ROUTINE_GETWNDCONTEXTHLPID
Definition: ntuser.h:1614
@ HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
Definition: ntuser.h:1612
#define WNDS_MSGBOX
Definition: ntuser.h:610
#define STUB
Definition: kernel32.h:27
#define DWORD
Definition: nt_native.h:44
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:251
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:235
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:242
Definition: window.c:28
Definition: ntuser.h:694
ATOM atomContextHelpIdProp
Definition: ntuser.h:1067
uint32_t DWORD_PTR
Definition: typedefs.h:65
PWND FASTCALL UserGetWindowObject(HWND hWnd)
Definition: window.c:122
BOOL IntDeRegisterShellHookWindow(HWND hWnd)
Definition: desktop.c:1784
BOOL IntRegisterShellHookWindow(HWND hWnd)
Definition: desktop.c:1752
HANDLE FASTCALL UserGetProp(_In_ PWND Window, _In_ ATOM Atom, _In_ BOOLEAN SystemProp)
Definition: prop.c:46
BOOL FASTCALL IntIsWindow(HWND hWnd)
Definition: window.c:176

Referenced by NtUserxDeregisterShellHookWindow(), NtUserxGetWindowContextHelpId(), NtUserxRegisterShellHookWindow(), NtUserxSetMessageBox(), START_TEST(), Test_HwndParamRoutine_SetWindowContextHelpId(), Test_HwndRoutine_DeregisterShellHookWindow(), Test_HwndRoutine_GetWindowContextHelpId(), and Test_HwndRoutine_SetMsgBox().

◆ NtUserCallHwndLock()

BOOL APIENTRY NtUserCallHwndLock ( HWND  hWnd,
DWORD  Routine 
)

Definition at line 585 of file simplecall.c.

588{
589 BOOL Ret = FALSE;
590 PWND Window;
592
593 TRACE("Enter NtUserCallHwndLock\n");
595
597 {
598 Ret = FALSE;
599 goto Exit;
600 }
601
602 UserRefObjectCo(Window, &Ref);
603
604 /* FIXME: Routine can be 0x53 - 0x5E */
605 switch (Routine)
606 {
609 break;
610
612 {
613 TRACE("HWNDLOCK_ROUTINE_DRAWMENUBAR\n");
614 Ret = TRUE;
615 if ((Window->style & (WS_CHILD | WS_POPUP)) != WS_CHILD)
618 0, 0, 0, 0,
619 SWP_NOSIZE |
620 SWP_NOMOVE |
624 break;
625 }
626
630 0, 0, 0, 0,
631 SWP_NOSIZE |
632 SWP_NOMOVE |
636 Ret = TRUE;
637 break;
638
642 0, 0, 0, 0,
643 SWP_NOSIZE |
644 SWP_NOMOVE |
648 if (!Window->spwndOwner && !IntGetParent(Window))
649 {
650 co_IntShellHookNotify(HSHELL_REDRAW, (WPARAM)hWnd, FALSE); // FIXME Flashing?
651 }
652 Ret = TRUE;
653 break;
654
656 TRACE("co_IntSetForegroundWindow 1 0x%p\n", hWnd);
658 TRACE("co_IntSetForegroundWindow 2 0x%p\n", hWnd);
659 break;
660
662 TRACE("co_IntSetForegroundWindow M 1 0x%p\n", hWnd);
664 TRACE("co_IntSetForegroundWindow M 2 0x%p\n", hWnd);
665 break;
666
669 Ret = TRUE;
670 break;
671
674 break;
675 }
676
678
679Exit:
680 TRACE("Leave NtUserCallHwndLock, ret=%u\n", Ret);
681 UserLeave();
682
683 return Ret;
684}
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL FASTCALL co_IntSetForegroundWindow(PWND Window)
Definition: focus.c:1552
BOOL FASTCALL co_IntSetForegroundWindowMouse(PWND Window)
Definition: focus.c:1563
@ HWNDLOCK_ROUTINE_UPDATEWINDOW
Definition: ntuser.h:1637
@ HWNDLOCK_ROUTINE_DRAWMENUBAR
Definition: ntuser.h:1628
@ HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
Definition: ntuser.h:1634
@ HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
Definition: ntuser.h:1627
@ HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
Definition: ntuser.h:1632
@ HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
Definition: ntuser.h:1629
@ HWNDLOCK_ROUTINE_REDRAWFRAME
Definition: ntuser.h:1631
#define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE
Definition: ntuser.h:3579
UINT FASTCALL co_WinPosArrangeIconicWindows(PWND parent)
Definition: winpos.c:731
BOOLEAN FASTCALL co_WinPosSetWindowPos(PWND Window, HWND WndInsertAfter, INT x, INT y, INT cx, INT cy, UINT flags)
Definition: winpos.c:1786
static __inline VOID UserDerefObjectCo(PVOID obj)
Definition: object.h:40
static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
Definition: object.h:27
#define WS_CHILD
Definition: pedump.c:617
#define WS_POPUP
Definition: pedump.c:616
static void Exit(void)
Definition: sock.c:1330
#define TRACE(s)
Definition: solgame.cpp:4
Definition: object.h:4
VOID FASTCALL co_IntUpdateWindows(PWND Wnd, ULONG Flags, BOOL Recurse)
Definition: painting.c:519
VOID co_IntShellHookNotify(WPARAM Message, WPARAM wParam, LPARAM lParam)
Definition: desktop.c:1692
VOID FASTCALL IntCheckImeShowStatusInThread(PWND pImeWnd)
Definition: ime.c:2397
PWND FASTCALL IntGetParent(PWND Wnd)
Definition: window.c:204
UINT_PTR WPARAM
Definition: windef.h:207
#define SWP_NOACTIVATE
Definition: winuser.h:1242
#define SWP_FRAMECHANGED
Definition: winuser.h:1240
#define SWP_NOMOVE
Definition: winuser.h:1244
#define SWP_NOSIZE
Definition: winuser.h:1245
#define HWND_DESKTOP
Definition: winuser.h:1209
#define RDW_ALLCHILDREN
Definition: winuser.h:1221
#define SWP_NOZORDER
Definition: winuser.h:1247

Referenced by ImeWnd_OnImeSetContext(), NtUserxArrangeIconicWindows(), NtUserxDrawMenuBar(), NtUserxMDIRedrawFrame(), NtUserxSetForegroundWindow(), NtUserxUpdateWindow(), START_TEST(), Test_HwndLockRoutine_CheckImeShowStatusInThread(), Test_HwndLockRoutine_DrawMenuBar(), Test_HwndLockRoutine_GetSysMenuHandle(), and Test_HwndLockRoutine_UpdateWindow().

◆ NtUserCallHwndOpt()

HWND APIENTRY NtUserCallHwndOpt ( HWND  hWnd,
DWORD  Routine 
)

Definition at line 691 of file simplecall.c.

694{
695 switch (Routine)
696 {
698 GetW32ThreadInfo()->pDeskInfo->hProgmanWindow = hWnd;
699 break;
700
702 GetW32ThreadInfo()->pDeskInfo->hTaskManWindow = hWnd;
703 break;
704 }
705
706 return hWnd;
707}
struct _THREADINFO * GetW32ThreadInfo(VOID)
Definition: misc.c:805
@ HWNDOPT_ROUTINE_SETTASKMANWINDOW
Definition: ntuser.h:1618
@ HWNDOPT_ROUTINE_SETPROGMANWINDOW
Definition: ntuser.h:1617

Referenced by NtUserxSetProgmanWindow(), and NtUserxSetTaskmanWindow().

◆ NtUserCallHwndParam()

DWORD APIENTRY NtUserCallHwndParam ( HWND  hWnd,
DWORD_PTR  Param,
DWORD  Routine 
)

Definition at line 767 of file simplecall.c.

771{
772
773 switch (Routine)
774 {
776 {
777 DWORD ret;
778
781 UserLeave();
782 return ret;
783 }
784
786 {
787 PWND Window;
788
791 {
792 UserLeave();
793 return FALSE;
794 }
795
796 if (Param)
797 UserSetProp(Window, gpsi->atomContextHelpIdProp, (HANDLE)Param, TRUE);
798 else
800
801 UserLeave();
802 return TRUE;
803 }
804
806 {
807 PWND pWnd;
809
811
812 if (!(pWnd = UserGetWindowObject(hWnd)))
813 {
814 UserLeave();
815 return 0;
816 }
817 UserRefObjectCo(pWnd, &Ref);
818
819 if (pWnd->head.pti->ppi == PsGetCurrentProcessWin32Process() &&
820 pWnd->cbwndExtra >= DLGWINDOWEXTRA &&
822 {
823 pWnd->DialogPointer = (PVOID)Param;
824 if (Param)
825 {
826 if (!pWnd->fnid) pWnd->fnid = FNID_DIALOG;
827 pWnd->state |= WNDS_DIALOGWINDOW;
828 }
829 else
830 {
831 pWnd->fnid |= FNID_DESTROY;
832 pWnd->state &= ~WNDS_DIALOGWINDOW;
833 }
834 }
835
836 UserDerefObjectCo(pWnd);
837 UserLeave();
838 return 0;
839 }
840
842 {
843 PWND pWnd;
844 PNOTIFYEVENT pne;
846 pne = (PNOTIFYEVENT)Param;
847 if (hWnd)
849 else
850 pWnd = NULL;
851 IntNotifyWinEvent(pne->event, pWnd, pne->idObject, pne->idChild, pne->flags);
852 UserLeave();
853 return 0;
854 }
855
857 {
858 PWND pWnd;
861 if (pWnd) IntClearWindowState(pWnd, (UINT)Param);
862 UserLeave();
863 return 0;
864 }
865
867 {
868 PWND pWnd;
871 if (pWnd) IntSetWindowState(pWnd, (UINT)Param);
872 UserLeave();
873 return 0;
874 }
875 }
876
877 STUB;
878
879 return 0;
880}
#define NULL
Definition: types.h:112
struct _NOTIFYEVENT * PNOTIFYEVENT
#define FNID_DESTROY
Definition: ntuser.h:898
#define WNDS_SERVERSIDEWINDOWPROC
Definition: ntuser.h:623
#define FNID_DIALOG
Definition: ntuser.h:869
#define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT
Definition: ntuser.h:3589
@ HWNDPARAM_ROUTINE_SETDIALOGPOINTER
Definition: ntuser.h:1622
@ HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
Definition: ntuser.h:1621
@ HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
Definition: ntuser.h:1624
@ HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
Definition: ntuser.h:1620
@ HWNDPARAM_ROUTINE_SETWINDOWSTATE
Definition: ntuser.h:1625
#define WNDS_DIALOGWINDOW
Definition: ntuser.h:621
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
unsigned int UINT
Definition: ndis.h:50
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
Definition: process.c:1183
HANDLE FASTCALL UserRemoveProp(_In_ PWND Window, _In_ ATOM Atom, _In_ BOOLEAN SystemProp)
LONG idChild
Definition: hook.h:39
DWORD flags
Definition: hook.h:40
LONG idObject
Definition: hook.h:38
DWORD event
Definition: hook.h:37
THRDESKHEAD head
Definition: ntuser.h:695
DWORD fnid
Definition: ntuser.h:709
DWORD state
Definition: ntuser.h:701
PVOID DialogPointer
Definition: ntuser.h:766
ULONG cbwndExtra
Definition: ntuser.h:738
void * PVOID
Definition: typedefs.h:50
int ret
VOID FASTCALL IntNotifyWinEvent(DWORD Event, PWND pWnd, LONG idObject, LONG idChild, DWORD flags)
Definition: event.c:178
VOID FASTCALL IntClearWindowState(PWND pWnd, UINT Flag)
Definition: misc.c:616
VOID FASTCALL IntSetWindowState(PWND pWnd, UINT Flag)
Definition: misc.c:595
BOOL FASTCALL IntKillTimer(PWND Window, UINT_PTR IDEvent, BOOL SystemTimer)
Definition: timer.c:573
#define DLGWINDOWEXTRA
Definition: winuser.h:2565

Referenced by NtUserxClearWindowState(), NtUserxKillSystemTimer(), NtUserxNotifyWinEvent(), NtUserxSetDialogPointer(), NtUserxSetWindowContextHelpId(), NtUserxSetWindowState(), Test_HwndParamRoutine_SetWindowContextHelpId(), and Test_HwndRoutine_GetWindowContextHelpId().

◆ NtUserCallHwndParamLock()

DWORD APIENTRY NtUserCallHwndParamLock ( HWND  hWnd,
DWORD_PTR  Param,
DWORD  Routine 
)

Definition at line 884 of file simplecall.c.

888{
889 DWORD Ret = FALSE;
890 PWND Window;
892
893 TRACE("Enter NtUserCallHwndParamLock\n");
895
897 {
898 Ret = FALSE;
899 goto Exit;
900 }
901
902 UserRefObjectCo(Window, &Ref);
903
904 switch (Routine)
905 {
908 break;
909
911 {
912 PREGION Rgn = REGION_LockRgn((HRGN)Param);
914 if (Rgn) REGION_UnlockRgn(Rgn);
915 break;
916 }
917 }
918
920
921Exit:
922
923 TRACE("Leave NtUserCallHwndParamLock, ret=%lu\n", Ret);
924 UserLeave();
925
926 return Ret;
927}
@ TWOPARAM_ROUTINE_VALIDATERGN
Definition: ntuser.h:1644
@ TWOPARAM_ROUTINE_IMESHOWSTATUSCHANGE
Definition: ntuser.h:1638
Definition: region.h:8
BOOL FASTCALL co_UserRedrawWindow(PWND Window, const RECTL *UpdateRect, PREGION UpdateRgn, ULONG Flags)
Definition: painting.c:888
PREGION FASTCALL REGION_LockRgn(_In_ HRGN hrgn)
Definition: region.c:2358
VOID FASTCALL REGION_UnlockRgn(_In_ PREGION prgn)
Definition: region.c:2373
BOOL FASTCALL IntBroadcastImeShowStatusChange(PWND pImeWnd, BOOL bShow)
Definition: ime.c:2386
#define RDW_VALIDATE
Definition: winuser.h:1218

Referenced by ImeWnd_OnImeSystem(), and NtUserxValidateRgn().

◆ NtUserCallNoParam()

DWORD_PTR APIENTRY NtUserCallNoParam ( DWORD  Routine)

Definition at line 59 of file simplecall.c.

60{
61 DWORD_PTR Result = 0;
62
63 TRACE("Enter NtUserCallNoParam\n");
65
66 switch (Routine)
67 {
70 break;
71
74 break;
75
78 break;
79
82 break;
83
86 break;
87
90 break;
91
93 {
95 Result = (DWORD_PTR)MAKELONG(pti->ptLast.x, pti->ptLast.y);
96 break;
97 }
98
101 break;
102
105 break;
106
108 {
110 TRACE("Zapping the Active and Focus window out of the Queue!\n");
111 pti->MessageQueue->spwndFocus = NULL;
112 pti->MessageQueue->spwndActive = NULL;
113 Result = 0;
114 break;
115 }
116
119 break;
120
121 /* this is a ReactOS only case and is needed for gui-on-demand */
124 break;
125
127 if (UserIsIMMEnabled())
129 else
131
132 Result = TRUE; // Always return TRUE.
133 break;
134
135 default:
136 ERR("Calling invalid routine number 0x%x in NtUserCallNoParam\n", Routine);
138 break;
139 }
140
141 TRACE("Leave NtUserCallNoParam, ret=%p\n",(PVOID)Result);
142 UserLeave();
143
144 return Result;
145}
#define ERR(fmt,...)
Definition: debug.h:110
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define PsGetCurrentThread()
Definition: env_spec_w32.h:81
BOOL FASTCALL IntReleaseCapture(VOID)
Definition: focus.c:1532
#define NOPARAM_ROUTINE_ISCONSOLEMODE
Definition: ntuser.h:3574
@ NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
Definition: ntuser.h:1544
@ NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
Definition: ntuser.h:1529
@ NOPARAM_ROUTINE_CREATEMENUPOPUP
Definition: ntuser.h:1499
@ NOPARAM_ROUTINE_LOADUSERAPIHOOK
Definition: ntuser.h:1524
@ NOPARAM_ROUTINE_GETMSESSAGEPOS
Definition: ntuser.h:1515
@ NOPARAM_ROUTINE_MSQCLEARWAKEMASK
Definition: ntuser.h:1502
@ NOPARAM_ROUTINE_CREATEMENU
Definition: ntuser.h:1498
@ NOPARAM_ROUTINE_GETIMESHOWSTATUS
Definition: ntuser.h:1513
@ NOPARAM_ROUTINE_DESTROY_CARET
Definition: ntuser.h:1504
@ NOPARAM_ROUTINE_RELEASECAPTURE
Definition: ntuser.h:1527
@ NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
Definition: ntuser.h:1545
@ NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
Definition: ntuser.h:1539
#define SRVINFO_IMM32
Definition: ntuser.h:949
BOOL FASTCALL IntMsqClearWakeMask(VOID)
Definition: msgqueue.c:392
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
Definition: thread.c:805
BOOL FASTCALL UserLoadApiHook(VOID)
Definition: hook.c:131
POINT ptLast
Definition: win32.h:129
struct _USER_MESSAGE_QUEUE * MessageQueue
Definition: win32.h:89
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
DWORD dwSRVIFlags
Definition: ntuser.h:1051
#define DWORD_PTR
Definition: treelist.c:76
#define MAKELONG(a, b)
Definition: typedefs.h:249
BOOL FASTCALL co_IntDestroyCaret(PTHREADINFO Win32Thread)
Definition: caret.c:159
HDC ScreenDeviceContext
Definition: desktop.c:36
BOOL gfIMEShowStatus
Definition: ime.c:29
HMENU FASTCALL UserCreateMenu(PDESKTOP Desktop, BOOL PopupMenu)
Definition: menu.c:5020
BOOL APIENTRY IntInitMessagePumpHook(VOID)
Definition: message.c:2110
BOOL APIENTRY IntUninitMessagePumpHook(VOID)
Definition: message.c:2123
BOOL FASTCALL UserIsIMMEnabled(VOID)
Definition: metric.c:22
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

Referenced by EndDialog(), IsConsoleMode(), LoadUserApiHook(), NtUserxCreateMenu(), NtUserxCreatePopupMenu(), NtUserxDestroyCaret(), NtUserxGetMessagePos(), NtUserxInitMessagePump(), NtUserxMsqClearWakeMask(), NtUserxReleaseCapture(), NtUserxUnInitMessagePump(), Test_NoParamRoutine_CreateMenu(), Test_NoParamRoutine_CreatePopupMenu(), Test_NoParamRoutine_LoadUserApiHook(), UpdatePerUserImmEnabling(), and User32GetImeShowStatus().

◆ NtUserCallOneParam()

DWORD_PTR APIENTRY NtUserCallOneParam ( DWORD_PTR  Param,
DWORD  Routine 
)

Definition at line 153 of file simplecall.c.

156{
158
159 TRACE("Enter NtUserCallOneParam\n");
160
162
163 switch (Routine)
164 {
166 {
167 PTHREADINFO pti;
169 MsqPostQuitMessage(pti, Param);
170 Result = TRUE;
171 break;
172 }
173
175 {
176 PSMWP psmwp;
177 HDWP hDwp = NULL;
178 INT count = (INT)Param;
179
180 if (count < 0)
181 {
183 Result = 0;
184 break;
185 }
186
187 /* Windows allows zero count, in which case it allocates context for 8 moves */
188 if (count == 0) count = 8;
189
191 NULL,
192 NULL,
193 (PHANDLE)&hDwp,
195 sizeof(SMWP));
196 if (!psmwp)
197 {
198 Result = 0;
199 break;
200 }
201
203 if (!psmwp->acvr)
204 {
206 Result = 0;
207 break;
208 }
209
210 RtlZeroMemory(psmwp->acvr, count * sizeof(CVR));
211 psmwp->bHandle = TRUE;
212 psmwp->ccvr = 0; // actualCount
213 psmwp->ccvrAlloc = count; // suggestedCount
214 Result = (DWORD_PTR)hDwp;
215 break;
216 }
217
220 break;
221
223 {
224 PTHREADINFO ti;
225 ti = GetW32ThreadInfo();
226 if (ti != NULL)
227 {
228 /* Try convert the pointer to a user mode pointer if the desktop is
229 mapped into the process */
231 }
232 else
233 {
234 Result = 0;
235 }
236 break;
237 }
238
241 break;
242
244 {
246 gspv.bMouseBtnSwap = Param ? TRUE : FALSE;
248 break;
249 }
250
253 break;
254
257 break;
258
260 {
262 {
264 Result = 0;
265 }
266 break;
267 }
268
270 {
271 BOOL Enable;
273
274 if (Process != NULL)
275 {
276 Enable = (BOOL)(Param != 0);
277
278 if (Enable)
279 {
280 Process->W32PF_flags &= ~W32PF_NOWINDOWGHOSTING;
281 }
282 else
283 {
284 Process->W32PF_flags |= W32PF_NOWINDOWGHOSTING;
285 }
286
287 Result = TRUE;
288 break;
289 }
290
291 Result = FALSE;
292 break;
293 }
294
297 break;
298
301 break;
302
305 break;
306
308 Result = UserReleaseDC(NULL, (HDC) Param, FALSE);
309 break;
310
312 Result = UserRealizePalette((HDC) Param);
313 break;
314
316 {
318 break;
319 }
320
322 /* FIXME: Should use UserEnterShared */
324 break;
325
326 case ONEPARAM_ROUTINE_GETCURSORPOS:
327 {
330 Result = TRUE;
331 if (pti->rpdesk != IntGetActiveDesktop())
332 {
333 Result = FALSE;
334 break;
335 }
337 {
338 ProbeForWrite((POINT*)Param,sizeof(POINT),1);
339 pptl = (PPOINTL)Param;
340 *pptl = gpsi->ptCursor;
341 }
343 {
344 Result = FALSE;
345 }
346 _SEH2_END;
347 break;
348 }
349
351 {
352 PPROCESSINFO ppi;
353 if (Param & LAYOUT_ORIENTATIONMASK || Param == LAYOUT_LTR)
354 {
356 ppi->dwLayout = Param;
357 Result = TRUE;
358 break;
359 }
361 Result = FALSE;
362 break;
363 }
364
366 {
367 PPROCESSINFO ppi;
368 PDWORD pdwLayout;
369 Result = TRUE;
370
372 {
374 Result = FALSE;
375 break;
376 }
377
380 {
381 pdwLayout = (PDWORD)Param;
382 *pdwLayout = ppi->dwLayout;
383 }
385 {
387 Result = FALSE;
388 }
389 _SEH2_END;
390 break;
391 }
392
395 break;
396
398 /* TODO: Implement sound sentry */
400 break;
401
402 case ONEPARAM_ROUTINE_CREATESYSTEMTHREADS:
404 break;
405
408 break;
409
412 break;
413
414 default:
415 ERR("Calling invalid routine number 0x%x in NtUserCallOneParam(), Param=0x%x\n",
416 Routine, Param);
418 Result = 0;
419 break;
420 }
421
422 TRACE("Leave NtUserCallOneParam, ret=%p\n", (PVOID)Result);
423 UserLeave();
424
425 return Result;
426}
PEPROCESS gpepCSRSS
Definition: csr.c:15
DWORD UserSystemThreadProc(BOOL bRemoteProcess)
Definition: csr.c:207
HWND FASTCALL IntWindowFromDC(HDC hDc)
Definition: windc.c:894
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
#define PagedPool
Definition: env_spec_w32.h:308
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
Definition: exintrin.c:143
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
BOOL FASTCALL IntLockSetForegroundWindow(UINT uLockCode)
Definition: focus.c:1574
BOOL FASTCALL IntAllowSetForegroundWindow(DWORD dwProcessId)
Definition: focus.c:1605
UINT WINAPI UserRealizePalette(HDC hDC)
Definition: painting.c:2339
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING
Definition: ntuser.h:3575
#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING
Definition: ntuser.h:3576
@ ONEPARAM_ROUTINE_GETKEYBOARDTYPE
Definition: ntuser.h:1567
@ ONEPARAM_ROUTINE_WINDOWFROMDC
Definition: ntuser.h:1553
@ ONEPARAM_ROUTINE_MESSAGEBEEP
Definition: ntuser.h:1577
@ ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
Definition: ntuser.h:1601
@ ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
Definition: ntuser.h:1561
@ ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
Definition: ntuser.h:1549
@ ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
Definition: ntuser.h:1566
@ ONEPARAM_ROUTINE_POSTQUITMESSAGE
Definition: ntuser.h:1579
@ ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
Definition: ntuser.h:1574
@ ONEPARAM_ROUTINE_RELEASEDC
Definition: ntuser.h:1590
@ ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
Definition: ntuser.h:1607
@ ONEPARAM_ROUTINE_SHOWCURSOR
Definition: ntuser.h:1605
@ ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
Definition: ntuser.h:1600
@ ONEPARAM_ROUTINE_REALIZEPALETTE
Definition: ntuser.h:1583
@ ONEPARAM_ROUTINE_REPLYMESSAGE
Definition: ntuser.h:1594
@ ONEPARAM_ROUTINE_GETQUEUESTATUS
Definition: ntuser.h:1569
@ ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
Definition: ntuser.h:1555
@ ONEPARAM_ROUTINE_SETCARETBLINKTIME
Definition: ntuser.h:1595
@ ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
Definition: ntuser.h:1568
@ ONEPARAM_ROUTINE_GETINPUTEVENT
Definition: ntuser.h:1565
@ ONEPARAM_ROUTINE_ALLOWSETFOREGND
Definition: ntuser.h:1554
@ TYPE_SETWINDOWPOS
Definition: ntuser.h:44
static HDC
Definition: imagelist.c:92
#define LAYOUT_LTR
Definition: dc.c:36
VOID FASTCALL MsqPostQuitMessage(PTHREADINFO pti, ULONG ExitCode)
Definition: msgqueue.c:1381
int UserShowCursor(BOOL bShow)
Definition: msgqueue.c:168
LPARAM FASTCALL MsqSetMessageExtraInfo(LPARAM lParam)
Definition: msgqueue.c:2435
BOOL FASTCALL co_MsqReplyMessage(LRESULT lResult)
Definition: msgqueue.c:2472
HANDLE FASTCALL IntMsqSetWakeMask(DWORD WakeMask)
Definition: msgqueue.c:362
#define BOOL
Definition: nt_native.h:43
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:142
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
HWND hwndSAS
Definition: winsta.c:24
DWORD * PDWORD
Definition: pedump.c:68
#define INT
Definition: polytest.cpp:20
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:159
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:34
Definition: winpos.h:4
DWORD dwLayout
Definition: win32.h:279
Definition: winpos.h:21
PCVR acvr
Definition: winpos.h:27
INT ccvr
Definition: winpos.h:25
UINT bHandle
Definition: winpos.h:24
INT ccvrAlloc
Definition: winpos.h:26
BOOL bMouseBtnSwap
Definition: sysparams.h:82
struct _DESKTOP * rpdesk
Definition: win32.h:92
int32_t INT
Definition: typedefs.h:58
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define WM_LOGONNOTIFY
Definition: undocuser.h:37
#define LN_MESSAGE_BEEP
Definition: undocuser.h:120
INT FASTCALL UserReleaseDC(PWND Window, HDC hDc, BOOL EndPaint)
Definition: windc.c:918
#define W32PF_NOWINDOWGHOSTING
Definition: win32.h:32
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
Definition: error.c:31
BOOL FASTCALL IntSetCaretBlinkTime(UINT uMSeconds)
Definition: caret.c:183
UINT APIENTRY UserEnumClipboardFormats(UINT fmt)
Definition: clipboard.c:443
HANDLE IntCreateCurIconHandle(BOOLEAN Animated)
Definition: cursoricon.c:285
PDESKTOP FASTCALL IntGetActiveDesktop(VOID)
Definition: desktop.c:1262
static __inline PVOID DesktopHeapAddressToUser(PVOID lpMem)
Definition: desktop.h:308
HKL FASTCALL UserGetKeyboardLayout(DWORD dwThreadId)
Definition: kbdlayout.c:1032
DWORD FASTCALL UserGetKeyboardType(DWORD dwTypeFlag)
Definition: keyboard.c:1684
DWORD APIENTRY IntGetQueueStatus(DWORD Changes)
Definition: message.c:2089
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: message.c:1345
BOOL FASTCALL UserDeleteObject(HANDLE h, HANDLE_TYPE type)
Definition: object.c:717
PUSER_HANDLE_TABLE gHandleTable
Definition: object.c:13
PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, PDESKTOP pDesktop, PTHREADINFO pti, HANDLE *h, HANDLE_TYPE type, ULONG size)
Definition: object.c:568
SPIVALUES gspv
Definition: sysparams.c:17
#define USERTAG_SWP
Definition: tags.h:281
_In_ POINTL * pptl
Definition: winddi.h:3741
struct _POINTL * PPOINTL
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
#define ERROR_INVALID_ACCESS
Definition: winerror.h:115
#define LAYOUT_ORIENTATIONMASK
Definition: wingdi.h:1374
struct _SMWP SMWP
struct _SMWP * PSMWP
#define SM_SWAPBUTTON
Definition: winuser.h:984
#define PsGetCurrentProcess
Definition: psfuncs.h:17

Referenced by CreateSystemThreads(), DesktopPtrToUser(), GetProcessDefaultLayout(), GetWinStationInfo(), NtUserxAllowSetForegroundWindow(), NtUserxBeginDeferWindowPos(), NtUserxCreateEmptyCurObject(), NtUserxCreateSystemThreads(), NtUserxEnableProcessWindowGhosting(), NtUserxEnumClipboardFormats(), NtUserxGetCursorPos(), NtUserxGetDesktopMapping(), NtUserxGetKeyboardLayout(), NtUserxGetKeyboardType(), NtUserxGetQueueStatus(), NtUserxLockSetForegroundWindow(), NtUserxMessageBeep(), NtUserxMsqSetWakeMask(), NtUserxPostQuitMessage(), NtUserxRealizePalette(), NtUserxReleaseDC(), NtUserxReplyMessage(), NtUserxSetCaretBlinkTime(), NtUserxSetMessageExtraInfo(), NtUserxShowCursor(), NtUserxSwapMouseButton(), NtUserxWindowFromDC(), SetProcessDefaultLayout(), START_TEST(), Test_OneParamRoutine_BeginDeferWindowPos(), Test_OneParamRoutine_CreateEmptyCurObject(), Test_OneParamRoutine_MapDesktopObject(), Test_OneParamRoutine_SwapMouseButtons(), and Test_OneParamRoutine_WindowFromDC().

◆ NtUserCallTwoParam()

DWORD_PTR APIENTRY NtUserCallTwoParam ( DWORD_PTR  Param1,
DWORD_PTR  Param2,
DWORD  Routine 
)

Definition at line 434 of file simplecall.c.

438{
439 PWND Window;
440 DWORD_PTR Ret;
441 TRACE("Enter NtUserCallTwoParam\n");
443
444 switch (Routine)
445 {
447 {
449 Ret = (DWORD_PTR)UserPaintCaption(Window, (INT)Param2);
450 break;
451 }
452
454 {
455 PMENU MenuObject = IntGetMenuObject((HMENU)Param1);
456 if (!MenuObject)
457 {
458 Ret = 0;
459 break;
460 }
461
462 if (Param2 > 0)
463 {
464 Ret = (MenuObject->cyMenu == (int)Param2);
465 MenuObject->cyMenu = (int)Param2;
466 }
467 else
468 Ret = (DWORD_PTR)MenuObject->cyMenu;
469 IntReleaseMenuObject(MenuObject);
470 break;
471 }
472
474 {
476 ASSERT(pti->MessageQueue);
477 Ret = (DWORD_PTR)MsqSetStateWindow(pti, (ULONG)Param1, (HWND)Param2);
478 break;
479 }
480
482 Ret = IntEnableWindow((HWND)Param1, (BOOL)Param2);
483 break;
484
486 {
488 if (!Window)
489 {
490 Ret = 0;
491 break;
492 }
493
494 Ret = (DWORD_PTR)IntShowOwnedPopups(Window, (BOOL)Param2);
495 break;
496 }
497
499 {
502 if (!Window)
503 {
504 Ret = 0;
505 break;
506 }
507
508 /* Unpack wParam */
509 wParam = MAKEWPARAM((Param2 >> 3) & 0x3,
510 Param2 & (UISF_HIDEFOCUS | UISF_HIDEACCEL | UISF_ACTIVE));
511
513 break;
514 }
515
517 {
518 HWND hwnd = (HWND)Param1;
519 BOOL fAltTab = (BOOL)Param2;
520 Ret = 0;
522 if (!Window)
523 break;
524
525 if (gpqForeground && !fAltTab)
526 {
527 PWND pwndActive = gpqForeground->spwndActive;
528 if (pwndActive && !(pwndActive->ExStyle & WS_EX_TOPMOST))
529 {
530 co_WinPosSetWindowPos(pwndActive, HWND_BOTTOM, 0, 0, 0, 0,
533 }
534
536 break;
537 }
538
540
541 if (fAltTab && (Window->style & WS_MINIMIZE))
542 {
544 MsqPostMessage(Window->head.pti, &msg, FALSE, QS_POSTMESSAGE, 0, 0);
545 }
546 break;
547 }
548
550 Ret = (DWORD_PTR)co_IntSetCaretPos((int)Param1, (int)Param2);
551 break;
552
554 Ret = (DWORD_PTR)co_IntRegisterLogonProcess((HANDLE)Param1, (BOOL)Param2);
555 break;
556
558 Ret = (DWORD_PTR)UserSetCursorPos((int)Param1, (int)Param2, 0, 0, FALSE);
559 break;
560
562 Ret = IntUnhookWindowsHook((int)Param1, (HOOKPROC)Param2);
563 break;
564
565 default:
566 ERR("Calling invalid routine number 0x%x in NtUserCallTwoParam(), Param1=0x%x Parm2=0x%x\n",
567 Routine, Param1, Param2);
569 Ret = 0;
570 }
571
572
573 TRACE("Leave NtUserCallTwoParam, ret=%p\n", (PVOID)Ret);
574 UserLeave();
575
576 return Ret;
577}
#define msg(x)
Definition: auth_time.c:54
WPARAM wParam
Definition: combotst.c:138
HANDLE HWND
Definition: compat.h:19
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
BOOL FASTCALL UserSetActiveWindow(_In_opt_ PWND Wnd)
Definition: focus.c:1263
PUSER_MESSAGE_QUEUE gpqForeground
Definition: focus.c:13
#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE
Definition: ntuser.h:3578
#define UserHMGetHandle(obj)
Definition: ntuser.h:230
#define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE
Definition: ntuser.h:3588
@ TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
Definition: ntuser.h:1655
@ TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
Definition: ntuser.h:1641
@ TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
Definition: ntuser.h:1669
@ TWOPARAM_ROUTINE_REDRAWTITLE
Definition: ntuser.h:1640
@ TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
Definition: ntuser.h:1642
@ TWOPARAM_ROUTINE_ENABLEWINDOW
Definition: ntuser.h:1639
@ TWOPARAM_ROUTINE_SETCARETPOS
Definition: ntuser.h:1664
@ TWOPARAM_ROUTINE_SETCURSORPOS
Definition: ntuser.h:1665
#define TWOPARAM_ROUTINE_SETMENUBARHEIGHT
Definition: ntuser.h:3577
#define IntReleaseMenuObject(MenuObj)
Definition: menu.h:130
#define ASSERT(a)
Definition: mode.c:44
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
HWND FASTCALL MsqSetStateWindow(PTHREADINFO pti, ULONG Type, HWND hWnd)
Definition: msgqueue.c:2495
VOID FASTCALL MsqPostMessage(PTHREADINFO pti, MSG *Msg, BOOLEAN HardwareMessage, DWORD MessageBits, DWORD dwQEvent, LONG_PTR ExtraInfo)
Definition: msgqueue.c:1337
BOOL UserPaintCaption(PWND pWnd, INT Flags)
Definition: defwnd.c:398
BOOL FASTCALL IntUnhookWindowsHook(int HookId, HOOKPROC pfnFilterProc)
Definition: hook.c:1319
struct _THREADINFO * PTHREADINFO
Definition: ntwin32.h:6
#define WS_MINIMIZE
Definition: pedump.c:622
#define WS_EX_TOPMOST
Definition: pedump.c:647
BOOL FASTCALL co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register)
Definition: simplecall.c:18
DWORD ExStyle
Definition: ntuser.h:704
ULONG cyMenu
Definition: ntuser.h:423
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
uint32_t ULONG
Definition: typedefs.h:59
BOOL FASTCALL co_IntSetCaretPos(int X, int Y)
Definition: caret.c:193
BOOL UserSetCursorPos(INT x, INT y, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook)
Definition: cursoricon.c:238
PMENU FASTCALL IntGetMenuObject(HMENU hMenu)
Definition: menu.c:192
BOOL FASTCALL IntEnableWindow(HWND hWnd, BOOL bEnable)
Definition: window.c:220
BOOL FASTCALL IntShowOwnedPopups(PWND OwnerWnd, BOOL fShow)
Definition: window.c:4649
BOOL FASTCALL UserUpdateUiState(PWND Wnd, WPARAM wParam)
Definition: window.c:38
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define MAKEWPARAM(l, h)
Definition: winuser.h:4009
LRESULT(CALLBACK * HOOKPROC)(int, WPARAM, LPARAM)
Definition: winuser.h:2899
#define WM_SYSCOMMAND
Definition: winuser.h:1741
#define SWP_ASYNCWINDOWPOS
Definition: winuser.h:1253
#define QS_POSTMESSAGE
Definition: winuser.h:877
#define SC_RESTORE
Definition: winuser.h:2598
#define HWND_BOTTOM
Definition: winuser.h:1205

Referenced by MDI_UpdateFrameText(), NtUserxEnableWindow(), NtUserxRegisterLogonProcess(), NtUserxSetCaretPos(), NtUserxSetCursorPos(), NtUserxSetGUIThreadHandle(), NtUserxSetMenuBarHeight(), NtUserxShowOwnedPopups(), NtUserxSwitchToThisWindow(), NtUserxUnhookWindowsHook(), and NtUserxUpdateUiState().

Variable Documentation

◆ gpidLogon