ReactOS  0.4.15-dev-4574-g434cf85
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 //
13 // Works like BitBlt, http://msdn.microsoft.com/en-us/library/ms532278(VS.85).aspx
14 //
15 BOOL
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,
35  hSystemBM,
36  nXSrc,
37  nYSrc,
38  dwRop,
39  0,
40  0);
41 
42  UserLeave();
43  return Ret;
44 }
45 
46 DWORD
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 
61 BOOL
64  HWND hwnd,
65  INT idAni,
66  RECT *lprcFrom,
67  RECT *lprcTo)
68 {
69  STUB
70 
71  return 0;
72 }
73 
74 DWORD
77  DWORD Unknown0)
78 {
79  STUB
80 
81  return 0;
82 }
83 
84 BOOL
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 
100 APIENTRY
105  HINSTANCE hmodUser)
106 {
108  TRACE("Enter NtUserInitializeClientPfnArrays User32 0x%p\n", hmodUser);
109 
110  if (ClientPfnInit) return Status;
111 
113 
114  _SEH2_TRY
115  {
116  ProbeForRead( pfnClientA, sizeof(PFNCLIENT), 1);
117  ProbeForRead( pfnClientW, sizeof(PFNCLIENT), 1);
122 
126 
127  hModClient = hmodUser;
129  }
131  {
133  }
134  _SEH2_END
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 
146 DWORD
147 APIENTRY
149  DWORD Unknown0,
150  DWORD Unknown1,
151  DWORD Unknown2,
152  DWORD Unknown3,
153  DWORD Unknown4,
154  DWORD Unknown5,
155  DWORD Unknown6,
156  DWORD Unknown7,
157  DWORD Unknown8,
158  DWORD Unknown9,
160  DWORD Unknown11)
161 {
162  STUB
163 
164  return 0;
165 }
166 
167 DWORD
168 APIENTRY
170 {
171  STUB
172 
173  return 0;
174 }
175 
176 DWORD
177 APIENTRY
179  DWORD Unknown0,
180  DWORD Unknown1)
181 {
182  STUB
183 
184  return 0;
185 }
186 
187 DWORD
188 APIENTRY
190  DWORD Unknown0,
191  DWORD Unknown1)
192 {
193  STUB
194 
195  return 0;
196 }
197 
198 DWORD
199 APIENTRY
201  DWORD Unknown0,
202  DWORD Unknown1,
203  DWORD Unknown2,
204  DWORD Unknown3,
205  DWORD Unknown4)
206 {
207  STUB
208 
209  return 0;
210 }
211 
212 DWORD
213 APIENTRY
215  DWORD Unknown0)
216 {
217  STUB
218 
219  return 0;
220 }
221 
222 DWORD
223 APIENTRY
225  DWORD Unknown0,
226  DWORD Unknown1)
227 {
228  STUB
229 
230  return 0;
231 }
232 
233 DWORD
234 APIENTRY
236  DWORD Unknown0,
237  DWORD Unknown1)
238 {
239  STUB;
240 
241  return 0;
242 }
243 
244 DWORD
245 APIENTRY
247  DWORD Unknown0)
248 {
249  STUB;
250 
251  return 0;
252 }
253 
254 DWORD
255 APIENTRY
257  DWORD Unknown0)
258 {
259  STUB;
260 
261  return 0;
262 }
263 
264 DWORD
265 APIENTRY
267  DWORD Unknown0,
268  DWORD Unknown1)
269 {
270  STUB
271 
272  return 0;
273 }
274 
275 DWORD
276 APIENTRY
278  DWORD Unknown0,
279  DWORD Unknown1)
280 {
281  STUB
282 
283  return 0;
284 }
285 
286 BOOL
287 APIENTRY
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 
308  _SEH2_TRY
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 
333 DWORD
334 APIENTRY
336  DWORD Unknown0,
337  DWORD Unknown1,
338  DWORD Unknown2)
339 {
340  STUB
341 
342  return 0;
343 }
344 
345 BOOL
346 APIENTRY
348  IN HANDLE hUserHandle,
349  IN HANDLE hJob,
350  IN BOOL bGrant)
351 {
352  STUB
353 
354  return 0;
355 }
356 
357 DWORD
358 APIENTRY
360  DWORD Unknown0)
361 {
362  STUB
363 
364  return 0;
365 }
366 
367 DWORD
368 APIENTRY
370  DWORD Unknown0,
371  DWORD Unknown1,
372  DWORD Unknown2,
373  DWORD Unknown3,
374  DWORD Unknown4,
375  DWORD Unknown5)
376 {
377  STUB
378 
379  return 0;
380 }
381 
382 DWORD
383 APIENTRY
385 {
386  STUB
387 
388  return 0;
389 }
390 
391 DWORD
392 APIENTRY
394  PRAWINPUT pData,
395  PUINT pcbSize,
396  UINT cbSizeHeader)
397 {
398  STUB;
399  return 0;
400 }
401 
402 DWORD
403 APIENTRY
405  HRAWINPUT hRawInput,
406  UINT uiCommand,
407  LPVOID pData,
408  PUINT pcbSize,
409  UINT cbSizeHeader)
410 {
411  STUB;
412  return 0;
413 }
414 
415 DWORD
416 APIENTRY
418  HANDLE hDevice,
419  UINT uiCommand,
420  LPVOID pData,
421  PUINT pcbSize
422 )
423 {
424  STUB;
425  return 0;
426 }
427 
428 DWORD
429 APIENTRY
431  PRAWINPUTDEVICELIST pRawInputDeviceList,
432  PUINT puiNumDevices,
433  UINT cbSize)
434 {
435  STUB;
436  return 0;
437 }
438 
439 DWORD
440 APIENTRY
442  PRAWINPUTDEVICE pRawInputDevices,
443  PUINT puiNumDevices,
444  UINT cbSize)
445 {
446  STUB;
447  return 0;
448 }
449 
450 DWORD
451 APIENTRY
453  DWORD dwUnknown1,
454  DWORD dwUnknown2,
455  DWORD dwUnknown3)
456 {
457  STUB;
458  return 0;
459 }
460 
461 BOOL
462 NTAPI
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 
474 NTSTATUS
475 APIENTRY
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 */
496  *PsProcessType,
497  UserMode,
498  (PVOID*)&Process,
499  NULL);
500  if (!NT_SUCCESS(Status)) return Status;
501 
502  UserEnterShared();
503 
504  /* Get Win32 process information */
505  W32Process = PsGetProcessWin32Process(Process);
506 
507  _SEH2_TRY
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 =
527  (ULONG_PTR)W32Process->HeapMappings.KernelMapping -
528  (ULONG_PTR)W32Process->HeapMappings.UserMapping;
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 
572 NTSTATUS
573 APIENTRY
576  OUT PVOID ThreadInformation,
578 {
581 
582  /* Allow only CSRSS to perform this operation */
584  return STATUS_ACCESS_DENIED;
585 
587 
588  /* Get the Thread */
589  Status = ObReferenceObjectByHandle(ThreadHandle,
591  *PsThreadType,
592  UserMode,
593  (PVOID)&Thread,
594  NULL);
595  if (!NT_SUCCESS(Status)) goto Quit;
596 
597  switch (ThreadInformationClass)
598  {
599  default:
600  {
601  STUB;
603  break;
604  }
605  }
606 
608 
609 Quit:
610  UserLeave();
611  return Status;
612 }
613 
614 BOOL
615 APIENTRY
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 
628 BOOL
629 APIENTRY
631  DWORD dwWakeMask,
632  UINT uTimeout)
633 {
634  STUB;
635  return 0;
636 }
637 
638 BOOL
639 APIENTRY
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 
656 DWORD
657 APIENTRY
659  DWORD dwUnknown1,
660  DWORD dwUnknown2,
661  DWORD dwUnknown3,
662  DWORD dwUnknown4)
663 {
664  STUB;
665  return 0;
666 }
667 
668 HDESK FASTCALL
669 IntGetDesktopObjectHandle(PDESKTOP DesktopObject);
670 
671 NTSTATUS
672 APIENTRY
675  IN PVOID ThreadInformation,
677 {
680 
681  /* Allow only CSRSS to perform this operation */
683  return STATUS_ACCESS_DENIED;
684 
686 
687  /* Get the Thread */
688  Status = ObReferenceObjectByHandle(ThreadHandle,
690  *PsThreadType,
691  UserMode,
692  (PVOID)&Thread,
693  NULL);
694  if (!NT_SUCCESS(Status)) goto Quit;
695 
696  switch (ThreadInformationClass)
697  {
699  {
700  ULONG CapturedFlags = 0;
701 
702  TRACE("Shutdown initiated\n");
703 
704  if (ThreadInformationLength != sizeof(ULONG))
705  {
707  break;
708  }
709 
710  /* Capture the caller value */
712  _SEH2_TRY
713  {
714  ProbeForWrite(ThreadInformation, sizeof(CapturedFlags), sizeof(PVOID));
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 */
727  _SEH2_TRY
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 */
754  _SEH2_TRY
755  {
756  ProbeForRead(ThreadInformation, sizeof(ShutdownStatus), sizeof(PVOID));
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 */
784  _SEH2_TRY
785  {
786  ProbeForRead(ThreadInformation, sizeof(CsrPortHandle), sizeof(PVOID));
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 
811  IntSetThreadDesktop(hdesk, FALSE);
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 
836 Quit:
837  UserLeave();
838  return Status;
839 }
840 
841 BOOL
842 APIENTRY
844 {
845  STUB;
846  return 0;
847 }
848 
849 DWORD
850 APIENTRY
852  DWORD dwUnknown1)
853 {
854  STUB;
855  return 0;
856 }
857 
858 DWORD
859 APIENTRY
861  DWORD dwUnknown1,
862  DWORD dwUnknown2,
863  DWORD dwUnknown3)
864 {
865  STUB;
866  return 0;
867 }
868 
869 DWORD
870 APIENTRY
872  DWORD dwUnknown1,
873  DWORD dwUnknown2,
874  DWORD dwUnknown3,
875  DWORD dwUnknown4)
876 {
877  STUB;
878  return 0;
879 }
880 
881 DWORD
882 APIENTRY
884 {
885  STUB;
886  return 0;
887 }
888 
889 DWORD
890 APIENTRY
892 {
893  STUB;
894  return 0;
895 }
896 
897 DWORD
898 APIENTRY
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 
952 // Yes, I know, these do not belong here, just tell me where to put them
953 BOOL
954 APIENTRY
956  _In_ HANDLE hHandle,
957  _In_ DWORD dwProcessId)
958 {
959  STUB;
960  return 0;
961 }
962 
963 DWORD
964 APIENTRY
966  DWORD Unknown0)
967 {
968  STUB;
969  return 0;
970 }
971 
972 /* EOF */
BOOL APIENTRY NtUserRealWaitMessageEx(DWORD dwWakeMask, UINT uTimeout)
Definition: ntstubs.c:630
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:242
BOOL APIENTRY NtUserGetAltTabInfo(HWND hwnd, INT iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText, BOOL Ansi)
Definition: ntstubs.c:86
#define IN
Definition: typedefs.h:39
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1613
DWORD APIENTRY NtUserRegisterTasklist(DWORD Unknown0)
Definition: ntstubs.c:214
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
Definition: conport.c:35
BOOL APIENTRY NtUserRemoveClipboardFormatListener(HWND hwnd)
Definition: ntstubs.c:934
#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:200
BOOL APIENTRY NtUserLockWindowUpdate(HWND hWnd)
Definition: ntstubs.c:912
DWORD APIENTRY NtUserModifyUserStartupInfoFlags(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:189
#define PsGetCurrentThread()
Definition: env_spec_w32.h:81
DWORD APIENTRY NtUserResolveDesktopForWOW(DWORD Unknown0)
Definition: ntstubs.c:650
PDESKTOP gpdeskInputDesktop
Definition: desktop.c:35
#define TRUE
Definition: types.h:120
DWORD APIENTRY NtUserGetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize)
Definition: ntstubs.c:441
DWORD APIENTRY NtUserEvent(DWORD Unknown0)
Definition: ntstubs.c:76
NTSTATUS APIENTRY NtUserQueryInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:574
BOOL APIENTRY NtUserBitBltSysBmp(HDC hdc, INT nXDest, INT nYDest, INT nWidth, INT nHeight, INT nXSrc, INT nYSrc, DWORD dwRop)
Definition: ntstubs.c:17
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
PSERVERINFO gpsi
Definition: imm.c:17
#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
HICON HCURSOR
Definition: windef.h:299
GLdouble u1
Definition: glext.h:8308
DWORD APIENTRY NtUserGetRawInputDeviceList(PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT puiNumDevices, UINT cbSize)
Definition: ntstubs.c:430
#define FASTCALL
Definition: nt_native.h:50
BOOL APIENTRY NtUserDrawAnimatedRects(HWND hwnd, INT idAni, RECT *lprcFrom, RECT *lprcTo)
Definition: ntstubs.c:63
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:288
_SEH2_TRY
Definition: create.c:4226
DWORD APIENTRY NtUserSetRipFlags(DWORD Unknown0)
Definition: ntstubs.c:256
DWORD APIENTRY NtUserRemoteRedrawScreen(VOID)
Definition: ntstubs.c:883
uint32_t ULONG_PTR
Definition: typedefs.h:65
DWORD APIENTRY NtUserRemoteRedrawRectangle(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: ntstubs.c:871
NTSTATUS APIENTRY NtUserInitializeClientPfnArrays(PPFNCLIENT pfnClientA, PPFNCLIENT pfnClientW, PPFNCLIENTWORKER pfnClientWorker, HINSTANCE hmodUser)
Definition: ntstubs.c:101
return STATUS_NOT_IMPLEMENTED
PFNCLIENT apfnClientW
Definition: ntuser.h:1028
#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:1274
#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:359
DWORD APIENTRY NtUserGetRawInputData(HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader)
Definition: ntstubs.c:404
DWORD APIENTRY NtUserGetRawInputDeviceInfo(HANDLE hDevice, UINT uiCommand, LPVOID pData, PUINT pcbSize)
Definition: ntstubs.c:417
_In_ THREADINFOCLASS ThreadInformationClass
Definition: psfuncs.h:832
DWORD APIENTRY NtUserSetInformationProcess(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: ntstubs.c:658
#define PsGetCurrentProcess
Definition: psfuncs.h:17
DWORD APIENTRY NtUserHardErrorControl(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:452
#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:843
W32HEAP_USER_MAPPING HeapMappings
Definition: win32.h:286
BOOL NTAPI NtUserNotifyProcessCreate(HANDLE NewProcessId, HANDLE ParentThreadId, ULONG dwUnknown, ULONG CreateFlags)
Definition: ntstubs.c:463
unsigned long FLONG
Definition: ntbasedef.h:366
BOOL APIENTRY NtUserUserHandleGrantAccess(IN HANDLE hUserHandle, IN HANDLE hJob, IN BOOL bGrant)
Definition: ntstubs.c:347
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:249
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:942
#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
#define ObDereferenceObject
Definition: obfuncs.h:203
DWORD APIENTRY NtDxEngGetRedirectionBitmap(DWORD Unknown0)
Definition: ntstubs.c:965
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:148
_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:673
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
PFNCLIENT apfnClientA
Definition: ntuser.h:1027
BOOL APIENTRY NtUserAddClipboardFormatListener(HWND hwnd)
Definition: ntstubs.c:926
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
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:454
WNDPROC aStoCidPfn[FNID_NUMSERVERPROC]
Definition: ntuser.h:1025
BOOL APIENTRY NtGdiMakeObjectXferable(_In_ HANDLE hHandle, _In_ DWORD dwProcessId)
Definition: ntstubs.c:955
DWORD APIENTRY NtUserSetConsoleReserveKeys(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:224
DWORD APIENTRY NtUserUpdateInstance(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2)
Definition: ntstubs.c:335
DWORD APIENTRY NtUserDragObject(HWND hwnd1, HWND hwnd2, UINT u1, DWORD dw1, HCURSOR hc1)
Definition: ntstubs.c:48
DWORD APIENTRY NtUserWin32PoolAllocationStats(DWORD Unknown0, DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5)
Definition: ntstubs.c:369
VOID APIENTRY UserRedrawDesktop(VOID)
Definition: desktop.c:1602
DWORD APIENTRY NtUserSetDbgTag(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:235
VOID FASTCALL SetLastNtError(NTSTATUS Status)
Definition: error.c:37
static PFNCLIENT pfnClientA
Definition: regcontrol.c:15
DWORD APIENTRY NtUserGetRawInputBuffer(PRAWINPUT pData, PUINT pcbSize, UINT cbSizeHeader)
Definition: ntstubs.c:393
DWORD APIENTRY NtUserSetDbgTagCount(DWORD Unknown0)
Definition: ntstubs.c:246
#define ERR(fmt,...)
Definition: debug.h:110
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:258
_SEH2_END
Definition: create.c:4400
static PFNCLIENTWORKER pfnClientWorker
Definition: regcontrol.c:17
DWORD APIENTRY NtUserDbgWin32HeapStat(DWORD Unknown0, DWORD Unknown1)
Definition: ntstubs.c:277
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 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:3255
DBG_DEFAULT_CHANNEL(UserMisc)
DWORD APIENTRY NtUserCtxDisplayIOCtl(DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3)
Definition: ntstubs.c:899
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:266
DWORD APIENTRY NtUserTestForInteractiveUser(DWORD dwUnknown1)
Definition: ntstubs.c:851
NTSTATUS APIENTRY NtUserProcessConnect(IN HANDLE ProcessHandle, OUT PUSERCONNECT pUserConnect, IN ULONG Size)
Definition: ntstubs.c:476
_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:178
#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
#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:919
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
DWORD APIENTRY NtUserRemoteStopScreenUpdates(VOID)
Definition: ntstubs.c:891
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:1029
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:165
#define _SEH2_YIELD(__stmt)
Definition: pseh2_64.h:168
DWORD APIENTRY NtUserYieldTask(VOID)
Definition: ntstubs.c:384
WCHAR * LPWSTR
Definition: xmlstorage.h:184
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4022
_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:616
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD Unknown5
Definition: conport.c:35
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:28
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:860
BOOL APIENTRY NtUserRegisterRawInputDevices(IN PCRAWINPUTDEVICE pRawInputDevices, IN UINT uiNumDevices, IN UINT cbSize)
Definition: ntstubs.c:640
DWORD APIENTRY NtUserMNDragLeave(VOID)
Definition: ntstubs.c:169