ReactOS 0.4.17-dev-806-gffa4164
ntstubs.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Win32k subsystem
4 * PURPOSE: Native User stubs
5 * FILE: win32ss/user/ntuser/ntstubs.c
6 * PROGRAMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
7 */
8
9#include <win32k.h>
11
12//
13// Works like BitBlt, https://learn.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-bitblt
14//
15BOOL
18 HDC hdc,
19 INT nXDest,
20 INT nYDest,
21 INT nWidth,
22 INT nHeight,
23 INT nXSrc,
24 INT nYSrc,
25 DWORD dwRop )
26{
27 BOOL Ret = FALSE;
29
30 Ret = NtGdiBitBlt( hdc,
31 nXDest,
32 nYDest,
33 nWidth,
34 nHeight,
36 nXSrc,
37 nYSrc,
38 dwRop,
40 0);
41
42 UserLeave();
43 return Ret;
44}
45
49 HWND hwnd1,
50 HWND hwnd2,
51 UINT u1,
52 DWORD dw1,
53 HCURSOR hc1
54)
55{
56 STUB
57
58 return 0;
59}
60
61BOOL
64 HWND hwnd,
65 INT idAni,
66 RECT *lprcFrom,
67 RECT *lprcTo)
68{
69 STUB
70
71 return 0;
72}
73
77 DWORD Unknown0)
78{
79 STUB
80
81 return 0;
82}
83
84BOOL
87 HWND hwnd,
88 INT iItem,
89 PALTTABINFO pati,
90 LPWSTR pszItemText,
91 UINT cchItemText,
92 BOOL Ansi)
93{
94 STUB
95
96 return 0;
97}
98
105 HINSTANCE hmodUser)
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}
145
146DWORD
149 DWORD Unknown0,
150 DWORD Unknown1,
151 DWORD Unknown2,
156 DWORD Unknown7,
157 DWORD Unknown8,
158 DWORD Unknown9,
159 DWORD Unknown10,
160 DWORD Unknown11)
161{
162 STUB
163
164 return 0;
165}
166
167DWORD
170{
171 STUB
172
173 return 0;
174}
175
176DWORD
179 DWORD Unknown0,
180 DWORD Unknown1)
181{
182 STUB
183
184 return 0;
185}
186
187DWORD
190 DWORD Unknown0,
191 DWORD Unknown1)
192{
193 STUB
194
195 return 0;
196}
197
198DWORD
201 DWORD Unknown0,
202 DWORD Unknown1,
203 DWORD Unknown2,
206{
207 STUB
208
209 return 0;
210}
211
212DWORD
215 DWORD Unknown0)
216{
217 STUB
218
219 return 0;
220}
221
222DWORD
225 DWORD Unknown0,
226 DWORD Unknown1)
227{
228 STUB
229
230 return 0;
231}
232
233DWORD
236 DWORD Unknown0,
237 DWORD Unknown1)
238{
239 STUB;
240
241 return 0;
242}
243
244DWORD
247 DWORD Unknown0)
248{
249 STUB;
250
251 return 0;
252}
253
254DWORD
257 DWORD Unknown0)
258{
259 STUB;
260
261 return 0;
262}
263
264DWORD
267 DWORD Unknown0,
268 DWORD Unknown1)
269{
270 STUB
271
272 return 0;
273}
274
275DWORD
278 DWORD Unknown0,
279 DWORD Unknown1)
280{
281 STUB
282
283 return 0;
284}
285
286BOOL
289 int cElements,
290 IN CONST INT *lpaElements,
291 IN CONST COLORREF *lpaRgbValues,
292 FLONG Flags)
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}
332
333DWORD
336 DWORD Unknown0,
337 DWORD Unknown1,
338 DWORD Unknown2)
339{
340 STUB
341
342 return 0;
343}
344
345DWORD
348 DWORD Unknown0)
349{
350 STUB
351
352 return 0;
353}
354
355DWORD
358 DWORD Unknown0,
359 DWORD Unknown1,
360 DWORD Unknown2,
364{
365 STUB
366
367 return 0;
368}
369
370DWORD
373{
374 STUB
375
376 return 0;
377}
378
379DWORD
382 PRAWINPUT pData,
383 PUINT pcbSize,
384 UINT cbSizeHeader)
385{
386 STUB;
387 return 0;
388}
389
390DWORD
393 HRAWINPUT hRawInput,
394 UINT uiCommand,
396 PUINT pcbSize,
397 UINT cbSizeHeader)
398{
399 STUB;
400 return 0;
401}
402
403DWORD
406 PRAWINPUTDEVICE pRawInputDevices,
407 PUINT puiNumDevices,
408 UINT cbSize)
409{
410 STUB;
411 return 0;
412}
413
414DWORD
417 DWORD dwUnknown1,
418 DWORD dwUnknown2,
419 DWORD dwUnknown3)
420{
421 STUB;
422 return 0;
423}
424
425BOOL
426NTAPI
428 HANDLE NewProcessId,
429 HANDLE ParentThreadId,
430 ULONG dwUnknown,
431 ULONG CreateFlags)
432{
433 // STUB;
434 TRACE("NtUserNotifyProcessCreate is UNIMPLEMENTED\n");
435 return FALSE;
436}
437
442 OUT PUSERCONNECT pUserConnect,
443 IN ULONG Size)
444{
447 PPROCESSINFO W32Process;
448
449 TRACE("NtUserProcessConnect\n");
450
451 if (pUserConnect == NULL ||
452 Size != sizeof(*pUserConnect))
453 {
454 return STATUS_UNSUCCESSFUL;
455 }
456
457 /* Get the process object the user handle was referencing */
461 UserMode,
462 (PVOID*)&Process,
463 NULL);
464 if (!NT_SUCCESS(Status)) return Status;
465
467
468 /* Get Win32 process information */
469 W32Process = PsGetProcessWin32Process(Process);
470
472 {
473 UINT i;
474
475 // FIXME: Check that pUserConnect->ulVersion == USER_VERSION;
476 // FIXME: Check the value of pUserConnect->dwDispatchCount.
477
478 ProbeForWrite(pUserConnect, sizeof(*pUserConnect), sizeof(PVOID));
479
480 // FIXME: Instead of assuming that the mapping of the heap desktop
481 // also holds there, we **MUST** create and map instead the shared
482 // section! Its client base must be stored in W32Process->pClientBase.
483 // What is currently done (ReactOS-specific only), is that within the
484 // IntUserHeapCommitRoutine()/MapGlobalUserHeap() routines we assume
485 // it's going to be also called early, so that we manually add a very
486 // first memory mapping that corresponds to the "global user heap",
487 // and that we use instead of a actual win32 "shared USER section"
488 // (see slide 29 of https://paper.bobylive.com/Meeting_Papers/BlackHat/USA-2011/BH_US_11_Mandt_win32k_Slides.pdf )
489
490 pUserConnect->siClient.ulSharedDelta =
493
494#define SERVER_TO_CLIENT(ptr) \
495 ((PVOID)((ULONG_PTR)ptr - pUserConnect->siClient.ulSharedDelta))
496
497 ASSERT(gpsi);
499
500 pUserConnect->siClient.psi = SERVER_TO_CLIENT(gpsi);
501 pUserConnect->siClient.aheList = SERVER_TO_CLIENT(gHandleTable);
502 pUserConnect->siClient.pDispInfo = NULL;
503
504 // NOTE: kernel server should also have a SHAREDINFO gSharedInfo;
505 // FIXME: These USER window-proc data should be used somehow!
506
507 pUserConnect->siClient.DefWindowMsgs.maxMsgs = 0;
508 pUserConnect->siClient.DefWindowMsgs.abMsgs = NULL;
509 pUserConnect->siClient.DefWindowSpecMsgs.maxMsgs = 0;
510 pUserConnect->siClient.DefWindowSpecMsgs.abMsgs = NULL;
511
512 for (i = 0; i < ARRAYSIZE(pUserConnect->siClient.awmControl); ++i)
513 {
514 pUserConnect->siClient.awmControl[i].maxMsgs = 0;
515 pUserConnect->siClient.awmControl[i].abMsgs = NULL;
516 }
517#undef SERVER_TO_CLIENT
518 }
520 {
522 }
523 _SEH2_END;
524
525 if (!NT_SUCCESS(Status))
527
528 UserLeave();
529
530 /* Dereference the process object */
532
533 return Status;
534}
535
540 OUT PVOID ThreadInformation,
542{
545
546 /* Allow only CSRSS to perform this operation */
549
551
552 /* Get the Thread */
553 Status = ObReferenceObjectByHandle(ThreadHandle,
556 UserMode,
557 (PVOID)&Thread,
558 NULL);
559 if (!NT_SUCCESS(Status)) goto Quit;
560
562 {
563 default:
564 {
565 STUB;
567 break;
568 }
569 }
570
572
573Quit:
574 UserLeave();
575 return Status;
576}
577
578BOOL
581 LPMSG lpMsg,
582 HWND hWnd,
583 UINT wMsgFilterMin,
584 UINT wMsgFilterMax,
585 UINT wRemoveMsg,
586 BOOL bGMSG)
587{
588 STUB;
589 return 0;
590}
591
592BOOL
595 DWORD dwWakeMask,
596 UINT uTimeout)
597{
598 STUB;
599 return 0;
600}
601
602BOOL
605 IN PCRAWINPUTDEVICE pRawInputDevices,
606 IN UINT uiNumDevices,
607 IN UINT cbSize)
608{
609 STUB;
610 return 0;
611}
612
615{
616 STUB
617 return 0;
618}
619
620DWORD
623 DWORD dwUnknown1,
624 DWORD dwUnknown2,
625 DWORD dwUnknown3,
626 DWORD dwUnknown4)
627{
628 STUB;
629 return 0;
630}
631
632HDESK FASTCALL
634
639 IN PVOID ThreadInformation,
641{
644
645 /* Allow only CSRSS to perform this operation */
648
650
651 /* Get the Thread */
652 Status = ObReferenceObjectByHandle(ThreadHandle,
655 UserMode,
656 (PVOID)&Thread,
657 NULL);
658 if (!NT_SUCCESS(Status)) goto Quit;
659
661 {
663 {
664 ULONG CapturedFlags = 0;
665
666 TRACE("Shutdown initiated\n");
667
668 if (ThreadInformationLength != sizeof(CapturedFlags))
669 {
671 break;
672 }
673
674 /* Capture the caller value */
677 {
678 ProbeForWrite(ThreadInformation, sizeof(CapturedFlags), __alignof(CapturedFlags));
679 CapturedFlags = *(PULONG)ThreadInformation;
680 }
682 {
684 _SEH2_YIELD(break);
685 }
686 _SEH2_END;
687
688 Status = UserInitiateShutdown(Thread, &CapturedFlags);
689
690 /* Return the modified value to the caller */
692 {
693 *(PULONG)ThreadInformation = CapturedFlags;
694 }
696 {
698 }
699 _SEH2_END;
700
701 break;
702 }
703
705 {
706 NTSTATUS ShutdownStatus;
707
708 TRACE("Shutdown ended\n");
709
710 if (ThreadInformationLength != sizeof(ShutdownStatus))
711 {
713 break;
714 }
715
716 /* Capture the caller value */
719 {
720 ProbeForRead(ThreadInformation, sizeof(ShutdownStatus), __alignof(ShutdownStatus));
721 ShutdownStatus = *(NTSTATUS*)ThreadInformation;
722 }
724 {
726 _SEH2_YIELD(break);
727 }
728 _SEH2_END;
729
730 Status = UserEndShutdown(Thread, ShutdownStatus);
731 break;
732 }
733
735 {
736 HANDLE CsrPortHandle;
737
738
739 TRACE("Set CSR API Port for Win32k\n");
740 if (ThreadInformationLength != sizeof(CsrPortHandle))
741 {
743 break;
744 }
745
746 /* Capture the caller value */
749 {
750 ProbeForRead(ThreadInformation, sizeof(CsrPortHandle), __alignof(CsrPortHandle));
751 CsrPortHandle = *(PHANDLE)ThreadInformation;
752 }
754 {
756 _SEH2_YIELD(break);
757 }
758 _SEH2_END;
759
760 Status = InitCsrApiPort(CsrPortHandle);
761 break;
762 }
763
765 {
766 HDESK hdesk;
767
768 if (Thread != PsGetCurrentThread())
769 {
771 break;
772 }
773
776
777 break;
778 }
780 {
781 if (Thread != PsGetCurrentThread())
782 {
784 break;
785 }
786
788 break;
789 }
790 default:
791 {
792 STUB;
794 break;
795 }
796 }
797
799
800Quit:
801 UserLeave();
802 return Status;
803}
804
805BOOL
808{
809 STUB;
810 return 0;
811}
812
813DWORD
816 DWORD dwUnknown1)
817{
818 STUB;
819 return 0;
820}
821
822DWORD
825 DWORD dwUnknown1,
826 DWORD dwUnknown2,
827 DWORD dwUnknown3)
828{
829 STUB;
830 return 0;
831}
832
833DWORD
836 DWORD dwUnknown1,
837 DWORD dwUnknown2,
838 DWORD dwUnknown3,
839 DWORD dwUnknown4)
840{
841 STUB;
842 return 0;
843}
844
845DWORD
848{
849 STUB;
850 return 0;
851}
852
853DWORD
856{
857 STUB;
858 return 0;
859}
860
861DWORD
864 DWORD dwUnknown1,
865 DWORD dwUnknown2,
866 DWORD dwUnknown3)
867{
868 STUB;
869 return 0;
870}
871
872/*
873 * @unimplemented
874 */
877{
878 STUB;
879 return FALSE;
880}
881
884{
885 STUB;
886
887 return 0;
888}
889
891 HWND hwnd
892)
893{
894 STUB;
895 return FALSE;
896}
897
899 HWND hwnd
900)
901{
902 STUB;
903 return FALSE;
904}
905
907 PUINT lpuiFormats,
908 UINT cFormats,
909 PUINT pcFormatsOut
910)
911{
912 STUB;
913 return FALSE;
914}
915
916// Yes, I know, these do not belong here, just tell me where to put them
917BOOL
920 _In_ HANDLE hHandle,
922{
923 STUB;
924 return 0;
925}
926
927BOOL
930 _In_ HANDLE hHandle)
931{
932 STUB;
933 return 0;
934}
935
936DWORD
939 DWORD Unknown0)
940{
941 STUB;
942 return 0;
943}
944
945/* EOF */
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
HWND hWnd
Definition: settings.c:17
LONG NTSTATUS
Definition: precomp.h:26
#define ERR(fmt,...)
Definition: precomp.h:57
#define DBG_DEFAULT_CHANNEL(ch)
Definition: debug.h:106
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD IN DWORD Unknown6
Definition: conport.c:40
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD Unknown5
Definition: conport.c:39
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
Definition: conport.c:37
NTSTATUS InitCsrApiPort(IN HANDLE CsrPortHandle)
Definition: csr.c:38
PEPROCESS gpepCSRSS
Definition: csr.c:15
#define STATUS_NOT_IMPLEMENTED
Definition: d3dkmdt.h:42
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
#define APIENTRY
Definition: api.h:79
#define ULONG_PTR
Definition: config.h:101
#define PsGetCurrentThread()
Definition: env_spec_w32.h:81
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
Definition: exintrin.c:102
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
Definition: exintrin.c:143
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2653
_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:24
GLdouble u1
Definition: glext.h:8308
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
unsigned int UINT
Definition: sysinfo.c:13
PSERVERINFO gpsi
Definition: imm.c:18
#define THREAD_QUERY_INFORMATION
Definition: pstypes.h:145
#define PROCESS_VM_OPERATION
Definition: pstypes.h:156
enum _USERTHREADINFOCLASS USERTHREADINFOCLASS
@ UserThreadEndShutdown
Definition: ntuser.h:77
@ UserThreadRestoreDesktop
Definition: ntuser.h:80
@ UserThreadInitiateShutdown
Definition: ntuser.h:76
@ UserThreadCsrApiPort
Definition: ntuser.h:81
@ UserThreadUseActiveDesktop
Definition: ntuser.h:78
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:90
VOID FASTCALL IntSetSysColors(UINT nColors, CONST INT *Elements, CONST COLORREF *Colors)
Definition: stockobj.c:300
HDC hSystemBM
Definition: stockobj.c:52
#define STUB
Definition: kernel32.h:27
#define ASSERT(a)
Definition: mode.c:44
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
unsigned int * PUINT
Definition: ndis.h:50
#define UserMode
Definition: asm.h:39
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:407
_In_ THREADINFOCLASS _In_ ULONG ThreadInformationLength
Definition: psfuncs.h:866
_In_ THREADINFOCLASS ThreadInformationClass
Definition: psfuncs.h:863
#define _In_
Definition: no_sal2.h:158
#define FASTCALL
Definition: nt_native.h:50
#define THREAD_SET_INFORMATION
Definition: nt_native.h:1340
unsigned long FLONG
Definition: ntbasedef.h:378
PVOID NTAPI PsGetProcessWin32Process(PEPROCESS Process)
Definition: process.c:1223
POBJECT_TYPE PsProcessType
Definition: process.c:20
POBJECT_TYPE PsThreadType
Definition: thread.c:20
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
DWORD APIENTRY NtUserSetRipFlags(DWORD Unknown0)
Definition: ntstubs.c:256
DWORD APIENTRY NtUserYieldTask(VOID)
Definition: ntstubs.c:372
#define SERVER_TO_CLIENT(ptr)
DWORD APIENTRY NtUserGetRawInputBuffer(PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader)
Definition: ntstubs.c:381
DWORD APIENTRY NtUserRemoteRedrawRectangle(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: ntstubs.c:835
BOOL NTAPI NtUserNotifyProcessCreate(HANDLE NewProcessId, HANDLE ParentThreadId, ULONG dwUnknown, ULONG CreateFlags)
Definition: ntstubs.c:427
DWORD APIENTRY NtUserDbgWin32HeapStat(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:277
BOOL APIENTRY NtUserGetAltTabInfo(HWND hwnd, INT iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText, BOOL Ansi)
Definition: ntstubs.c:86
DWORD APIENTRY NtUserMNDragLeave(VOID)
Definition: ntstubs.c:169
NTSTATUS APIENTRY NtUserProcessConnect(IN HANDLE ProcessHandle, OUT PUSERCONNECT pUserConnect, IN ULONG Size)
Definition: ntstubs.c:440
DWORD APIENTRY NtUserMNDragOver(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:178
DWORD APIENTRY NtUserCtxDisplayIOCtl(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:863
BOOL APIENTRY NtUserAddClipboardFormatListener(HWND hwnd)
Definition: ntstubs.c:890
DWORD APIENTRY NtUserSetDbgTag(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:235
DWORD APIENTRY NtUserResolveDesktopForWOW(DWORD Unknown0)
Definition: ntstubs.c:614
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: ntstubs.c:148
DWORD APIENTRY NtUserSetDbgTagCount(DWORD Unknown0)
Definition: ntstubs.c:246
HDESK FASTCALL IntGetDesktopObjectHandle(PDESKTOP DesktopObject)
Definition: desktop.c:1299
DWORD APIENTRY NtUserRemoteConnect(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:824
NTSTATUS APIENTRY NtUserInitializeClientPfnArrays(PPFNCLIENT pfnClientA, PPFNCLIENT pfnClientW, PPFNCLIENTWORKER pfnClientWorker, HINSTANCE hmodUser)
Definition: ntstubs.c:101
DWORD APIENTRY NtUserDragObject(HWND hwnd1, HWND hwnd2, UINT u1, DWORD dw1, HCURSOR hc1)
Definition: ntstubs.c:48
BOOL APIENTRY NtGdiMakeObjectXferable(_In_ HANDLE hHandle, _In_ DWORD dwProcessId)
Definition: ntstubs.c:919
BOOL APIENTRY NtUserDrawAnimatedRects(HWND hwnd, INT idAni, RECT *lprcFrom, RECT *lprcTo)
Definition: ntstubs.c:63
BOOL APIENTRY NtUserGetUpdatedClipboardFormats(PUINT lpuiFormats, UINT cFormats, PUINT pcFormatsOut)
Definition: ntstubs.c:906
DWORD APIENTRY NtUserQuerySendMessage(DWORD Unknown0)
Definition: ntstubs.c:883
BOOL APIENTRY NtUserRemoveClipboardFormatListener(HWND hwnd)
Definition: ntstubs.c:898
NTSTATUS APIENTRY NtUserQueryInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:538
BOOL APIENTRY NtUserSetSysColors(int cElements, IN CONST INT *lpaElements, IN CONST COLORREF *lpaRgbValues, FLONG Flags)
Definition: ntstubs.c:288
DWORD APIENTRY NtUserUpdateInstance(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2)
Definition: ntstubs.c:335
BOOL APIENTRY NtUserBitBltSysBmp(HDC hdc, INT nXDest, INT nYDest, INT nWidth, INT nHeight, INT nXSrc, INT nYSrc, DWORD dwRop)
Definition: ntstubs.c:17
DWORD APIENTRY NtUserSetConsoleReserveKeys(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:224
BOOL APIENTRY NtUserLockWindowUpdate(HWND hWnd)
Definition: ntstubs.c:876
NTSTATUS APIENTRY NtUserSetInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:637
DWORD APIENTRY NtUserQueryUserCounters(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
Definition: ntstubs.c:200
BOOL APIENTRY NtUserSoundSentry(VOID)
Definition: ntstubs.c:807
DWORD APIENTRY NtUserWin32PoolAllocationStats(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5)
Definition: ntstubs.c:357
DWORD APIENTRY NtDxEngGetRedirectionBitmap(DWORD Unknown0)
Definition: ntstubs.c:938
BOOL APIENTRY NtUserRealWaitMessageEx(DWORD dwWakeMask, UINT uTimeout)
Definition: ntstubs.c:594
DWORD APIENTRY NtUserGetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize)
Definition: ntstubs.c:405
DWORD APIENTRY NtUserModifyUserStartupInfoFlags(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:189
DWORD APIENTRY NtUserRegisterTasklist(DWORD Unknown0)
Definition: ntstubs.c:214
BOOL APIENTRY NtGdiMakeObjectUnXferable(_In_ HANDLE hHandle)
Definition: ntstubs.c:929
DWORD APIENTRY NtUserGetRawInputData(HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader)
Definition: ntstubs.c:392
DWORD APIENTRY NtUserRemoteRedrawScreen(VOID)
Definition: ntstubs.c:847
DWORD APIENTRY NtUserTestForInteractiveUser(DWORD dwUnknown1)
Definition: ntstubs.c:815
DWORD APIENTRY NtUserDbgWin32HeapFail(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:266
DWORD APIENTRY NtUserHardErrorControl(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:416
DWORD APIENTRY NtUserWaitForMsgAndEvent(DWORD Unknown0)
Definition: ntstubs.c:347
DWORD APIENTRY NtUserEvent(DWORD Unknown0)
Definition: ntstubs.c:76
BOOL APIENTRY NtUserRealInternalGetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg, BOOL bGMSG)
Definition: ntstubs.c:580
DWORD APIENTRY NtUserSetInformationProcess(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: ntstubs.c:622
DWORD APIENTRY NtUserRemoteStopScreenUpdates(VOID)
Definition: ntstubs.c:855
BOOL APIENTRY NtUserRegisterRawInputDevices(IN PCRAWINPUTDEVICE pRawInputDevices, IN UINT uiNumDevices, IN UINT cbSize)
Definition: ntstubs.c:604
HINSTANCE hModClient
Definition: ntuser.c:25
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255
BOOL ClientPfnInit
Definition: ntuser.c:26
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:241
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:247
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:493
#define CONST
Definition: pedump.c:81
__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)
_In_ DWORD dwProcessId
Definition: shlwapi.h:193
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:204
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:104
#define _SEH2_END
Definition: pseh2_64.h:194
#define _SEH2_TRY
Definition: pseh2_64.h:93
#define _SEH2_YIELD(__stmt)
Definition: pseh2_64.h:207
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
#define TRACE(s)
Definition: solgame.cpp:4
W32HEAP_USER_MAPPING HeapMappings
Definition: win32.h:292
PFNCLIENT apfnClientA
Definition: ntuser.h:1060
PFNCLIENT apfnClientW
Definition: ntuser.h:1061
WNDPROC aStoCidPfn[FNID_NUMSERVERPROC]
Definition: ntuser.h:1058
PFNCLIENTWORKER apfnClientWorker
Definition: ntuser.h:1062
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
uint32_t * PULONG
Definition: typedefs.h:59
uint16_t * LPWSTR
Definition: typedefs.h:56
#define NTAPI
Definition: typedefs.h:36
int32_t INT
Definition: typedefs.h:58
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
#define STATUS_ACCESS_DENIED
Definition: udferr_usr.h:145
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
#define STATUS_INFO_LENGTH_MISMATCH
Definition: udferr_usr.h:133
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4539
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
Definition: error.c:30
VOID APIENTRY UserRedrawDesktop(VOID)
Definition: desktop.c:1619
PDESKTOP gpdeskInputDesktop
Currently active desktop.
Definition: desktop.c:51
BOOL IntSetThreadDesktop(IN HDESK hDesktop, IN BOOL FreeOnFailure)
Definition: desktop.c:3400
BOOL FASTCALL UserSendNotifyMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: message.c:2090
PUSER_HANDLE_TABLE gHandleTable
Definition: object.c:13
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
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
Definition: error.c:21
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
DWORD COLORREF
Definition: windef.h:100
HICON HCURSOR
Definition: windef.h:99
#define ERROR_NOACCESS
Definition: winerror.h:902
#define CLR_INVALID
Definition: wingdi.h:883
#define HWND_BROADCAST
Definition: winuser.h:1215
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1654
#define ObDereferenceObject
Definition: obfuncs.h:203
#define PsGetCurrentProcess
Definition: psfuncs.h:17