ReactOS 0.4.15-dev-7842-g558ab78
ntstubs.c File Reference
#include <win32k.h>
Include dependency graph for ntstubs.c:

Go to the source code of this file.

Macros

#define SERVER_TO_CLIENT(ptr)    ((PVOID)((ULONG_PTR)ptr - pUserConnect->siClient.ulSharedDelta))
 

Functions

 DBG_DEFAULT_CHANNEL (UserMisc)
 
BOOL APIENTRY NtUserBitBltSysBmp (HDC hdc, INT nXDest, INT nYDest, INT nWidth, INT nHeight, INT nXSrc, INT nYSrc, DWORD dwRop)
 
DWORD APIENTRY NtUserDragObject (HWND hwnd1, HWND hwnd2, UINT u1, DWORD dw1, HCURSOR hc1)
 
BOOL APIENTRY NtUserDrawAnimatedRects (HWND hwnd, INT idAni, RECT *lprcFrom, RECT *lprcTo)
 
DWORD APIENTRY NtUserEvent (DWORD Unknown0)
 
BOOL APIENTRY NtUserGetAltTabInfo (HWND hwnd, INT iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText, BOOL Ansi)
 
NTSTATUS APIENTRY NtUserInitializeClientPfnArrays (PPFNCLIENT pfnClientA, PPFNCLIENT pfnClientW, PPFNCLIENTWORKER pfnClientWorker, HINSTANCE hmodUser)
 
DWORD APIENTRY NtUserInitTask (DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5, DWORD Unknown6, DWORD Unknown7, DWORD Unknown8, DWORD Unknown9, DWORD Unknown10, DWORD Unknown11)
 
DWORD APIENTRY NtUserMNDragLeave (VOID)
 
DWORD APIENTRY NtUserMNDragOver (DWORD Unknown0, DWORD Unknown1)
 
DWORD APIENTRY NtUserModifyUserStartupInfoFlags (DWORD Unknown0, DWORD Unknown1)
 
DWORD APIENTRY NtUserQueryUserCounters (DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
 
DWORD APIENTRY NtUserRegisterTasklist (DWORD Unknown0)
 
DWORD APIENTRY NtUserSetConsoleReserveKeys (DWORD Unknown0, DWORD Unknown1)
 
DWORD APIENTRY NtUserSetDbgTag (DWORD Unknown0, DWORD Unknown1)
 
DWORD APIENTRY NtUserSetDbgTagCount (DWORD Unknown0)
 
DWORD APIENTRY NtUserSetRipFlags (DWORD Unknown0)
 
DWORD APIENTRY NtUserDbgWin32HeapFail (DWORD Unknown0, DWORD Unknown1)
 
DWORD APIENTRY NtUserDbgWin32HeapStat (DWORD Unknown0, DWORD Unknown1)
 
BOOL APIENTRY NtUserSetSysColors (int cElements, IN CONST INT *lpaElements, IN CONST COLORREF *lpaRgbValues, FLONG Flags)
 
DWORD APIENTRY NtUserUpdateInstance (DWORD Unknown0, DWORD Unknown1, DWORD Unknown2)
 
BOOL APIENTRY NtUserUserHandleGrantAccess (IN HANDLE hUserHandle, IN HANDLE hJob, IN BOOL bGrant)
 
DWORD APIENTRY NtUserWaitForMsgAndEvent (DWORD Unknown0)
 
DWORD APIENTRY NtUserWin32PoolAllocationStats (DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5)
 
DWORD APIENTRY NtUserYieldTask (VOID)
 
DWORD APIENTRY NtUserGetRawInputBuffer (PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader)
 
DWORD APIENTRY NtUserGetRawInputData (HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader)
 
DWORD APIENTRY NtUserGetRawInputDeviceInfo (HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize)
 
DWORD APIENTRY NtUserGetRawInputDeviceList (PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT puiNumDevices, UINT cbSize)
 
DWORD APIENTRY NtUserGetRegisteredRawInputDevices (PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize)
 
DWORD APIENTRY NtUserHardErrorControl (DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
 
BOOL NTAPI NtUserNotifyProcessCreate (HANDLE NewProcessId, HANDLE ParentThreadId, ULONG dwUnknown, ULONG CreateFlags)
 
NTSTATUS APIENTRY NtUserProcessConnect (IN HANDLE ProcessHandle, OUT PUSERCONNECT pUserConnect, IN ULONG Size)
 
NTSTATUS APIENTRY NtUserQueryInformationThread (IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength)
 
BOOL APIENTRY NtUserRealInternalGetMessage (LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg, BOOL bGMSG)
 
BOOL APIENTRY NtUserRealWaitMessageEx (DWORD dwWakeMask, UINT uTimeout)
 
BOOL APIENTRY NtUserRegisterRawInputDevices (IN PCRAWINPUTDEVICE pRawInputDevices, IN UINT uiNumDevices, IN UINT cbSize)
 
DWORD APIENTRY NtUserResolveDesktopForWOW (DWORD Unknown0)
 
DWORD APIENTRY NtUserSetInformationProcess (DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
 
HDESK FASTCALL IntGetDesktopObjectHandle (PDESKTOP DesktopObject)
 
NTSTATUS APIENTRY NtUserSetInformationThread (IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
 
BOOL APIENTRY NtUserSoundSentry (VOID)
 
DWORD APIENTRY NtUserTestForInteractiveUser (DWORD dwUnknown1)
 
DWORD APIENTRY NtUserRemoteConnect (DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
 
DWORD APIENTRY NtUserRemoteRedrawRectangle (DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
 
DWORD APIENTRY NtUserRemoteRedrawScreen (VOID)
 
DWORD APIENTRY NtUserRemoteStopScreenUpdates (VOID)
 
DWORD APIENTRY NtUserCtxDisplayIOCtl (DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
 
BOOL APIENTRY NtUserLockWindowUpdate (HWND hWnd)
 
DWORD APIENTRY NtUserQuerySendMessage (DWORD Unknown0)
 
BOOL APIENTRY NtUserAddClipboardFormatListener (HWND hwnd)
 
BOOL APIENTRY NtUserRemoveClipboardFormatListener (HWND hwnd)
 
BOOL APIENTRY NtUserGetUpdatedClipboardFormats (PUINT lpuiFormats, UINT cFormats, PUINT pcFormatsOut)
 
LONG_PTR APIENTRY NtUserSetClassLongPtr (VOID)
 
BOOL APIENTRY NtGdiMakeObjectXferable (_In_ HANDLE hHandle, _In_ DWORD dwProcessId)
 
BOOL APIENTRY NtGdiMakeObjectUnXferable (_In_ HANDLE hHandle)
 
DWORD APIENTRY NtDxEngGetRedirectionBitmap (DWORD Unknown0)
 

Macro Definition Documentation

◆ SERVER_TO_CLIENT

#define SERVER_TO_CLIENT (   ptr)     ((PVOID)((ULONG_PTR)ptr - pUserConnect->siClient.ulSharedDelta))

Function Documentation

◆ DBG_DEFAULT_CHANNEL()

DBG_DEFAULT_CHANNEL ( UserMisc  )

◆ IntGetDesktopObjectHandle()

HDESK FASTCALL IntGetDesktopObjectHandle ( PDESKTOP  DesktopObject)

Definition at line 1271 of file desktop.c.

1272{
1274 HDESK hDesk;
1275
1276 ASSERT(DesktopObject);
1277
1279 DesktopObject,
1281 NULL,
1282 (PHANDLE)&hDesk))
1283 {
1284 Status = ObOpenObjectByPointer(DesktopObject,
1285 0,
1286 NULL,
1287 0,
1289 UserMode,
1290 (PHANDLE)&hDesk);
1291 if (!NT_SUCCESS(Status))
1292 {
1293 /* Unable to create a handle */
1294 ERR("Unable to create a desktop handle\n");
1295 return NULL;
1296 }
1297 }
1298 else
1299 {
1300 TRACE("Got handle: 0x%p\n", hDesk);
1301 }
1302
1303 return hDesk;
1304}
LONG NTSTATUS
Definition: precomp.h:26
#define ERR(fmt,...)
Definition: debug.h:110
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
Status
Definition: gdiplustypes.h:25
#define ASSERT(a)
Definition: mode.c:44
#define UserMode
Definition: asm.h:35
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
BOOLEAN NTAPI ObFindHandleForObject(IN PEPROCESS Process, IN PVOID Object, IN POBJECT_TYPE ObjectType, IN POBJECT_HANDLE_INFORMATION HandleInformation, OUT PHANDLE Handle)
Definition: obhandle.c:2856
NTSTATUS NTAPI ObOpenObjectByPointer(IN PVOID Object, IN ULONG HandleAttributes, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PHANDLE Handle)
Definition: obhandle.c:2742
#define TRACE(s)
Definition: solgame.cpp:4
POBJECT_TYPE ExDesktopObjectType
Definition: win32k.c:22
#define PsGetCurrentProcess
Definition: psfuncs.h:17

Referenced by NtUserGetThreadDesktop(), and NtUserSetInformationThread().

◆ NtDxEngGetRedirectionBitmap()

DWORD APIENTRY NtDxEngGetRedirectionBitmap ( DWORD  Unknown0)

Definition at line 983 of file ntstubs.c.

985{
986 STUB;
987 return 0;
988}
#define STUB
Definition: kernel32.h:27

◆ NtGdiMakeObjectUnXferable()

BOOL APIENTRY NtGdiMakeObjectUnXferable ( _In_ HANDLE  hHandle)

Definition at line 974 of file ntstubs.c.

976{
977 STUB;
978 return 0;
979}

◆ NtGdiMakeObjectXferable()

BOOL APIENTRY NtGdiMakeObjectXferable ( _In_ HANDLE  hHandle,
_In_ DWORD  dwProcessId 
)

Definition at line 964 of file ntstubs.c.

967{
968 STUB;
969 return 0;
970}

◆ NtUserAddClipboardFormatListener()

BOOL APIENTRY NtUserAddClipboardFormatListener ( HWND  hwnd)

Definition at line 926 of file ntstubs.c.

929{
930 STUB;
931 return FALSE;
932}
#define FALSE
Definition: types.h:117

◆ NtUserBitBltSysBmp()

BOOL APIENTRY NtUserBitBltSysBmp ( HDC  hdc,
INT  nXDest,
INT  nYDest,
INT  nWidth,
INT  nHeight,
INT  nXSrc,
INT  nYSrc,
DWORD  dwRop 
)

Definition at line 17 of file ntstubs.c.

26{
27 BOOL Ret = FALSE;
29
30 Ret = NtGdiBitBlt( hdc,
31 nXDest,
32 nYDest,
33 nWidth,
34 nHeight,
36 nXSrc,
37 nYSrc,
38 dwRop,
39 0,
40 0);
41
42 UserLeave();
43 return Ret;
44}
unsigned int BOOL
Definition: ntddk_ex.h:94
HDC hSystemBM
Definition: stockobj.c:52
HDC hdc
Definition: main.c:9
__kernel_entry W32KAPI BOOL APIENTRY NtGdiBitBlt(_In_ HDC hdcDst, _In_ INT x, _In_ INT y, _In_ INT cx, _In_ INT cy, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ DWORD rop4, _In_ DWORD crBackColor, _In_ FLONG fl)
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:251
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:242

◆ NtUserCtxDisplayIOCtl()

DWORD APIENTRY NtUserCtxDisplayIOCtl ( DWORD  dwUnknown1,
DWORD  dwUnknown2,
DWORD  dwUnknown3 
)

Definition at line 899 of file ntstubs.c.

903{
904 STUB;
905 return 0;
906}

◆ NtUserDbgWin32HeapFail()

DWORD APIENTRY NtUserDbgWin32HeapFail ( DWORD  Unknown0,
DWORD  Unknown1 
)

Definition at line 266 of file ntstubs.c.

269{
270 STUB
271
272 return 0;
273}

◆ NtUserDbgWin32HeapStat()

DWORD APIENTRY NtUserDbgWin32HeapStat ( DWORD  Unknown0,
DWORD  Unknown1 
)

Definition at line 277 of file ntstubs.c.

280{
281 STUB
282
283 return 0;
284}

◆ NtUserDragObject()

DWORD APIENTRY NtUserDragObject ( HWND  hwnd1,
HWND  hwnd2,
UINT  u1,
DWORD  dw1,
HCURSOR  hc1 
)

Definition at line 48 of file ntstubs.c.

55{
56 STUB
57
58 return 0;
59}

Referenced by DragObject().

◆ NtUserDrawAnimatedRects()

BOOL APIENTRY NtUserDrawAnimatedRects ( HWND  hwnd,
INT  idAni,
RECT lprcFrom,
RECT lprcTo 
)

Definition at line 63 of file ntstubs.c.

68{
69 STUB
70
71 return 0;
72}

Referenced by DrawAnimatedRects().

◆ NtUserEvent()

DWORD APIENTRY NtUserEvent ( DWORD  Unknown0)

Definition at line 76 of file ntstubs.c.

78{
79 STUB
80
81 return 0;
82}

◆ NtUserGetAltTabInfo()

BOOL APIENTRY NtUserGetAltTabInfo ( HWND  hwnd,
INT  iItem,
PALTTABINFO  pati,
LPWSTR  pszItemText,
UINT  cchItemText,
BOOL  Ansi 
)

Definition at line 86 of file ntstubs.c.

93{
94 STUB
95
96 return 0;
97}

Referenced by GetAltTabInfoA(), and GetAltTabInfoW().

◆ NtUserGetRawInputBuffer()

DWORD APIENTRY NtUserGetRawInputBuffer ( PRAWINPUT  pData,
PUINT  pcbSize,
UINT  cbSizeHeader 
)

Definition at line 393 of file ntstubs.c.

397{
398 STUB;
399 return 0;
400}

◆ NtUserGetRawInputData()

DWORD APIENTRY NtUserGetRawInputData ( HRAWINPUT  hRawInput,
UINT  uiCommand,
LPVOID  pData,
PUINT  pcbSize,
UINT  cbSizeHeader 
)

Definition at line 404 of file ntstubs.c.

410{
411 STUB;
412 return 0;
413}

◆ NtUserGetRawInputDeviceInfo()

DWORD APIENTRY NtUserGetRawInputDeviceInfo ( HANDLE  hDevice,
UINT  uiCommand,
LPVOID  pData,
PUINT  pcbSize 
)

Definition at line 417 of file ntstubs.c.

423{
424 STUB;
425 return 0;
426}

◆ NtUserGetRawInputDeviceList()

DWORD APIENTRY NtUserGetRawInputDeviceList ( PRAWINPUTDEVICELIST  pRawInputDeviceList,
PUINT  puiNumDevices,
UINT  cbSize 
)

Definition at line 430 of file ntstubs.c.

434{
435 STUB;
436 return 0;
437}

◆ NtUserGetRegisteredRawInputDevices()

DWORD APIENTRY NtUserGetRegisteredRawInputDevices ( PRAWINPUTDEVICE  pRawInputDevices,
PUINT  puiNumDevices,
UINT  cbSize 
)

Definition at line 441 of file ntstubs.c.

445{
446 STUB;
447 return 0;
448}

◆ NtUserGetUpdatedClipboardFormats()

BOOL APIENTRY NtUserGetUpdatedClipboardFormats ( PUINT  lpuiFormats,
UINT  cFormats,
PUINT  pcFormatsOut 
)

Definition at line 942 of file ntstubs.c.

947{
948 STUB;
949 return FALSE;
950}

◆ NtUserHardErrorControl()

DWORD APIENTRY NtUserHardErrorControl ( DWORD  dwUnknown1,
DWORD  dwUnknown2,
DWORD  dwUnknown3 
)

Definition at line 452 of file ntstubs.c.

456{
457 STUB;
458 return 0;
459}

◆ NtUserInitializeClientPfnArrays()

NTSTATUS APIENTRY NtUserInitializeClientPfnArrays ( PPFNCLIENT  pfnClientA,
PPFNCLIENT  pfnClientW,
PPFNCLIENTWORKER  pfnClientWorker,
HINSTANCE  hmodUser 
)

Definition at line 101 of file ntstubs.c.

106{
108 TRACE("Enter NtUserInitializeClientPfnArrays User32 0x%p\n", hmodUser);
109
110 if (ClientPfnInit) return Status;
111
113
115 {
116 ProbeForRead( pfnClientA, sizeof(PFNCLIENT), 1);
117 ProbeForRead( pfnClientW, sizeof(PFNCLIENT), 1);
122
126
127 hModClient = hmodUser;
129 }
131 {
133 }
135
136 if (!NT_SUCCESS(Status))
137 {
138 ERR("Failed reading Client Pfns from user space.\n");
140 }
141
142 UserLeave();
143 return Status;
144}
#define TRUE
Definition: types.h:120
PSERVERINFO gpsi
Definition: imm.c:18
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
Definition: exintrin.c:102
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
HINSTANCE hModClient
Definition: ntuser.c:25
BOOL ClientPfnInit
Definition: ntuser.c:26
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:159
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:34
static PFNCLIENT pfnClientA
Definition: regcontrol.c:15
static PFNCLIENT pfnClientW
Definition: regcontrol.c:16
static PFNCLIENTWORKER pfnClientWorker
Definition: regcontrol.c:17
#define STATUS_SUCCESS
Definition: shellext.h:65
PFNCLIENT apfnClientA
Definition: ntuser.h:1056
PFNCLIENT apfnClientW
Definition: ntuser.h:1057
WNDPROC aStoCidPfn[FNID_NUMSERVERPROC]
Definition: ntuser.h:1054
PFNCLIENTWORKER apfnClientWorker
Definition: ntuser.h:1058
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
Definition: error.c:31

Referenced by RegisterClientPFN().

◆ NtUserInitTask()

DWORD APIENTRY NtUserInitTask ( DWORD  Unknown0,
DWORD  Unknown1,
DWORD  Unknown2,
DWORD  Unknown3,
DWORD  Unknown4,
DWORD  Unknown5,
DWORD  Unknown6,
DWORD  Unknown7,
DWORD  Unknown8,
DWORD  Unknown9,
DWORD  Unknown10,
DWORD  Unknown11 
)

Definition at line 148 of file ntstubs.c.

161{
162 STUB
163
164 return 0;
165}

◆ NtUserLockWindowUpdate()

BOOL APIENTRY NtUserLockWindowUpdate ( HWND  hWnd)

Definition at line 912 of file ntstubs.c.

913{
914 STUB;
915 return FALSE;
916}

Referenced by LockWindowUpdate().

◆ NtUserMNDragLeave()

DWORD APIENTRY NtUserMNDragLeave ( VOID  )

Definition at line 169 of file ntstubs.c.

170{
171 STUB
172
173 return 0;
174}

◆ NtUserMNDragOver()

DWORD APIENTRY NtUserMNDragOver ( DWORD  Unknown0,
DWORD  Unknown1 
)

Definition at line 178 of file ntstubs.c.

181{
182 STUB
183
184 return 0;
185}

◆ NtUserModifyUserStartupInfoFlags()

DWORD APIENTRY NtUserModifyUserStartupInfoFlags ( DWORD  Unknown0,
DWORD  Unknown1 
)

Definition at line 189 of file ntstubs.c.

192{
193 STUB
194
195 return 0;
196}

◆ NtUserNotifyProcessCreate()

BOOL NTAPI NtUserNotifyProcessCreate ( HANDLE  NewProcessId,
HANDLE  ParentThreadId,
ULONG  dwUnknown,
ULONG  CreateFlags 
)

Definition at line 463 of file ntstubs.c.

468{
469 // STUB;
470 TRACE("NtUserNotifyProcessCreate is UNIMPLEMENTED\n");
471 return FALSE;
472}

Referenced by CSR_SERVER_DLL_INIT().

◆ NtUserProcessConnect()

NTSTATUS APIENTRY NtUserProcessConnect ( IN HANDLE  ProcessHandle,
OUT PUSERCONNECT  pUserConnect,
IN ULONG  Size 
)

Definition at line 476 of file ntstubs.c.

480{
483 PPROCESSINFO W32Process;
484
485 TRACE("NtUserProcessConnect\n");
486
487 if (pUserConnect == NULL ||
488 Size != sizeof(*pUserConnect))
489 {
490 return STATUS_UNSUCCESSFUL;
491 }
492
493 /* Get the process object the user handle was referencing */
497 UserMode,
498 (PVOID*)&Process,
499 NULL);
500 if (!NT_SUCCESS(Status)) return Status;
501
503
504 /* Get Win32 process information */
505 W32Process = PsGetProcessWin32Process(Process);
506
508 {
509 UINT i;
510
511 // FIXME: Check that pUserConnect->ulVersion == USER_VERSION;
512 // FIXME: Check the value of pUserConnect->dwDispatchCount.
513
514 ProbeForWrite(pUserConnect, sizeof(*pUserConnect), sizeof(PVOID));
515
516 // FIXME: Instead of assuming that the mapping of the heap desktop
517 // also holds there, we **MUST** create and map instead the shared
518 // section! Its client base must be stored in W32Process->pClientBase.
519 // What is currently done (ReactOS-specific only), is that within the
520 // IntUserHeapCommitRoutine()/MapGlobalUserHeap() routines we assume
521 // it's going to be also called early, so that we manually add a very
522 // first memory mapping that corresponds to the "global user heap",
523 // and that we use instead of a actual win32 "shared USER section"
524 // (see slide 29 of https://paper.bobylive.com/Meeting_Papers/BlackHat/USA-2011/BH_US_11_Mandt_win32k_Slides.pdf )
525
526 pUserConnect->siClient.ulSharedDelta =
529
530#define SERVER_TO_CLIENT(ptr) \
531 ((PVOID)((ULONG_PTR)ptr - pUserConnect->siClient.ulSharedDelta))
532
533 ASSERT(gpsi);
535
536 pUserConnect->siClient.psi = SERVER_TO_CLIENT(gpsi);
537 pUserConnect->siClient.aheList = SERVER_TO_CLIENT(gHandleTable);
538 pUserConnect->siClient.pDispInfo = NULL;
539
540 // NOTE: kernel server should also have a SHAREDINFO gSharedInfo;
541 // FIXME: These USER window-proc data should be used somehow!
542
543 pUserConnect->siClient.DefWindowMsgs.maxMsgs = 0;
544 pUserConnect->siClient.DefWindowMsgs.abMsgs = NULL;
545 pUserConnect->siClient.DefWindowSpecMsgs.maxMsgs = 0;
546 pUserConnect->siClient.DefWindowSpecMsgs.abMsgs = NULL;
547
548 for (i = 0; i < ARRAYSIZE(pUserConnect->siClient.awmControl); ++i)
549 {
550 pUserConnect->siClient.awmControl[i].maxMsgs = 0;
551 pUserConnect->siClient.awmControl[i].abMsgs = NULL;
552 }
553#undef SERVER_TO_CLIENT
554 }
556 {
558 }
559 _SEH2_END;
560
561 if (!NT_SUCCESS(Status))
563
564 UserLeave();
565
566 /* Dereference the process object */
568
569 return Status;
570}
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
#define ULONG_PTR
Definition: config.h:101
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
Definition: exintrin.c:143
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:223
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define PROCESS_VM_OPERATION
Definition: pstypes.h:160
unsigned int UINT
Definition: ndis.h:50
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:403
PVOID NTAPI PsGetProcessWin32Process(PEPROCESS Process)
Definition: process.c:1193
POBJECT_TYPE PsProcessType
Definition: process.c:20
#define SERVER_TO_CLIENT(ptr)
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:235
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
Definition: obref.c:494
W32HEAP_USER_MAPPING HeapMappings
Definition: win32.h:290
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
PUSER_HANDLE_TABLE gHandleTable
Definition: object.c:13
#define ObDereferenceObject
Definition: obfuncs.h:203

Referenced by ClientThreadSetupHelper(), Init(), START_TEST(), and UserClientConnect().

◆ NtUserQueryInformationThread()

NTSTATUS APIENTRY NtUserQueryInformationThread ( IN HANDLE  ThreadHandle,
IN USERTHREADINFOCLASS  ThreadInformationClass,
OUT PVOID  ThreadInformation,
IN ULONG  ThreadInformationLength 
)

Definition at line 574 of file ntstubs.c.

578{
581
582 /* Allow only CSRSS to perform this operation */
585
587
588 /* Get the Thread */
589 Status = ObReferenceObjectByHandle(ThreadHandle,
592 UserMode,
593 (PVOID)&Thread,
594 NULL);
595 if (!NT_SUCCESS(Status)) goto Quit;
596
598 {
599 default:
600 {
601 STUB;
603 break;
604 }
605 }
606
608
609Quit:
610 UserLeave();
611 return Status;
612}
PEPROCESS gpepCSRSS
Definition: csr.c:15
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2653
#define THREAD_QUERY_INFORMATION
Definition: pstypes.h:149
_In_ THREADINFOCLASS ThreadInformationClass
Definition: psfuncs.h:840
POBJECT_TYPE PsThreadType
Definition: thread.c:20
#define STATUS_NOT_IMPLEMENTED
Definition: ntstatus.h:239
#define STATUS_ACCESS_DENIED
Definition: udferr_usr.h:145

◆ NtUserQuerySendMessage()

DWORD APIENTRY NtUserQuerySendMessage ( DWORD  Unknown0)

Definition at line 919 of file ntstubs.c.

920{
921 STUB;
922
923 return 0;
924}

◆ NtUserQueryUserCounters()

DWORD APIENTRY NtUserQueryUserCounters ( DWORD  Unknown0,
DWORD  Unknown1,
DWORD  Unknown2,
DWORD  Unknown3,
DWORD  Unknown4 
)

Definition at line 200 of file ntstubs.c.

206{
207 STUB
208
209 return 0;
210}

◆ NtUserRealInternalGetMessage()

BOOL APIENTRY NtUserRealInternalGetMessage ( LPMSG  lpMsg,
HWND  hWnd,
UINT  wMsgFilterMin,
UINT  wMsgFilterMax,
UINT  wRemoveMsg,
BOOL  bGMSG 
)

Definition at line 616 of file ntstubs.c.

623{
624 STUB;
625 return 0;
626}

Referenced by ResetMessagePumpHook().

◆ NtUserRealWaitMessageEx()

BOOL APIENTRY NtUserRealWaitMessageEx ( DWORD  dwWakeMask,
UINT  uTimeout 
)

Definition at line 630 of file ntstubs.c.

633{
634 STUB;
635 return 0;
636}

Referenced by ResetMessagePumpHook().

◆ NtUserRegisterRawInputDevices()

BOOL APIENTRY NtUserRegisterRawInputDevices ( IN PCRAWINPUTDEVICE  pRawInputDevices,
IN UINT  uiNumDevices,
IN UINT  cbSize 
)

Definition at line 640 of file ntstubs.c.

644{
645 STUB;
646 return 0;
647}

◆ NtUserRegisterTasklist()

DWORD APIENTRY NtUserRegisterTasklist ( DWORD  Unknown0)

Definition at line 214 of file ntstubs.c.

216{
217 STUB
218
219 return 0;
220}

Referenced by RegisterTasklist().

◆ NtUserRemoteConnect()

DWORD APIENTRY NtUserRemoteConnect ( DWORD  dwUnknown1,
DWORD  dwUnknown2,
DWORD  dwUnknown3 
)

Definition at line 860 of file ntstubs.c.

864{
865 STUB;
866 return 0;
867}

◆ NtUserRemoteRedrawRectangle()

DWORD APIENTRY NtUserRemoteRedrawRectangle ( DWORD  dwUnknown1,
DWORD  dwUnknown2,
DWORD  dwUnknown3,
DWORD  dwUnknown4 
)

Definition at line 871 of file ntstubs.c.

876{
877 STUB;
878 return 0;
879}

◆ NtUserRemoteRedrawScreen()

DWORD APIENTRY NtUserRemoteRedrawScreen ( VOID  )

Definition at line 883 of file ntstubs.c.

884{
885 STUB;
886 return 0;
887}

◆ NtUserRemoteStopScreenUpdates()

DWORD APIENTRY NtUserRemoteStopScreenUpdates ( VOID  )

Definition at line 891 of file ntstubs.c.

892{
893 STUB;
894 return 0;
895}

◆ NtUserRemoveClipboardFormatListener()

BOOL APIENTRY NtUserRemoveClipboardFormatListener ( HWND  hwnd)

Definition at line 934 of file ntstubs.c.

937{
938 STUB;
939 return FALSE;
940}

◆ NtUserResolveDesktopForWOW()

DWORD APIENTRY NtUserResolveDesktopForWOW ( DWORD  Unknown0)

Definition at line 650 of file ntstubs.c.

651{
652 STUB
653 return 0;
654}

◆ NtUserSetClassLongPtr()

LONG_PTR APIENTRY NtUserSetClassLongPtr ( VOID  )

Definition at line 954 of file ntstubs.c.

956{
957 STUB;
958 return 0;
959}

◆ NtUserSetConsoleReserveKeys()

DWORD APIENTRY NtUserSetConsoleReserveKeys ( DWORD  Unknown0,
DWORD  Unknown1 
)

Definition at line 224 of file ntstubs.c.

227{
228 STUB
229
230 return 0;
231}

◆ NtUserSetDbgTag()

DWORD APIENTRY NtUserSetDbgTag ( DWORD  Unknown0,
DWORD  Unknown1 
)

Definition at line 235 of file ntstubs.c.

238{
239 STUB;
240
241 return 0;
242}

◆ NtUserSetDbgTagCount()

DWORD APIENTRY NtUserSetDbgTagCount ( DWORD  Unknown0)

Definition at line 246 of file ntstubs.c.

248{
249 STUB;
250
251 return 0;
252}

◆ NtUserSetInformationProcess()

DWORD APIENTRY NtUserSetInformationProcess ( DWORD  dwUnknown1,
DWORD  dwUnknown2,
DWORD  dwUnknown3,
DWORD  dwUnknown4 
)

Definition at line 658 of file ntstubs.c.

663{
664 STUB;
665 return 0;
666}

◆ NtUserSetInformationThread()

NTSTATUS APIENTRY NtUserSetInformationThread ( IN HANDLE  ThreadHandle,
IN USERTHREADINFOCLASS  ThreadInformationClass,
IN PVOID  ThreadInformation,
IN ULONG  ThreadInformationLength 
)

Definition at line 673 of file ntstubs.c.

677{
680
681 /* Allow only CSRSS to perform this operation */
684
686
687 /* Get the Thread */
688 Status = ObReferenceObjectByHandle(ThreadHandle,
691 UserMode,
692 (PVOID)&Thread,
693 NULL);
694 if (!NT_SUCCESS(Status)) goto Quit;
695
697 {
699 {
700 ULONG CapturedFlags = 0;
701
702 TRACE("Shutdown initiated\n");
703
704 if (ThreadInformationLength != sizeof(CapturedFlags))
705 {
707 break;
708 }
709
710 /* Capture the caller value */
713 {
714 ProbeForWrite(ThreadInformation, sizeof(CapturedFlags), __alignof(CapturedFlags));
715 CapturedFlags = *(PULONG)ThreadInformation;
716 }
718 {
720 _SEH2_YIELD(break);
721 }
722 _SEH2_END;
723
724 Status = UserInitiateShutdown(Thread, &CapturedFlags);
725
726 /* Return the modified value to the caller */
728 {
729 *(PULONG)ThreadInformation = CapturedFlags;
730 }
732 {
734 }
735 _SEH2_END;
736
737 break;
738 }
739
741 {
742 NTSTATUS ShutdownStatus;
743
744 TRACE("Shutdown ended\n");
745
746 if (ThreadInformationLength != sizeof(ShutdownStatus))
747 {
749 break;
750 }
751
752 /* Capture the caller value */
755 {
756 ProbeForRead(ThreadInformation, sizeof(ShutdownStatus), __alignof(ShutdownStatus));
757 ShutdownStatus = *(NTSTATUS*)ThreadInformation;
758 }
760 {
762 _SEH2_YIELD(break);
763 }
764 _SEH2_END;
765
766 Status = UserEndShutdown(Thread, ShutdownStatus);
767 break;
768 }
769
771 {
772 HANDLE CsrPortHandle;
773
774
775 TRACE("Set CSR API Port for Win32k\n");
776 if (ThreadInformationLength != sizeof(CsrPortHandle))
777 {
779 break;
780 }
781
782 /* Capture the caller value */
785 {
786 ProbeForRead(ThreadInformation, sizeof(CsrPortHandle), __alignof(CsrPortHandle));
787 CsrPortHandle = *(PHANDLE)ThreadInformation;
788 }
790 {
792 _SEH2_YIELD(break);
793 }
794 _SEH2_END;
795
796 Status = InitCsrApiPort(CsrPortHandle);
797 break;
798 }
799
801 {
802 HDESK hdesk;
803
804 if (Thread != PsGetCurrentThread())
805 {
807 break;
808 }
809
812
813 break;
814 }
816 {
817 if (Thread != PsGetCurrentThread())
818 {
820 break;
821 }
822
824 break;
825 }
826 default:
827 {
828 STUB;
830 break;
831 }
832 }
833
835
836Quit:
837 UserLeave();
838 return Status;
839}
NTSTATUS InitCsrApiPort(IN HANDLE CsrPortHandle)
Definition: csr.c:38
#define PsGetCurrentThread()
Definition: env_spec_w32.h:81
@ UserThreadEndShutdown
Definition: ntuser.h:74
@ UserThreadRestoreDesktop
Definition: ntuser.h:77
@ UserThreadInitiateShutdown
Definition: ntuser.h:73
@ UserThreadCsrApiPort
Definition: ntuser.h:78
@ UserThreadUseActiveDesktop
Definition: ntuser.h:75
_In_ THREADINFOCLASS _In_ ULONG ThreadInformationLength
Definition: psfuncs.h:843
#define THREAD_SET_INFORMATION
Definition: nt_native.h:1337
HDESK FASTCALL IntGetDesktopObjectHandle(PDESKTOP DesktopObject)
Definition: desktop.c:1271
#define _SEH2_YIELD(__stmt)
Definition: pseh2_64.h:162
uint32_t * PULONG
Definition: typedefs.h:59
uint32_t ULONG
Definition: typedefs.h:59
#define STATUS_INFO_LENGTH_MISMATCH
Definition: udferr_usr.h:133
PDESKTOP gpdeskInputDesktop
Definition: desktop.c:35
BOOL IntSetThreadDesktop(IN HDESK hDesktop, IN BOOL FreeOnFailure)
Definition: desktop.c:3260
NTSTATUS UserEndShutdown(IN PETHREAD Thread, IN NTSTATUS ShutdownStatus)
Definition: shutdown.c:290
NTSTATUS UserInitiateShutdown(IN PETHREAD Thread, IN OUT PULONG pFlags)
Definition: shutdown.c:166

Referenced by CSR_API(), EndNowThreadProc(), UserClientConnect(), UserExitReactOS(), and UserServerHardError().

◆ NtUserSetRipFlags()

DWORD APIENTRY NtUserSetRipFlags ( DWORD  Unknown0)

Definition at line 256 of file ntstubs.c.

258{
259 STUB;
260
261 return 0;
262}

◆ NtUserSetSysColors()

BOOL APIENTRY NtUserSetSysColors ( int  cElements,
IN CONST INT lpaElements,
IN CONST COLORREF lpaRgbValues,
FLONG  Flags 
)

Definition at line 288 of file ntstubs.c.

293{
294 DWORD Ret = TRUE;
295
296 if (cElements == 0)
297 return TRUE;
298
299 /* We need this check to prevent overflow later */
300 if ((ULONG)cElements >= 0x40000000)
301 {
303 return FALSE;
304 }
305
307
309 {
310 ProbeForRead(lpaElements, cElements * sizeof(INT), 1);
311 ProbeForRead(lpaRgbValues, cElements * sizeof(COLORREF), 1);
312
313 IntSetSysColors(cElements, lpaElements, lpaRgbValues);
314 }
316 {
318 Ret = FALSE;
319 }
320 _SEH2_END;
321
322 if (Ret)
323 {
325
327 }
328
329 UserLeave();
330 return Ret;
331}
unsigned long DWORD
Definition: ntddk_ex.h:95
VOID FASTCALL IntSetSysColors(UINT nColors, CONST INT *Elements, CONST COLORREF *Colors)
Definition: stockobj.c:300
int32_t INT
Definition: typedefs.h:58
VOID APIENTRY UserRedrawDesktop(VOID)
Definition: desktop.c:1599
BOOL FASTCALL UserSendNotifyMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: message.c:2040
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
Definition: error.c:22
DWORD COLORREF
Definition: windef.h:300
#define ERROR_NOACCESS
Definition: winerror.h:578
#define HWND_BROADCAST
Definition: winuser.h:1204
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1626

Referenced by SetSysColors().

◆ NtUserSoundSentry()

BOOL APIENTRY NtUserSoundSentry ( VOID  )

Definition at line 843 of file ntstubs.c.

844{
845 STUB;
846 return 0;
847}

◆ NtUserTestForInteractiveUser()

DWORD APIENTRY NtUserTestForInteractiveUser ( DWORD  dwUnknown1)

Definition at line 851 of file ntstubs.c.

853{
854 STUB;
855 return 0;
856}

◆ NtUserUpdateInstance()

DWORD APIENTRY NtUserUpdateInstance ( DWORD  Unknown0,
DWORD  Unknown1,
DWORD  Unknown2 
)

Definition at line 335 of file ntstubs.c.

339{
340 STUB
341
342 return 0;
343}

◆ NtUserUserHandleGrantAccess()

BOOL APIENTRY NtUserUserHandleGrantAccess ( IN HANDLE  hUserHandle,
IN HANDLE  hJob,
IN BOOL  bGrant 
)

Definition at line 347 of file ntstubs.c.

351{
352 STUB
353
354 return 0;
355}

◆ NtUserWaitForMsgAndEvent()

DWORD APIENTRY NtUserWaitForMsgAndEvent ( DWORD  Unknown0)

Definition at line 359 of file ntstubs.c.

361{
362 STUB
363
364 return 0;
365}

◆ NtUserWin32PoolAllocationStats()

DWORD APIENTRY NtUserWin32PoolAllocationStats ( DWORD  Unknown0,
DWORD  Unknown1,
DWORD  Unknown2,
DWORD  Unknown3,
DWORD  Unknown4,
DWORD  Unknown5 
)

Definition at line 369 of file ntstubs.c.

376{
377 STUB
378
379 return 0;
380}

◆ NtUserYieldTask()

DWORD APIENTRY NtUserYieldTask ( VOID  )

Definition at line 384 of file ntstubs.c.

385{
386 STUB
387
388 return 0;
389}