ReactOS 0.4.15-dev-7968-g24a56f8
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, http://msdn.microsoft.com/en-us/library/ms532278(VS.85).aspx
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,
39 0,
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,
157 DWORD Unknown8,
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
345BOOL
348 IN HANDLE hUserHandle,
349 IN HANDLE hJob,
350 IN BOOL bGrant)
351{
352 STUB
353
354 return 0;
355}
356
357DWORD
360 DWORD Unknown0)
361{
362 STUB
363
364 return 0;
365}
366
367DWORD
370 DWORD Unknown0,
371 DWORD Unknown1,
372 DWORD Unknown2,
376{
377 STUB
378
379 return 0;
380}
381
382DWORD
385{
386 STUB
387
388 return 0;
389}
390
391DWORD
394 PRAWINPUT pData,
395 PUINT pcbSize,
396 UINT cbSizeHeader)
397{
398 STUB;
399 return 0;
400}
401
402DWORD
405 HRAWINPUT hRawInput,
406 UINT uiCommand,
408 PUINT pcbSize,
409 UINT cbSizeHeader)
410{
411 STUB;
412 return 0;
413}
414
415DWORD
418 HANDLE hDevice,
419 UINT uiCommand,
421 PUINT pcbSize
422)
423{
424 STUB;
425 return 0;
426}
427
428DWORD
431 PRAWINPUTDEVICELIST pRawInputDeviceList,
432 PUINT puiNumDevices,
433 UINT cbSize)
434{
435 STUB;
436 return 0;
437}
438
439DWORD
442 PRAWINPUTDEVICE pRawInputDevices,
443 PUINT puiNumDevices,
444 UINT cbSize)
445{
446 STUB;
447 return 0;
448}
449
450DWORD
453 DWORD dwUnknown1,
454 DWORD dwUnknown2,
455 DWORD dwUnknown3)
456{
457 STUB;
458 return 0;
459}
460
461BOOL
462NTAPI
464 HANDLE NewProcessId,
465 HANDLE ParentThreadId,
466 ULONG dwUnknown,
467 ULONG CreateFlags)
468{
469 // STUB;
470 TRACE("NtUserNotifyProcessCreate is UNIMPLEMENTED\n");
471 return FALSE;
472}
473
478 OUT PUSERCONNECT pUserConnect,
479 IN ULONG Size)
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}
571
576 OUT PVOID ThreadInformation,
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}
613
614BOOL
617 LPMSG lpMsg,
618 HWND hWnd,
619 UINT wMsgFilterMin,
620 UINT wMsgFilterMax,
621 UINT wRemoveMsg,
622 BOOL bGMSG)
623{
624 STUB;
625 return 0;
626}
627
628BOOL
631 DWORD dwWakeMask,
632 UINT uTimeout)
633{
634 STUB;
635 return 0;
636}
637
638BOOL
641 IN PCRAWINPUTDEVICE pRawInputDevices,
642 IN UINT uiNumDevices,
643 IN UINT cbSize)
644{
645 STUB;
646 return 0;
647}
648
651{
652 STUB
653 return 0;
654}
655
656DWORD
659 DWORD dwUnknown1,
660 DWORD dwUnknown2,
661 DWORD dwUnknown3,
662 DWORD dwUnknown4)
663{
664 STUB;
665 return 0;
666}
667
668HDESK FASTCALL
670
675 IN PVOID ThreadInformation,
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}
840
841BOOL
844{
845 STUB;
846 return 0;
847}
848
849DWORD
852 DWORD dwUnknown1)
853{
854 STUB;
855 return 0;
856}
857
858DWORD
861 DWORD dwUnknown1,
862 DWORD dwUnknown2,
863 DWORD dwUnknown3)
864{
865 STUB;
866 return 0;
867}
868
869DWORD
872 DWORD dwUnknown1,
873 DWORD dwUnknown2,
874 DWORD dwUnknown3,
875 DWORD dwUnknown4)
876{
877 STUB;
878 return 0;
879}
880
881DWORD
884{
885 STUB;
886 return 0;
887}
888
889DWORD
892{
893 STUB;
894 return 0;
895}
896
897DWORD
900 DWORD dwUnknown1,
901 DWORD dwUnknown2,
902 DWORD dwUnknown3)
903{
904 STUB;
905 return 0;
906}
907
908/*
909 * @unimplemented
910 */
913{
914 STUB;
915 return FALSE;
916}
917
920{
921 STUB;
922
923 return 0;
924}
925
927 HWND hwnd
928)
929{
930 STUB;
931 return FALSE;
932}
933
935 HWND hwnd
936)
937{
938 STUB;
939 return FALSE;
940}
941
943 PUINT lpuiFormats,
944 UINT cFormats,
945 PUINT pcFormatsOut
946)
947{
948 STUB;
949 return FALSE;
950}
951
955 VOID)
956{
957 STUB;
958 return 0;
959}
960
961// Yes, I know, these do not belong here, just tell me where to put them
962BOOL
965 _In_ HANDLE hHandle,
966 _In_ DWORD dwProcessId)
967{
968 STUB;
969 return 0;
970}
971
972BOOL
975 _In_ HANDLE hHandle)
976{
977 STUB;
978 return 0;
979}
980
981DWORD
984 DWORD Unknown0)
985{
986 STUB;
987 return 0;
988}
989
990/* EOF */
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
HWND hWnd
Definition: settings.c:17
LONG NTSTATUS
Definition: precomp.h:26
#define ERR(fmt,...)
Definition: debug.h:110
#define DBG_DEFAULT_CHANNEL(ch)
Definition: debug.h:103
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 NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
#define APIENTRY
Definition: api.h:79
PSERVERINFO gpsi
Definition: imm.c:18
#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
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
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:25
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
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define THREAD_QUERY_INFORMATION
Definition: pstypes.h:149
#define PROCESS_VM_OPERATION
Definition: pstypes.h:160
enum _USERTHREADINFOCLASS USERTHREADINFOCLASS
@ 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
@ Unknown7
Definition: winternl.h:927
@ Unknown10
Definition: winternl.h:930
@ Unknown9
Definition: winternl.h:929
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:92
#define _In_
Definition: ms_sal.h:308
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
unsigned int * PUINT
Definition: ndis.h:50
unsigned int UINT
Definition: ndis.h:50
#define UserMode
Definition: asm.h:35
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:403
_In_ THREADINFOCLASS _In_ ULONG ThreadInformationLength
Definition: psfuncs.h:843
_In_ THREADINFOCLASS ThreadInformationClass
Definition: psfuncs.h:840
#define FASTCALL
Definition: nt_native.h:50
#define THREAD_SET_INFORMATION
Definition: nt_native.h:1337
unsigned long FLONG
Definition: ntbasedef.h:366
__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)
PVOID NTAPI PsGetProcessWin32Process(PEPROCESS Process)
Definition: process.c:1193
POBJECT_TYPE PsProcessType
Definition: process.c:20
POBJECT_TYPE PsThreadType
Definition: thread.c:20
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
#define STATUS_NOT_IMPLEMENTED
Definition: ntstatus.h:239
DWORD APIENTRY NtUserSetRipFlags(DWORD Unknown0)
Definition: ntstubs.c:256
DWORD APIENTRY NtUserYieldTask(VOID)
Definition: ntstubs.c:384
#define SERVER_TO_CLIENT(ptr)
DWORD APIENTRY NtUserGetRawInputBuffer(PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader)
Definition: ntstubs.c:393
LONG_PTR APIENTRY NtUserSetClassLongPtr(VOID)
Definition: ntstubs.c:954
DWORD APIENTRY NtUserRemoteRedrawRectangle(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: ntstubs.c:871
BOOL NTAPI NtUserNotifyProcessCreate(HANDLE NewProcessId, HANDLE ParentThreadId, ULONG dwUnknown, ULONG CreateFlags)
Definition: ntstubs.c:463
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:476
DWORD APIENTRY NtUserMNDragOver(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:178
DWORD APIENTRY NtUserCtxDisplayIOCtl(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:899
BOOL APIENTRY NtUserUserHandleGrantAccess(IN HANDLE hUserHandle, IN HANDLE hJob, IN BOOL bGrant)
Definition: ntstubs.c:347
BOOL APIENTRY NtUserAddClipboardFormatListener(HWND hwnd)
Definition: ntstubs.c:926
DWORD APIENTRY NtUserSetDbgTag(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:235
DWORD APIENTRY NtUserResolveDesktopForWOW(DWORD Unknown0)
Definition: ntstubs.c:650
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:1271
DWORD APIENTRY NtUserRemoteConnect(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:860
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:964
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:942
DWORD APIENTRY NtUserQuerySendMessage(DWORD Unknown0)
Definition: ntstubs.c:919
BOOL APIENTRY NtUserRemoveClipboardFormatListener(HWND hwnd)
Definition: ntstubs.c:934
NTSTATUS APIENTRY NtUserQueryInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:574
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:912
NTSTATUS APIENTRY NtUserSetInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:673
DWORD APIENTRY NtUserQueryUserCounters(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
Definition: ntstubs.c:200
BOOL APIENTRY NtUserSoundSentry(VOID)
Definition: ntstubs.c:843
DWORD APIENTRY NtUserWin32PoolAllocationStats(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5)
Definition: ntstubs.c:369
DWORD APIENTRY NtDxEngGetRedirectionBitmap(DWORD Unknown0)
Definition: ntstubs.c:983
BOOL APIENTRY NtUserRealWaitMessageEx(DWORD dwWakeMask, UINT uTimeout)
Definition: ntstubs.c:630
DWORD APIENTRY NtUserGetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize)
Definition: ntstubs.c:441
DWORD APIENTRY NtUserModifyUserStartupInfoFlags(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:189
DWORD APIENTRY NtUserRegisterTasklist(DWORD Unknown0)
Definition: ntstubs.c:214
DWORD APIENTRY NtUserGetRawInputDeviceInfo(HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize)
Definition: ntstubs.c:417
DWORD APIENTRY NtUserGetRawInputDeviceList(PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT puiNumDevices, UINT cbSize)
Definition: ntstubs.c:430
BOOL APIENTRY NtGdiMakeObjectUnXferable(_In_ HANDLE hHandle)
Definition: ntstubs.c:974
DWORD APIENTRY NtUserGetRawInputData(HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader)
Definition: ntstubs.c:404
DWORD APIENTRY NtUserRemoteRedrawScreen(VOID)
Definition: ntstubs.c:883
DWORD APIENTRY NtUserTestForInteractiveUser(DWORD dwUnknown1)
Definition: ntstubs.c:851
DWORD APIENTRY NtUserDbgWin32HeapFail(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:266
DWORD APIENTRY NtUserHardErrorControl(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:452
DWORD APIENTRY NtUserWaitForMsgAndEvent(DWORD Unknown0)
Definition: ntstubs.c:359
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:616
DWORD APIENTRY NtUserSetInformationProcess(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: ntstubs.c:658
DWORD APIENTRY NtUserRemoteStopScreenUpdates(VOID)
Definition: ntstubs.c:891
BOOL APIENTRY NtUserRegisterRawInputDevices(IN PCRAWINPUTDEVICE pRawInputDevices, IN UINT uiNumDevices, IN UINT cbSize)
Definition: ntstubs.c:640
HINSTANCE hModClient
Definition: ntuser.c:25
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:251
BOOL ClientPfnInit
Definition: ntuser.c:26
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:235
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:242
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
#define CONST
Definition: pedump.c:81
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:159
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:34
#define _SEH2_YIELD(__stmt)
Definition: pseh2_64.h:162
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:290
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
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
uint32_t * PULONG
Definition: typedefs.h:59
#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:4533
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
Definition: error.c:31
VOID APIENTRY UserRedrawDesktop(VOID)
Definition: desktop.c:1599
PDESKTOP gpdeskInputDesktop
Definition: desktop.c:35
BOOL IntSetThreadDesktop(IN HDESK hDesktop, IN BOOL FreeOnFailure)
Definition: desktop.c:3260
BOOL FASTCALL UserSendNotifyMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: message.c:2040
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:22
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
DWORD COLORREF
Definition: windef.h:300
HICON HCURSOR
Definition: windef.h:299
#define ERROR_NOACCESS
Definition: winerror.h:578
#define HWND_BROADCAST
Definition: winuser.h:1204
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1626
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define ObDereferenceObject
Definition: obfuncs.h:203
#define PsGetCurrentProcess
Definition: psfuncs.h:17
WCHAR * LPWSTR
Definition: xmlstorage.h:184