ReactOS  0.4.15-dev-3442-gc05a45e
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>
10 DBG_DEFAULT_CHANNEL(UserMisc);
11 
12 DWORD
15 {
16  STUB
17  return 0;
18 }
19 
20 //
21 // Works like BitBlt, http://msdn.microsoft.com/en-us/library/ms532278(VS.85).aspx
22 //
23 BOOL
26  HDC hdc,
27  INT nXDest,
28  INT nYDest,
29  INT nWidth,
30  INT nHeight,
31  INT nXSrc,
32  INT nYSrc,
33  DWORD dwRop )
34 {
35  BOOL Ret = FALSE;
37 
38  Ret = NtGdiBitBlt( hdc,
39  nXDest,
40  nYDest,
41  nWidth,
42  nHeight,
43  hSystemBM,
44  nXSrc,
45  nYSrc,
46  dwRop,
47  0,
48  0);
49 
50  UserLeave();
51  return Ret;
52 }
53 
56 NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCount)
57 {
58  STUB;
60 }
61 
62 DWORD
65  HWND hwnd1,
66  HWND hwnd2,
67  UINT u1,
68  DWORD dw1,
69  HCURSOR hc1
70 )
71 {
72  STUB
73 
74  return 0;
75 }
76 
77 BOOL
80  HWND hwnd,
81  INT idAni,
82  RECT *lprcFrom,
83  RECT *lprcTo)
84 {
85  STUB
86 
87  return 0;
88 }
89 
90 DWORD
93  DWORD Unknown0)
94 {
95  STUB
96 
97  return 0;
98 }
99 
100 BOOL
101 APIENTRY
103  HWND hwnd,
104  INT iItem,
105  PALTTABINFO pati,
106  LPWSTR pszItemText,
107  UINT cchItemText,
108  BOOL Ansi)
109 {
110  STUB
111 
112  return 0;
113 }
114 
115 NTSTATUS
116 APIENTRY
121  HINSTANCE hmodUser)
122 {
124  TRACE("Enter NtUserInitializeClientPfnArrays User32 0x%p\n", hmodUser);
125 
126  if (ClientPfnInit) return Status;
127 
129 
130  _SEH2_TRY
131  {
132  ProbeForRead( pfnClientA, sizeof(PFNCLIENT), 1);
133  ProbeForRead( pfnClientW, sizeof(PFNCLIENT), 1);
138 
142 
143  hModClient = hmodUser;
145  }
147  {
149  }
150  _SEH2_END
151 
152  if (!NT_SUCCESS(Status))
153  {
154  ERR("Failed reading Client Pfns from user space.\n");
156  }
157 
158  UserLeave();
159  return Status;
160 }
161 
162 DWORD
163 APIENTRY
165  DWORD Unknown0,
166  DWORD Unknown1,
167  DWORD Unknown2,
168  DWORD Unknown3,
169  DWORD Unknown4,
170  DWORD Unknown5,
171  DWORD Unknown6,
172  DWORD Unknown7,
173  DWORD Unknown8,
174  DWORD Unknown9,
176  DWORD Unknown11)
177 {
178  STUB
179 
180  return 0;
181 }
182 
183 DWORD
184 APIENTRY
186 {
187  STUB
188 
189  return 0;
190 }
191 
192 DWORD
193 APIENTRY
195  DWORD Unknown0,
196  DWORD Unknown1)
197 {
198  STUB
199 
200  return 0;
201 }
202 
203 DWORD
204 APIENTRY
206  DWORD Unknown0,
207  DWORD Unknown1)
208 {
209  STUB
210 
211  return 0;
212 }
213 
214 DWORD
215 APIENTRY
217  DWORD Unknown0,
218  DWORD Unknown1,
219  DWORD Unknown2,
220  DWORD Unknown3,
221  DWORD Unknown4)
222 {
223  STUB
224 
225  return 0;
226 }
227 
228 DWORD
229 APIENTRY
231  DWORD Unknown0)
232 {
233  STUB
234 
235  return 0;
236 }
237 
238 DWORD
239 APIENTRY
241  DWORD Unknown0,
242  DWORD Unknown1)
243 {
244  STUB
245 
246  return 0;
247 }
248 
249 DWORD
250 APIENTRY
252  DWORD Unknown0,
253  DWORD Unknown1)
254 {
255  STUB;
256 
257  return 0;
258 }
259 
260 DWORD
261 APIENTRY
263  DWORD Unknown0)
264 {
265  STUB;
266 
267  return 0;
268 }
269 
270 DWORD
271 APIENTRY
273  DWORD Unknown0)
274 {
275  STUB;
276 
277  return 0;
278 }
279 
280 DWORD
281 APIENTRY
283  DWORD Unknown0,
284  DWORD Unknown1)
285 {
286  STUB
287 
288  return 0;
289 }
290 
291 DWORD
292 APIENTRY
294  DWORD Unknown0,
295  DWORD Unknown1)
296 {
297  STUB
298 
299  return 0;
300 }
301 
302 BOOL
303 APIENTRY
305  int cElements,
306  IN CONST INT *lpaElements,
307  IN CONST COLORREF *lpaRgbValues,
308  FLONG Flags)
309 {
310  DWORD Ret = TRUE;
311 
312  if (cElements == 0)
313  return TRUE;
314 
315  /* We need this check to prevent overflow later */
316  if ((ULONG)cElements >= 0x40000000)
317  {
319  return FALSE;
320  }
321 
323 
324  _SEH2_TRY
325  {
326  ProbeForRead(lpaElements, cElements * sizeof(INT), 1);
327  ProbeForRead(lpaRgbValues, cElements * sizeof(COLORREF), 1);
328 
329  IntSetSysColors(cElements, lpaElements, lpaRgbValues);
330  }
332  {
334  Ret = FALSE;
335  }
336  _SEH2_END;
337 
338  if (Ret)
339  {
341 
343  }
344 
345  UserLeave();
346  return Ret;
347 }
348 
349 DWORD
350 APIENTRY
352  HIMC hIMC,
353  DWORD Unknown1,
354  LPVOID pClientImc)
355 {
356  STUB
357 
358  return 0;
359 }
360 
361 DWORD
362 APIENTRY
364  DWORD Unknown0,
365  DWORD Unknown1,
366  DWORD Unknown2)
367 {
368  STUB
369 
370  return 0;
371 }
372 
373 BOOL
374 APIENTRY
376  IN HANDLE hUserHandle,
377  IN HANDLE hJob,
378  IN BOOL bGrant)
379 {
380  STUB
381 
382  return 0;
383 }
384 
385 DWORD
386 APIENTRY
388  DWORD Unknown0)
389 {
390  STUB
391 
392  return 0;
393 }
394 
395 DWORD
396 APIENTRY
398  DWORD Unknown0,
399  DWORD Unknown1,
400  DWORD Unknown2,
401  DWORD Unknown3,
402  DWORD Unknown4,
403  DWORD Unknown5)
404 {
405  STUB
406 
407  return 0;
408 }
409 
410 DWORD
411 APIENTRY
413 {
414  STUB
415 
416  return 0;
417 }
418 
419 HIMC
420 APIENTRY
422 {
423  STUB;
424  return NULL;
425 }
426 
427 DWORD
428 APIENTRY
430  PRAWINPUT pData,
431  PUINT pcbSize,
432  UINT cbSizeHeader)
433 {
434  STUB;
435  return 0;
436 }
437 
438 DWORD
439 APIENTRY
441  HRAWINPUT hRawInput,
442  UINT uiCommand,
443  LPVOID pData,
444  PUINT pcbSize,
445  UINT cbSizeHeader)
446 {
447  STUB;
448  return 0;
449 }
450 
451 DWORD
452 APIENTRY
454  HANDLE hDevice,
455  UINT uiCommand,
456  LPVOID pData,
457  PUINT pcbSize
458 )
459 {
460  STUB;
461  return 0;
462 }
463 
464 DWORD
465 APIENTRY
467  PRAWINPUTDEVICELIST pRawInputDeviceList,
468  PUINT puiNumDevices,
469  UINT cbSize)
470 {
471  STUB;
472  return 0;
473 }
474 
475 DWORD
476 APIENTRY
478  PRAWINPUTDEVICE pRawInputDevices,
479  PUINT puiNumDevices,
480  UINT cbSize)
481 {
482  STUB;
483  return 0;
484 }
485 
486 DWORD
487 APIENTRY
489  DWORD dwUnknown1,
490  DWORD dwUnknown2,
491  DWORD dwUnknown3)
492 {
493  STUB;
494  return 0;
495 }
496 
497 BOOL
498 NTAPI
500  HANDLE NewProcessId,
501  HANDLE ParentThreadId,
502  ULONG dwUnknown,
503  ULONG CreateFlags)
504 {
505  // STUB;
506  TRACE("NtUserNotifyProcessCreate is UNIMPLEMENTED\n");
507  return FALSE;
508 }
509 
510 NTSTATUS
511 APIENTRY
514  OUT PUSERCONNECT pUserConnect,
515  IN ULONG Size)
516 {
519  PPROCESSINFO W32Process;
520 
521  TRACE("NtUserProcessConnect\n");
522 
523  if (pUserConnect == NULL ||
524  Size != sizeof(*pUserConnect))
525  {
526  return STATUS_UNSUCCESSFUL;
527  }
528 
529  /* Get the process object the user handle was referencing */
532  *PsProcessType,
533  UserMode,
534  (PVOID*)&Process,
535  NULL);
536  if (!NT_SUCCESS(Status)) return Status;
537 
538  UserEnterShared();
539 
540  /* Get Win32 process information */
541  W32Process = PsGetProcessWin32Process(Process);
542 
543  _SEH2_TRY
544  {
545  UINT i;
546 
547  // FIXME: Check that pUserConnect->ulVersion == USER_VERSION;
548  // FIXME: Check the value of pUserConnect->dwDispatchCount.
549 
550  ProbeForWrite(pUserConnect, sizeof(*pUserConnect), sizeof(PVOID));
551 
552  // FIXME: Instead of assuming that the mapping of the heap desktop
553  // also holds there, we **MUST** create and map instead the shared
554  // section! Its client base must be stored in W32Process->pClientBase.
555  // What is currently done (ReactOS-specific only), is that within the
556  // IntUserHeapCommitRoutine()/MapGlobalUserHeap() routines we assume
557  // it's going to be also called early, so that we manually add a very
558  // first memory mapping that corresponds to the "global user heap",
559  // and that we use instead of a actual win32 "shared USER section"
560  // (see slide 29 of https://paper.bobylive.com/Meeting_Papers/BlackHat/USA-2011/BH_US_11_Mandt_win32k_Slides.pdf )
561 
562  pUserConnect->siClient.ulSharedDelta =
563  (ULONG_PTR)W32Process->HeapMappings.KernelMapping -
564  (ULONG_PTR)W32Process->HeapMappings.UserMapping;
565 
566 #define SERVER_TO_CLIENT(ptr) \
567  ((PVOID)((ULONG_PTR)ptr - pUserConnect->siClient.ulSharedDelta))
568 
569  ASSERT(gpsi);
571 
572  pUserConnect->siClient.psi = SERVER_TO_CLIENT(gpsi);
573  pUserConnect->siClient.aheList = SERVER_TO_CLIENT(gHandleTable);
574  pUserConnect->siClient.pDispInfo = NULL;
575 
576  // NOTE: kernel server should also have a SHAREDINFO gSharedInfo;
577  // FIXME: These USER window-proc data should be used somehow!
578 
579  pUserConnect->siClient.DefWindowMsgs.maxMsgs = 0;
580  pUserConnect->siClient.DefWindowMsgs.abMsgs = NULL;
581  pUserConnect->siClient.DefWindowSpecMsgs.maxMsgs = 0;
582  pUserConnect->siClient.DefWindowSpecMsgs.abMsgs = NULL;
583 
584  for (i = 0; i < ARRAYSIZE(pUserConnect->siClient.awmControl); ++i)
585  {
586  pUserConnect->siClient.awmControl[i].maxMsgs = 0;
587  pUserConnect->siClient.awmControl[i].abMsgs = NULL;
588  }
589 #undef SERVER_TO_CLIENT
590  }
592  {
594  }
595  _SEH2_END;
596 
597  if (!NT_SUCCESS(Status))
599 
600  UserLeave();
601 
602  /* Dereference the process object */
604 
605  return Status;
606 }
607 
608 NTSTATUS
609 APIENTRY
612  OUT PVOID ThreadInformation,
614 {
617 
618  /* Allow only CSRSS to perform this operation */
620  return STATUS_ACCESS_DENIED;
621 
623 
624  /* Get the Thread */
625  Status = ObReferenceObjectByHandle(ThreadHandle,
627  *PsThreadType,
628  UserMode,
629  (PVOID)&Thread,
630  NULL);
631  if (!NT_SUCCESS(Status)) goto Quit;
632 
633  switch (ThreadInformationClass)
634  {
635  default:
636  {
637  STUB;
639  break;
640  }
641  }
642 
644 
645 Quit:
646  UserLeave();
647  return Status;
648 }
649 
650 DWORD
651 APIENTRY
653  HIMC hIMC,
654  DWORD dwUnknown2)
655 {
656  TRACE("NtUserQueryInputContext(%p, 0x%lX)\n", hIMC, dwUnknown2);
657  return 0;
658 }
659 
660 BOOL
661 APIENTRY
663  LPMSG lpMsg,
664  HWND hWnd,
665  UINT wMsgFilterMin,
666  UINT wMsgFilterMax,
667  UINT wRemoveMsg,
668  BOOL bGMSG)
669 {
670  STUB;
671  return 0;
672 }
673 
674 BOOL
675 APIENTRY
677  DWORD dwWakeMask,
678  UINT uTimeout)
679 {
680  STUB;
681  return 0;
682 }
683 
684 BOOL
685 APIENTRY
687  IN PCRAWINPUTDEVICE pRawInputDevices,
688  IN UINT uiNumDevices,
689  IN UINT cbSize)
690 {
691  STUB;
692  return 0;
693 }
694 
697 {
698  STUB
699  return 0;
700 }
701 
702 DWORD
703 APIENTRY
705  DWORD dwUnknown1,
706  DWORD dwUnknown2,
707  DWORD dwUnknown3,
708  DWORD dwUnknown4)
709 {
710  STUB;
711  return 0;
712 }
713 
714 HDESK FASTCALL
715 IntGetDesktopObjectHandle(PDESKTOP DesktopObject);
716 
717 NTSTATUS
718 APIENTRY
721  IN PVOID ThreadInformation,
723 {
726 
727  /* Allow only CSRSS to perform this operation */
729  return STATUS_ACCESS_DENIED;
730 
732 
733  /* Get the Thread */
734  Status = ObReferenceObjectByHandle(ThreadHandle,
736  *PsThreadType,
737  UserMode,
738  (PVOID)&Thread,
739  NULL);
740  if (!NT_SUCCESS(Status)) goto Quit;
741 
742  switch (ThreadInformationClass)
743  {
745  {
746  ULONG CapturedFlags = 0;
747 
748  TRACE("Shutdown initiated\n");
749 
750  if (ThreadInformationLength != sizeof(ULONG))
751  {
753  break;
754  }
755 
756  /* Capture the caller value */
758  _SEH2_TRY
759  {
760  ProbeForWrite(ThreadInformation, sizeof(CapturedFlags), sizeof(PVOID));
761  CapturedFlags = *(PULONG)ThreadInformation;
762  }
764  {
766  _SEH2_YIELD(break);
767  }
768  _SEH2_END;
769 
770  Status = UserInitiateShutdown(Thread, &CapturedFlags);
771 
772  /* Return the modified value to the caller */
773  _SEH2_TRY
774  {
775  *(PULONG)ThreadInformation = CapturedFlags;
776  }
778  {
780  }
781  _SEH2_END;
782 
783  break;
784  }
785 
787  {
788  NTSTATUS ShutdownStatus;
789 
790  TRACE("Shutdown ended\n");
791 
792  if (ThreadInformationLength != sizeof(ShutdownStatus))
793  {
795  break;
796  }
797 
798  /* Capture the caller value */
800  _SEH2_TRY
801  {
802  ProbeForRead(ThreadInformation, sizeof(ShutdownStatus), sizeof(PVOID));
803  ShutdownStatus = *(NTSTATUS*)ThreadInformation;
804  }
806  {
808  _SEH2_YIELD(break);
809  }
810  _SEH2_END;
811 
812  Status = UserEndShutdown(Thread, ShutdownStatus);
813  break;
814  }
815 
817  {
818  HANDLE CsrPortHandle;
819 
820 
821  TRACE("Set CSR API Port for Win32k\n");
822  if (ThreadInformationLength != sizeof(CsrPortHandle))
823  {
825  break;
826  }
827 
828  /* Capture the caller value */
830  _SEH2_TRY
831  {
832  ProbeForRead(ThreadInformation, sizeof(CsrPortHandle), sizeof(PVOID));
833  CsrPortHandle = *(PHANDLE)ThreadInformation;
834  }
836  {
838  _SEH2_YIELD(break);
839  }
840  _SEH2_END;
841 
842  Status = InitCsrApiPort(CsrPortHandle);
843  break;
844  }
845 
847  {
848  HDESK hdesk;
849 
850  if (Thread != PsGetCurrentThread())
851  {
853  break;
854  }
855 
857  IntSetThreadDesktop(hdesk, FALSE);
858 
859  break;
860  }
862  {
863  if (Thread != PsGetCurrentThread())
864  {
866  break;
867  }
868 
870  break;
871  }
872  default:
873  {
874  STUB;
876  break;
877  }
878  }
879 
881 
882 Quit:
883  UserLeave();
884  return Status;
885 }
886 
887 DWORD
888 APIENTRY
890 {
891  STUB;
892  return 0;
893 }
894 
895 BOOL
896 APIENTRY
898 {
899  STUB;
900  return 0;
901 }
902 
903 DWORD
904 APIENTRY
906  DWORD dwUnknown1)
907 {
908  STUB;
909  return 0;
910 }
911 
912 DWORD
913 APIENTRY
915  DWORD dwUnknown1,
916  DWORD dwUnknown2,
917  DWORD dwUnknown3)
918 {
919  STUB;
920  return 0;
921 }
922 
923 DWORD
924 APIENTRY
926  DWORD dwUnknown1,
927  DWORD dwUnknown2,
928  DWORD dwUnknown3,
929  DWORD dwUnknown4)
930 {
931  STUB;
932  return 0;
933 }
934 
935 DWORD
936 APIENTRY
938 {
939  STUB;
940  return 0;
941 }
942 
943 DWORD
944 APIENTRY
946 {
947  STUB;
948  return 0;
949 }
950 
951 DWORD
952 APIENTRY
954  DWORD dwUnknown1,
955  DWORD dwUnknown2,
956  DWORD dwUnknown3)
957 {
958  STUB;
959  return 0;
960 }
961 
962 /*
963  * @unimplemented
964  */
967 {
968  STUB;
969  return FALSE;
970 }
971 
974 {
975  STUB;
976 
977  return 0;
978 }
979 
981  HWND hwnd
982 )
983 {
984  STUB;
985  return FALSE;
986 }
987 
989  HWND hwnd
990 )
991 {
992  STUB;
993  return FALSE;
994 }
995 
997  PUINT lpuiFormats,
998  UINT cFormats,
999  PUINT pcFormatsOut
1000 )
1001 {
1002  STUB;
1003  return FALSE;
1004 }
1005 
1006 // Yes, I know, these do not belong here, just tell me where to put them
1007 BOOL
1008 APIENTRY
1010  _In_ HANDLE hHandle,
1011  _In_ DWORD dwProcessId)
1012 {
1013  STUB;
1014  return 0;
1015 }
1016 
1017 DWORD
1018 APIENTRY
1020  DWORD Unknown0)
1021 {
1022  STUB;
1023  return 0;
1024 }
1025 
1026 
1027 /* EOF */
BOOL APIENTRY NtUserRealWaitMessageEx(DWORD dwWakeMask, UINT uTimeout)
Definition: ntstubs.c:676
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:239
BOOL APIENTRY NtUserGetAltTabInfo(HWND hwnd, INT iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText, BOOL Ansi)
Definition: ntstubs.c:102
#define IN
Definition: typedefs.h:39
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1613
DWORD APIENTRY NtUserRegisterTasklist(DWORD Unknown0)
Definition: ntstubs.c:230
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
Definition: conport.c:35
BOOL APIENTRY NtUserRemoveClipboardFormatListener(HWND hwnd)
Definition: ntstubs.c:988
#define STATUS_INFO_LENGTH_MISMATCH
Definition: udferr_usr.h:133
DWORD APIENTRY NtUserQueryUserCounters(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
Definition: ntstubs.c:216
BOOL APIENTRY NtUserLockWindowUpdate(HWND hWnd)
Definition: ntstubs.c:966
DWORD APIENTRY NtUserModifyUserStartupInfoFlags(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:205
#define PsGetCurrentThread()
Definition: env_spec_w32.h:81
DWORD APIENTRY NtUserResolveDesktopForWOW(DWORD Unknown0)
Definition: ntstubs.c:696
PDESKTOP gpdeskInputDesktop
Definition: desktop.c:35
#define TRUE
Definition: types.h:120
DWORD APIENTRY NtUserGetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize)
Definition: ntstubs.c:477
DWORD APIENTRY NtUserEvent(DWORD Unknown0)
Definition: ntstubs.c:92
NTSTATUS APIENTRY NtUserQueryInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:610
BOOL APIENTRY NtUserBitBltSysBmp(HDC hdc, INT nXDest, INT nYDest, INT nWidth, INT nHeight, INT nXSrc, INT nYSrc, DWORD dwRop)
Definition: ntstubs.c:25
PVOID NTAPI PsGetProcessWin32Process(PEPROCESS Process)
Definition: process.c:1193
PEPROCESS gpepCSRSS
Definition: csr.c:15
#define THREAD_SET_INFORMATION
Definition: nt_native.h:1337
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS UserEndShutdown(IN PETHREAD Thread, IN NTSTATUS ShutdownStatus)
Definition: shutdown.c:290
BOOL FASTCALL UserSendNotifyMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: message.c:2037
static HDC
Definition: imagelist.c:92
#define SERVER_TO_CLIENT(ptr)
HWND hWnd
Definition: settings.c:17
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD IN DWORD Unknown6
Definition: conport.c:35
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
DWORD APIENTRY NtUserUpdateInputContext(HIMC hIMC, DWORD Unknown1, LPVOID pClientImc)
Definition: ntstubs.c:351
HICON HCURSOR
Definition: windef.h:299
GLdouble u1
Definition: glext.h:8308
DWORD APIENTRY NtUserGetRawInputDeviceList(PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT puiNumDevices, UINT cbSize)
Definition: ntstubs.c:466
#define FASTCALL
Definition: nt_native.h:50
BOOL APIENTRY NtUserDrawAnimatedRects(HWND hwnd, INT idAni, RECT *lprcFrom, RECT *lprcTo)
Definition: ntstubs.c:79
PSERVERINFO gpsi
Definition: main.c:27
int32_t INT
Definition: typedefs.h:58
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
Definition: exintrin.c:143
BOOL ClientPfnInit
Definition: ntuser.c:26
NTSTATUS InitCsrApiPort(IN HANDLE CsrPortHandle)
Definition: csr.c:38
BOOL APIENTRY NtUserSetSysColors(int cElements, IN CONST INT *lpaElements, IN CONST COLORREF *lpaRgbValues, FLONG Flags)
Definition: ntstubs.c:304
_SEH2_TRY
Definition: create.c:4226
DWORD APIENTRY NtUserSetRipFlags(DWORD Unknown0)
Definition: ntstubs.c:272
DWORD APIENTRY NtUserRemoteRedrawScreen(VOID)
Definition: ntstubs.c:937
uint32_t ULONG_PTR
Definition: typedefs.h:65
DWORD APIENTRY NtUserRemoteRedrawRectangle(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: ntstubs.c:925
NTSTATUS APIENTRY NtUserInitializeClientPfnArrays(PPFNCLIENT pfnClientA, PPFNCLIENT pfnClientW, PPFNCLIENTWORKER pfnClientWorker, HINSTANCE hmodUser)
Definition: ntstubs.c:117
return STATUS_NOT_IMPLEMENTED
PFNCLIENT apfnClientW
Definition: ntuser.h:1019
#define ERROR_NOACCESS
Definition: winerror.h:578
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
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
HDESK FASTCALL IntGetDesktopObjectHandle(PDESKTOP DesktopObject)
Definition: desktop.c:1240
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
DWORD APIENTRY NtUserWaitForMsgAndEvent(DWORD Unknown0)
Definition: ntstubs.c:387
DWORD APIENTRY NtUserGetRawInputData(HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader)
Definition: ntstubs.c:440
DWORD APIENTRY NtUserGetRawInputDeviceInfo(HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize)
Definition: ntstubs.c:453
_In_ THREADINFOCLASS ThreadInformationClass
Definition: psfuncs.h:832
DWORD APIENTRY NtUserSetInformationProcess(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: ntstubs.c:704
#define PsGetCurrentProcess
Definition: psfuncs.h:17
DWORD APIENTRY NtUserHardErrorControl(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:488
#define _In_
Definition: ms_sal.h:308
__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)
BOOL APIENTRY NtUserSoundSentry(VOID)
Definition: ntstubs.c:897
W32HEAP_USER_MAPPING HeapMappings
Definition: win32.h:288
BOOL NTAPI NtUserNotifyProcessCreate(HANDLE NewProcessId, HANDLE ParentThreadId, ULONG dwUnknown, ULONG CreateFlags)
Definition: ntstubs.c:499
DWORD HIMC
Definition: dimm.idl:75
unsigned long FLONG
Definition: ntbasedef.h:366
BOOL APIENTRY NtUserUserHandleGrantAccess(IN HANDLE hUserHandle, IN HANDLE hJob, IN BOOL bGrant)
Definition: ntstubs.c:375
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:245
Status
Definition: gdiplustypes.h:24
#define TRACE(s)
Definition: solgame.cpp:4
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define ASSERT(a)
Definition: mode.c:44
BOOL APIENTRY NtUserGetUpdatedClipboardFormats(PUINT lpuiFormats, UINT cFormats, PUINT pcFormatsOut)
Definition: ntstubs.c:996
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
HDC hSystemBM
Definition: stockobj.c:52
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
DWORD COLORREF
Definition: windef.h:300
NTSTATUS APIENTRY NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCount)
Definition: ntstubs.c:56
#define ObDereferenceObject
Definition: obfuncs.h:203
DWORD APIENTRY NtDxEngGetRedirectionBitmap(DWORD Unknown0)
Definition: ntstubs.c:1019
HIMC APIENTRY NtUserCreateInputContext(PCLIENTIMC pClientImc)
Definition: ntstubs.c:421
unsigned long DWORD
Definition: ntddk_ex.h:95
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:164
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2652
#define STATUS_ACCESS_DENIED
Definition: udferr_usr.h:145
NTSTATUS APIENTRY NtUserSetInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:719
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
PFNCLIENT apfnClientA
Definition: ntuser.h:1018
BOOL APIENTRY NtUserAddClipboardFormatListener(HWND hwnd)
Definition: ntstubs.c:980
DWORD dwThreadId
Definition: fdebug.c:31
POBJECT_TYPE PsThreadType
Definition: thread.c:20
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
Definition: exintrin.c:102
HDC hdc
Definition: main.c:9
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:454
WNDPROC aStoCidPfn[FNID_NUMSERVERPROC]
Definition: ntuser.h:1016
BOOL APIENTRY NtGdiMakeObjectXferable(_In_ HANDLE hHandle, _In_ DWORD dwProcessId)
Definition: ntstubs.c:1009
DWORD APIENTRY NtUserSetConsoleReserveKeys(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:240
DWORD APIENTRY NtUserUpdateInstance(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2)
Definition: ntstubs.c:363
DWORD APIENTRY NtUserDragObject(HWND hwnd1, HWND hwnd2, UINT u1, DWORD dw1, HCURSOR hc1)
Definition: ntstubs.c:64
DWORD APIENTRY NtUserWin32PoolAllocationStats(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5)
Definition: ntstubs.c:397
UINT_PTR HKL
Definition: msctf.idl:101
VOID APIENTRY UserRedrawDesktop(VOID)
Definition: desktop.c:1566
DWORD APIENTRY NtUserSetDbgTag(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:251
VOID FASTCALL SetLastNtError(NTSTATUS Status)
Definition: error.c:36
static PFNCLIENT pfnClientA
Definition: regcontrol.c:15
DWORD APIENTRY NtUserGetRawInputBuffer(PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader)
Definition: ntstubs.c:429
DWORD APIENTRY NtUserSetDbgTagCount(DWORD Unknown0)
Definition: ntstubs.c:262
#define ERR(fmt,...)
Definition: debug.h:110
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:253
_SEH2_END
Definition: create.c:4400
static PFNCLIENTWORKER pfnClientWorker
Definition: regcontrol.c:17
DWORD APIENTRY NtUserDbgWin32HeapStat(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:293
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
DWORD APIENTRY NtUserQueryInputContext(HIMC hIMC, DWORD dwUnknown2)
Definition: ntstubs.c:652
#define STUB
Definition: kernel32.h:27
_In_ THREADINFOCLASS _In_ ULONG ThreadInformationLength
Definition: psfuncs.h:835
BOOL IntSetThreadDesktop(IN HDESK hDesktop, IN BOOL FreeOnFailure)
Definition: desktop.c:3219
DBG_DEFAULT_CHANNEL(UserMisc)
DWORD APIENTRY NtUserCtxDisplayIOCtl(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:953
unsigned int * PULONG
Definition: retypes.h:1
unsigned int UINT
Definition: ndis.h:50
enum _USERTHREADINFOCLASS USERTHREADINFOCLASS
#define NULL
Definition: types.h:112
DWORD APIENTRY NtUserDbgWin32HeapFail(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:282
DWORD APIENTRY NtUserTestForInteractiveUser(DWORD dwUnknown1)
Definition: ntstubs.c:905
NTSTATUS APIENTRY NtUserProcessConnect(IN HANDLE ProcessHandle, OUT PUSERCONNECT pUserConnect, IN ULONG Size)
Definition: ntstubs.c:512
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:219
DWORD APIENTRY NtUserMNDragOver(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:194
#define OUT
Definition: typedefs.h:40
NTSTATUS UserInitiateShutdown(IN PETHREAD Thread, IN OUT PULONG pFlags)
Definition: shutdown.c:166
VOID FASTCALL IntSetSysColors(UINT nColors, CONST INT *Elements, CONST COLORREF *Colors)
Definition: stockobj.c:300
uint32_t * LPDWORD
Definition: typedefs.h:59
#define THREAD_QUERY_INFORMATION
Definition: pstypes.h:149
unsigned int ULONG
Definition: retypes.h:1
#define ULONG_PTR
Definition: config.h:101
#define PROCESS_VM_OPERATION
Definition: pstypes.h:160
DWORD APIENTRY NtUserQuerySendMessage(DWORD Unknown0)
Definition: ntstubs.c:973
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
DWORD APIENTRY NtUserRemoteStopScreenUpdates(VOID)
Definition: ntstubs.c:945
static PFNCLIENT pfnClientW
Definition: regcontrol.c:16
HINSTANCE hModClient
Definition: ntuser.c:25
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:40
#define STATUS_SUCCESS
Definition: shellext.h:65
PFNCLIENTWORKER apfnClientWorker
Definition: ntuser.h:1020
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:165
#define _SEH2_YIELD(__stmt)
Definition: pseh2_64.h:168
DWORD APIENTRY NtUserYieldTask(VOID)
Definition: ntstubs.c:412
WCHAR * LPWSTR
Definition: xmlstorage.h:184
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:403
BOOL APIENTRY NtUserRealInternalGetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg, BOOL bGMSG)
Definition: ntstubs.c:662
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD Unknown5
Definition: conport.c:35
DWORD APIENTRY NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags)
Definition: ntstubs.c:14
PUSER_HANDLE_TABLE gHandleTable
Definition: object.c:13
#define HWND_BROADCAST
Definition: winuser.h:1194
POBJECT_TYPE PsProcessType
Definition: process.c:20
#define CONST
Definition: pedump.c:81
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
Definition: error.c:27
DWORD APIENTRY NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL)
Definition: ntstubs.c:889
unsigned int * PUINT
Definition: ndis.h:50
#define APIENTRY
Definition: api.h:79
DWORD APIENTRY NtUserRemoteConnect(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:914
BOOL APIENTRY NtUserRegisterRawInputDevices(IN PCRAWINPUTDEVICE pRawInputDevices, IN UINT uiNumDevices, IN UINT cbSize)
Definition: ntstubs.c:686
DWORD APIENTRY NtUserMNDragLeave(VOID)
Definition: ntstubs.c:185