2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: Native User stubs
5 * FILE: subsys/win32k/ntuser/stubs.c
6 * PROGRAMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * 04-06-2001 CSH Created
12 DBG_DEFAULT_CHANNEL(UserMisc
);
16 NtUserAssociateInputContext(
28 NtUserAttachThreadInput(
34 PETHREAD Thread
, ThreadTo
;
35 PTHREADINFO pti
, ptiTo
;
39 Status
= PsLookupThreadByThreadId((HANDLE
)idAttach
, &Thread
);
40 if (!NT_SUCCESS(Status
))
42 EngSetLastError(ERROR_INVALID_PARAMETER
);
45 Status
= PsLookupThreadByThreadId((HANDLE
)idAttachTo
, &ThreadTo
);
46 if (!NT_SUCCESS(Status
))
48 EngSetLastError(ERROR_INVALID_PARAMETER
);
49 ObDereferenceObject(Thread
);
53 pti
= PsGetThreadWin32Thread(Thread
);
54 ptiTo
= PsGetThreadWin32Thread(ThreadTo
);
55 ObDereferenceObject(Thread
);
56 ObDereferenceObject(ThreadTo
);
58 Ret
= UserAttachThreadInput( pti
, ptiTo
, fAttach
);
66 // Works like BitBlt, http://msdn.microsoft.com/en-us/library/ms532278(VS.85).aspx
83 Ret
= NtGdiBitBlt( hdc
,
113 NtUserConvertMemHandle(
124 NtUserCreateLocalMemHandle(
137 NtUserDdeGetQualityOfService(
140 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
)
163 NtUserDdeSetQualityOfService(
165 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
166 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
)
190 NtUserDrawAnimatedRects(
213 NtUserExcludeUpdateRgn(
239 NtUserGetControlBrush(
251 * Called from PaintRect, works almost like wine PaintRect16 but returns hBrush.
255 NtUserGetControlColor(
259 UINT CtlMsg
) // Wine PaintRect: WM_CTLCOLORMSGBOX + hbrush
281 NtUserImpersonateDdeClientWindow(
292 NtUserInitializeClientPfnArrays(
293 PPFNCLIENT pfnClientA
,
294 PPFNCLIENT pfnClientW
,
295 PPFNCLIENTWORKER pfnClientWorker
,
298 NTSTATUS Status
= STATUS_SUCCESS
;
299 TRACE("Enter NtUserInitializeClientPfnArrays User32 0x%x\n",hmodUser
);
301 if (ClientPfnInit
) return Status
;
303 UserEnterExclusive();
307 ProbeForRead( pfnClientA
, sizeof(PFNCLIENT
), 1);
308 ProbeForRead( pfnClientW
, sizeof(PFNCLIENT
), 1);
309 ProbeForRead( pfnClientWorker
, sizeof(PFNCLIENTWORKER
), 1);
310 RtlCopyMemory(&gpsi
->apfnClientA
, pfnClientA
, sizeof(PFNCLIENT
));
311 RtlCopyMemory(&gpsi
->apfnClientW
, pfnClientW
, sizeof(PFNCLIENT
));
312 RtlCopyMemory(&gpsi
->apfnClientWorker
, pfnClientWorker
, sizeof(PFNCLIENTWORKER
));
314 //// FIXME! HAX! Temporary until server side is finished.
315 //// Copy the client side procs for now.
316 RtlCopyMemory(&gpsi
->aStoCidPfn
, pfnClientW
, sizeof(gpsi
->aStoCidPfn
));
318 hModClient
= hmodUser
;
319 ClientPfnInit
= TRUE
;
321 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
)
323 Status
=_SEH2_GetExceptionCode();
327 if (!NT_SUCCESS(Status
))
329 ERR("Failed reading Client Pfns from user space.\n");
330 SetLastNtError(Status
);
360 NtUserLockWorkStation(VOID
)
369 NtUserMNDragLeave(VOID
)
389 NtUserModifyUserStartupInfoFlags(
400 NtUserNotifyIMEStatus(
412 NtUserQueryUserCounters(
426 NtUserRegisterTasklist(
436 NtUserSetConsoleReserveKeys(
486 IN CONST INT
*lpaElements
,
487 IN CONST COLORREF
*lpaRgbValues
,
495 /* We need this check to prevent overflow later */
496 if ((ULONG
)cElements
>= 0x40000000)
498 EngSetLastError(ERROR_NOACCESS
);
502 UserEnterExclusive();
506 ProbeForRead(lpaElements
, cElements
* sizeof(INT
), 1);
507 ProbeForRead(lpaRgbValues
, cElements
* sizeof(COLORREF
), 1);
509 IntSetSysColors(cElements
, lpaElements
, lpaRgbValues
);
511 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
)
513 SetLastNtError(_SEH2_GetExceptionCode());
520 UserSendNotifyMessage(HWND_BROADCAST
, WM_SYSCOLORCHANGE
, 0, 0);
531 NtUserUpdateInputContext(
543 NtUserUpdateInstance(
555 NtUserUserHandleGrantAccess(
556 IN HANDLE hUserHandle
,
567 NtUserWaitForMsgAndEvent(
577 NtUserWin32PoolAllocationStats(
592 NtUserYieldTask(VOID
)
602 NtUserCheckImeHotKey(
612 NtUserConsoleControl(
623 NtUserCreateInputContext(
632 NtUserDestroyInputContext(
641 NtUserDisableThreadIme(
650 NtUserGetAppImeLevel(
679 NtUserGetRawInputBuffer(
690 NtUserGetRawInputData(
703 NtUserGetRawInputDeviceInfo(
716 NtUserGetRawInputDeviceList(
717 PRAWINPUTDEVICELIST pRawInputDeviceList
,
727 NtUserGetRegisteredRawInputDevices(
728 PRAWINPUTDEVICE pRawInputDevices
,
738 NtUserHardErrorControl(
749 NtUserNotifyProcessCreate(
761 NtUserProcessConnect(
763 PUSERCONNECT pUserConnect
,
766 NTSTATUS Status
= STATUS_SUCCESS
;
767 TRACE("NtUserProcessConnect\n");
768 if (pUserConnect
&& ( Size
== sizeof(USERCONNECT
) ))
770 PPROCESSINFO W32Process
;
773 W32Process
= PsGetCurrentProcessWin32Process();
776 pUserConnect
->siClient
.psi
= gpsi
;
777 pUserConnect
->siClient
.aheList
= gHandleTable
;
778 pUserConnect
->siClient
.ulSharedDelta
= (ULONG_PTR
)W32Process
->HeapMappings
.KernelMapping
-
779 (ULONG_PTR
)W32Process
->HeapMappings
.UserMapping
;
781 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
)
783 Status
= _SEH2_GetExceptionCode();
786 if (!NT_SUCCESS(Status
))
788 SetLastNtError(Status
);
793 return STATUS_UNSUCCESSFUL
;
798 NtUserQueryInformationThread(
811 NtUserQueryInputContext(
821 NtUserRealInternalGetMessage(
835 NtUserRealWaitMessageEx(
845 NtUserRegisterUserApiHook(
846 PUNICODE_STRING m_dllname1
,
847 PUNICODE_STRING m_funname1
,
851 UserEnterExclusive();
859 NtUserRegisterRawInputDevices(
860 IN PCRAWINPUTDEVICE pRawInputDevices
,
861 IN UINT uiNumDevices
,
870 NtUserResolveDesktop(
882 NtUserSetAppImeLevel(
901 NtUserSetInformationProcess(
913 NtUserSetInformationThread(IN HANDLE ThreadHandle
,
914 IN USERTHREADINFOCLASS ThreadInformationClass
,
915 IN PVOID ThreadInformation
,
916 IN ULONG ThreadInformationLength
)
919 if (ThreadInformationClass
== UserThreadInitiateShutdown
)
921 ERR("Shutdown initiated\n");
923 else if (ThreadInformationClass
== UserThreadEndShutdown
)
925 ERR("Shutdown ended\n");
932 return STATUS_SUCCESS
;
937 NtUserSetThreadLayoutHandles(
947 NtUserSoundSentry(VOID
)
955 NtUserTestForInteractiveUser(
962 /* http://www.cyber-ta.org/releases/malware-analysis/public/SOURCES/b47155634ccb2c30630da7e3666d3d07/b47155634ccb2c30630da7e3666d3d07.trace.html#NtUserGetIconSize */
992 NtUserUnregisterUserApiHook(VOID
)
1000 NtUserGetLayeredWindowAttributes(
1012 NtUserRemoteConnect(
1023 NtUserRemoteRedrawRectangle(
1035 NtUserRemoteRedrawScreen(VOID
)
1043 NtUserRemoteStopScreenUpdates(VOID
)
1051 NtUserCtxDisplayIOCtl(
1065 NtUserDrawMenuBarTemp(
1072 /* we'll use this function just for caching the menu bar */
1078 * FillWindow: Called from User; Dialog, Edit and ListBox procs during a WM_ERASEBKGND.
1084 NtUserFillWindow(HWND hWndPaint
,
1098 NtUserLockWindowUpdate(HWND hWnd
)
1109 NtUserRealChildWindowFromPoint(HWND Parent
,
1122 NtUserSetImeOwnerWindow(DWORD Unknown0
,
1134 NtUserSetInternalWindowPos(
1149 NtUserSetLayeredWindowAttributes(HWND hwnd
,
1163 NtUserUpdateLayeredWindow(
1171 BLENDFUNCTION
*pblend
,
1184 NtUserWindowFromPhysicalPoint(POINT Point
)
1192 * NtUserResolveDesktopForWOW
1199 NtUserResolveDesktopForWOW(DWORD Unknown0
)
1219 /* NOTE: unused function */
1221 NtUserTrackPopupMenuEx(
1235 NtUserQuerySendMessage(DWORD Unknown0
)
1246 NtUserAlterWindowStyle(DWORD Unknown0
,
1256 * NtUserSetWindowStationUser
1263 NtUserSetWindowStationUser(
1274 BOOL APIENTRY
NtUserAddClipboardFormatListener(
1282 BOOL APIENTRY
NtUserRemoveClipboardFormatListener(
1290 BOOL APIENTRY
NtUserGetUpdatedClipboardFormats(
1305 NtUserGetCursorFrameInfo(
1321 NtUserSetSystemCursor(