* Sync to trunk HEAD (r53473).
[reactos.git] / subsystems / win32 / win32k / ntuser / ntstubs.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: Native User stubs
5 * FILE: subsys/win32k/ntuser/stubs.c
6 * PROGRAMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
7 * REVISION HISTORY:
8 * 04-06-2001 CSH Created
9 */
10 #include <win32k.h>
11
12 DBG_DEFAULT_CHANNEL(UserMisc);
13
14 DWORD
15 APIENTRY
16 NtUserAssociateInputContext(
17 DWORD dwUnknown1,
18 DWORD dwUnknown2,
19 DWORD dwUnknown3)
20 {
21 STUB
22 return 0;
23 }
24
25
26 BOOL
27 APIENTRY
28 NtUserAttachThreadInput(
29 IN DWORD idAttach,
30 IN DWORD idAttachTo,
31 IN BOOL fAttach)
32 {
33 NTSTATUS Status;
34 PETHREAD Thread, ThreadTo;
35 PTHREADINFO pti, ptiTo;
36 BOOL Ret = FALSE;
37
38 UserEnterExclusive();
39 Status = PsLookupThreadByThreadId((HANDLE)idAttach, &Thread);
40 if (!NT_SUCCESS(Status))
41 {
42 EngSetLastError(ERROR_INVALID_PARAMETER);
43 goto Exit;
44 }
45 Status = PsLookupThreadByThreadId((HANDLE)idAttachTo, &ThreadTo);
46 if (!NT_SUCCESS(Status))
47 {
48 EngSetLastError(ERROR_INVALID_PARAMETER);
49 ObDereferenceObject(Thread);
50 goto Exit;
51 }
52
53 pti = PsGetThreadWin32Thread(Thread);
54 ptiTo = PsGetThreadWin32Thread(ThreadTo);
55 ObDereferenceObject(Thread);
56 ObDereferenceObject(ThreadTo);
57
58 Ret = UserAttachThreadInput( pti, ptiTo, fAttach);
59
60 Exit:
61 UserLeave();
62 return Ret;
63 }
64
65 //
66 // Works like BitBlt, http://msdn.microsoft.com/en-us/library/ms532278(VS.85).aspx
67 //
68 BOOL
69 APIENTRY
70 NtUserBitBltSysBmp(
71 HDC hdc,
72 INT nXDest,
73 INT nYDest,
74 INT nWidth,
75 INT nHeight,
76 INT nXSrc,
77 INT nYSrc,
78 DWORD dwRop )
79 {
80 BOOL Ret = FALSE;
81 UserEnterExclusive();
82
83 Ret = NtGdiBitBlt( hdc,
84 nXDest,
85 nYDest,
86 nWidth,
87 nHeight,
88 hSystemBM,
89 nXSrc,
90 nYSrc,
91 dwRop,
92 0,
93 0);
94
95 UserLeave();
96 return Ret;
97 }
98
99 DWORD
100 APIENTRY
101 NtUserBuildHimcList(
102 DWORD dwUnknown1,
103 DWORD dwUnknown2,
104 DWORD dwUnknown3,
105 DWORD dwUnknown4)
106 {
107 STUB;
108 return 0;
109 }
110
111 DWORD
112 APIENTRY
113 NtUserConvertMemHandle(
114 DWORD Unknown0,
115 DWORD Unknown1)
116 {
117 STUB
118
119 return 0;
120 }
121
122 DWORD
123 APIENTRY
124 NtUserCreateLocalMemHandle(
125 DWORD Unknown0,
126 DWORD Unknown1,
127 DWORD Unknown2,
128 DWORD Unknown3)
129 {
130 STUB
131
132 return 0;
133 }
134
135 BOOL
136 APIENTRY
137 NtUserDdeGetQualityOfService(
138 IN HWND hwndClient,
139 IN HWND hWndServer,
140 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev)
141 {
142 STUB
143
144 return 0;
145 }
146
147 DWORD
148 APIENTRY
149 NtUserDdeInitialize(
150 DWORD Unknown0,
151 DWORD Unknown1,
152 DWORD Unknown2,
153 DWORD Unknown3,
154 DWORD Unknown4)
155 {
156 STUB
157
158 return 0;
159 }
160
161 BOOL
162 APIENTRY
163 NtUserDdeSetQualityOfService(
164 IN HWND hwndClient,
165 IN PSECURITY_QUALITY_OF_SERVICE pqosNew,
166 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev)
167 {
168 STUB
169
170 return 0;
171 }
172
173 DWORD
174 APIENTRY
175 NtUserDragObject(
176 HWND hwnd1,
177 HWND hwnd2,
178 UINT u1,
179 DWORD dw1,
180 HCURSOR hc1
181 )
182 {
183 STUB
184
185 return 0;
186 }
187
188 BOOL
189 APIENTRY
190 NtUserDrawAnimatedRects(
191 HWND hwnd,
192 INT idAni,
193 RECT *lprcFrom,
194 RECT *lprcTo)
195 {
196 STUB
197
198 return 0;
199 }
200
201 DWORD
202 APIENTRY
203 NtUserEvent(
204 DWORD Unknown0)
205 {
206 STUB
207
208 return 0;
209 }
210
211 DWORD
212 APIENTRY
213 NtUserExcludeUpdateRgn(
214 HDC hDC,
215 HWND hWnd)
216 {
217 STUB
218
219 return 0;
220 }
221
222 BOOL
223 APIENTRY
224 NtUserGetAltTabInfo(
225 HWND hwnd,
226 INT iItem,
227 PALTTABINFO pati,
228 LPWSTR pszItemText,
229 UINT cchItemText,
230 BOOL Ansi)
231 {
232 STUB
233
234 return 0;
235 }
236
237 HBRUSH
238 APIENTRY
239 NtUserGetControlBrush(
240 HWND hwnd,
241 HDC hdc,
242 UINT ctlType)
243 {
244 STUB
245
246 return 0;
247 }
248
249
250 /*
251 * Called from PaintRect, works almost like wine PaintRect16 but returns hBrush.
252 */
253 HBRUSH
254 APIENTRY
255 NtUserGetControlColor(
256 HWND hwndParent,
257 HWND hwnd,
258 HDC hdc,
259 UINT CtlMsg) // Wine PaintRect: WM_CTLCOLORMSGBOX + hbrush
260 {
261 STUB
262
263 return 0;
264 }
265
266 DWORD
267 APIENTRY
268 NtUserGetImeHotKey(
269 DWORD Unknown0,
270 DWORD Unknown1,
271 DWORD Unknown2,
272 DWORD Unknown3)
273 {
274 STUB
275
276 return 0;
277 }
278
279 BOOL
280 APIENTRY
281 NtUserImpersonateDdeClientWindow(
282 HWND hWndClient,
283 HWND hWndServer)
284 {
285 STUB
286
287 return 0;
288 }
289
290 NTSTATUS
291 APIENTRY
292 NtUserInitializeClientPfnArrays(
293 PPFNCLIENT pfnClientA,
294 PPFNCLIENT pfnClientW,
295 PPFNCLIENTWORKER pfnClientWorker,
296 HINSTANCE hmodUser)
297 {
298 NTSTATUS Status = STATUS_SUCCESS;
299 TRACE("Enter NtUserInitializeClientPfnArrays User32 0x%x\n",hmodUser);
300
301 if (ClientPfnInit) return Status;
302
303 UserEnterExclusive();
304
305 _SEH2_TRY
306 {
307 ProbeForRead( pfnClientA, sizeof(PFNCLIENT), 1);
308 ProbeForRead( pfnClientW, sizeof(PFNCLIENT), 1);
309 ProbeForRead( pfnClientWorker, sizeof(PFNCLIENTWORKER), 1);
310 RtlCopyMemory(&gpsi->apfnClientA, pfnClientA, sizeof(PFNCLIENT));
311 RtlCopyMemory(&gpsi->apfnClientW, pfnClientW, sizeof(PFNCLIENT));
312 RtlCopyMemory(&gpsi->apfnClientWorker, pfnClientWorker, sizeof(PFNCLIENTWORKER));
313
314 //// FIXME! HAX! Temporary until server side is finished.
315 //// Copy the client side procs for now.
316 RtlCopyMemory(&gpsi->aStoCidPfn, pfnClientW, sizeof(gpsi->aStoCidPfn));
317
318 hModClient = hmodUser;
319 ClientPfnInit = TRUE;
320 }
321 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
322 {
323 Status =_SEH2_GetExceptionCode();
324 }
325 _SEH2_END
326
327 if (!NT_SUCCESS(Status))
328 {
329 ERR("Failed reading Client Pfns from user space.\n");
330 SetLastNtError(Status);
331 }
332
333 UserLeave();
334 return Status;
335 }
336
337 DWORD
338 APIENTRY
339 NtUserInitTask(
340 DWORD Unknown0,
341 DWORD Unknown1,
342 DWORD Unknown2,
343 DWORD Unknown3,
344 DWORD Unknown4,
345 DWORD Unknown5,
346 DWORD Unknown6,
347 DWORD Unknown7,
348 DWORD Unknown8,
349 DWORD Unknown9,
350 DWORD Unknown10,
351 DWORD Unknown11)
352 {
353 STUB
354
355 return 0;
356 }
357
358 BOOL
359 APIENTRY
360 NtUserLockWorkStation(VOID)
361 {
362 STUB
363
364 return 0;
365 }
366
367 DWORD
368 APIENTRY
369 NtUserMNDragLeave(VOID)
370 {
371 STUB
372
373 return 0;
374 }
375
376 DWORD
377 APIENTRY
378 NtUserMNDragOver(
379 DWORD Unknown0,
380 DWORD Unknown1)
381 {
382 STUB
383
384 return 0;
385 }
386
387 DWORD
388 APIENTRY
389 NtUserModifyUserStartupInfoFlags(
390 DWORD Unknown0,
391 DWORD Unknown1)
392 {
393 STUB
394
395 return 0;
396 }
397
398 DWORD
399 APIENTRY
400 NtUserNotifyIMEStatus(
401 DWORD Unknown0,
402 DWORD Unknown1,
403 DWORD Unknown2)
404 {
405 STUB
406
407 return 0;
408 }
409
410 DWORD
411 APIENTRY
412 NtUserQueryUserCounters(
413 DWORD Unknown0,
414 DWORD Unknown1,
415 DWORD Unknown2,
416 DWORD Unknown3,
417 DWORD Unknown4)
418 {
419 STUB
420
421 return 0;
422 }
423
424 DWORD
425 APIENTRY
426 NtUserRegisterTasklist(
427 DWORD Unknown0)
428 {
429 STUB
430
431 return 0;
432 }
433
434 DWORD
435 APIENTRY
436 NtUserSetConsoleReserveKeys(
437 DWORD Unknown0,
438 DWORD Unknown1)
439 {
440 STUB
441
442 return 0;
443 }
444
445 DWORD
446 APIENTRY
447 NtUserSetDbgTag(
448 DWORD Unknown0,
449 DWORD Unknown1)
450 {
451 STUB
452
453 return 0;
454 }
455
456 DWORD
457 APIENTRY
458 NtUserSetImeHotKey(
459 DWORD Unknown0,
460 DWORD Unknown1,
461 DWORD Unknown2,
462 DWORD Unknown3,
463 DWORD Unknown4)
464 {
465 STUB
466
467 return 0;
468 }
469
470
471 DWORD
472 APIENTRY
473 NtUserSetRipFlags(
474 DWORD Unknown0,
475 DWORD Unknown1)
476 {
477 STUB
478
479 return 0;
480 }
481
482 BOOL
483 APIENTRY
484 NtUserSetSysColors(
485 int cElements,
486 IN CONST INT *lpaElements,
487 IN CONST COLORREF *lpaRgbValues,
488 FLONG Flags)
489 {
490 DWORD Ret = TRUE;
491
492 if (cElements == 0)
493 return TRUE;
494
495 /* We need this check to prevent overflow later */
496 if ((ULONG)cElements >= 0x40000000)
497 {
498 EngSetLastError(ERROR_NOACCESS);
499 return FALSE;
500 }
501
502 UserEnterExclusive();
503
504 _SEH2_TRY
505 {
506 ProbeForRead(lpaElements, cElements * sizeof(INT), 1);
507 ProbeForRead(lpaRgbValues, cElements * sizeof(COLORREF), 1);
508
509 IntSetSysColors(cElements, lpaElements, lpaRgbValues);
510 }
511 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
512 {
513 SetLastNtError(_SEH2_GetExceptionCode());
514 Ret = FALSE;
515 }
516 _SEH2_END;
517
518 if (Ret)
519 {
520 UserSendNotifyMessage(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0, 0);
521
522 UserRedrawDesktop();
523 }
524
525 UserLeave();
526 return Ret;
527 }
528
529 DWORD
530 APIENTRY
531 NtUserUpdateInputContext(
532 DWORD Unknown0,
533 DWORD Unknown1,
534 DWORD Unknown2)
535 {
536 STUB
537
538 return 0;
539 }
540
541 DWORD
542 APIENTRY
543 NtUserUpdateInstance(
544 DWORD Unknown0,
545 DWORD Unknown1,
546 DWORD Unknown2)
547 {
548 STUB
549
550 return 0;
551 }
552
553 BOOL
554 APIENTRY
555 NtUserUserHandleGrantAccess(
556 IN HANDLE hUserHandle,
557 IN HANDLE hJob,
558 IN BOOL bGrant)
559 {
560 STUB
561
562 return 0;
563 }
564
565 DWORD
566 APIENTRY
567 NtUserWaitForMsgAndEvent(
568 DWORD Unknown0)
569 {
570 STUB
571
572 return 0;
573 }
574
575 DWORD
576 APIENTRY
577 NtUserWin32PoolAllocationStats(
578 DWORD Unknown0,
579 DWORD Unknown1,
580 DWORD Unknown2,
581 DWORD Unknown3,
582 DWORD Unknown4,
583 DWORD Unknown5)
584 {
585 STUB
586
587 return 0;
588 }
589
590 DWORD
591 APIENTRY
592 NtUserYieldTask(VOID)
593 {
594 STUB
595
596 return 0;
597 }
598
599
600 DWORD
601 APIENTRY
602 NtUserCheckImeHotKey(
603 DWORD dwUnknown1,
604 DWORD dwUnknown2)
605 {
606 STUB;
607 return 0;
608 }
609
610 DWORD
611 APIENTRY
612 NtUserConsoleControl(
613 DWORD dwUnknown1,
614 DWORD dwUnknown2,
615 DWORD dwUnknown3)
616 {
617 STUB;
618 return 0;
619 }
620
621 DWORD
622 APIENTRY
623 NtUserCreateInputContext(
624 DWORD dwUnknown1)
625 {
626 STUB;
627 return 0;
628 }
629
630 DWORD
631 APIENTRY
632 NtUserDestroyInputContext(
633 DWORD dwUnknown1)
634 {
635 STUB;
636 return 0;
637 }
638
639 DWORD
640 APIENTRY
641 NtUserDisableThreadIme(
642 DWORD dwUnknown1)
643 {
644 STUB;
645 return 0;
646 }
647
648 DWORD
649 APIENTRY
650 NtUserGetAppImeLevel(
651 DWORD dwUnknown1)
652 {
653 STUB;
654 return 0;
655 }
656
657 DWORD
658 APIENTRY
659 NtUserGetAtomName(
660 ATOM nAtom,
661 LPWSTR lpBuffer)
662 {
663 STUB;
664 return 0;
665 }
666
667 DWORD
668 APIENTRY
669 NtUserGetImeInfoEx(
670 DWORD dwUnknown1,
671 DWORD dwUnknown2)
672 {
673 STUB;
674 return 0;
675 }
676
677 DWORD
678 APIENTRY
679 NtUserGetRawInputBuffer(
680 PRAWINPUT pData,
681 PUINT pcbSize,
682 UINT cbSizeHeader)
683 {
684 STUB;
685 return 0;
686 }
687
688 DWORD
689 APIENTRY
690 NtUserGetRawInputData(
691 HRAWINPUT hRawInput,
692 UINT uiCommand,
693 LPVOID pData,
694 PUINT pcbSize,
695 UINT cbSizeHeader)
696 {
697 STUB;
698 return 0;
699 }
700
701 DWORD
702 APIENTRY
703 NtUserGetRawInputDeviceInfo(
704 HANDLE hDevice,
705 UINT uiCommand,
706 LPVOID pData,
707 PUINT pcbSize
708 )
709 {
710 STUB;
711 return 0;
712 }
713
714 DWORD
715 APIENTRY
716 NtUserGetRawInputDeviceList(
717 PRAWINPUTDEVICELIST pRawInputDeviceList,
718 PUINT puiNumDevices,
719 UINT cbSize)
720 {
721 STUB;
722 return 0;
723 }
724
725 DWORD
726 APIENTRY
727 NtUserGetRegisteredRawInputDevices(
728 PRAWINPUTDEVICE pRawInputDevices,
729 PUINT puiNumDevices,
730 UINT cbSize)
731 {
732 STUB;
733 return 0;
734 }
735
736 DWORD
737 APIENTRY
738 NtUserHardErrorControl(
739 DWORD dwUnknown1,
740 DWORD dwUnknown2,
741 DWORD dwUnknown3)
742 {
743 STUB;
744 return 0;
745 }
746
747 DWORD
748 APIENTRY
749 NtUserNotifyProcessCreate(
750 DWORD dwUnknown1,
751 DWORD dwUnknown2,
752 DWORD dwUnknown3,
753 DWORD dwUnknown4)
754 {
755 STUB;
756 return 0;
757 }
758
759 NTSTATUS
760 APIENTRY
761 NtUserProcessConnect(
762 HANDLE Process,
763 PUSERCONNECT pUserConnect,
764 DWORD Size)
765 {
766 NTSTATUS Status = STATUS_SUCCESS;
767 TRACE("NtUserProcessConnect\n");
768 if (pUserConnect && ( Size == sizeof(USERCONNECT) ))
769 {
770 PPROCESSINFO W32Process;
771 UserEnterShared();
772 GetW32ThreadInfo();
773 W32Process = PsGetCurrentProcessWin32Process();
774 _SEH2_TRY
775 {
776 pUserConnect->siClient.psi = gpsi;
777 pUserConnect->siClient.aheList = gHandleTable;
778 pUserConnect->siClient.ulSharedDelta = (ULONG_PTR)W32Process->HeapMappings.KernelMapping -
779 (ULONG_PTR)W32Process->HeapMappings.UserMapping;
780 }
781 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
782 {
783 Status = _SEH2_GetExceptionCode();
784 }
785 _SEH2_END
786 if (!NT_SUCCESS(Status))
787 {
788 SetLastNtError(Status);
789 }
790 UserLeave();
791 return Status;
792 }
793 return STATUS_UNSUCCESSFUL;
794 }
795
796 DWORD
797 APIENTRY
798 NtUserQueryInformationThread(
799 DWORD dwUnknown1,
800 DWORD dwUnknown2,
801 DWORD dwUnknown3,
802 DWORD dwUnknown4,
803 DWORD dwUnknown5)
804 {
805 STUB;
806 return 0;
807 }
808
809 DWORD
810 APIENTRY
811 NtUserQueryInputContext(
812 DWORD dwUnknown1,
813 DWORD dwUnknown2)
814 {
815 STUB;
816 return 0;
817 }
818
819 BOOL
820 APIENTRY
821 NtUserRealInternalGetMessage(
822 LPMSG lpMsg,
823 HWND hWnd,
824 UINT wMsgFilterMin,
825 UINT wMsgFilterMax,
826 UINT wRemoveMsg,
827 BOOL bGMSG)
828 {
829 STUB;
830 return 0;
831 }
832
833 BOOL
834 APIENTRY
835 NtUserRealWaitMessageEx(
836 DWORD dwWakeMask,
837 UINT uTimeout)
838 {
839 STUB;
840 return 0;
841 }
842
843 BOOL
844 APIENTRY
845 NtUserRegisterUserApiHook(
846 PUNICODE_STRING m_dllname1,
847 PUNICODE_STRING m_funname1,
848 DWORD dwUnknown3,
849 DWORD dwUnknown4)
850 {
851 UserEnterExclusive();
852 STUB;
853 UserLeave();
854 return 0;
855 }
856
857 BOOL
858 APIENTRY
859 NtUserRegisterRawInputDevices(
860 IN PCRAWINPUTDEVICE pRawInputDevices,
861 IN UINT uiNumDevices,
862 IN UINT cbSize)
863 {
864 STUB;
865 return 0;
866 }
867
868 DWORD
869 APIENTRY
870 NtUserResolveDesktop(
871 DWORD dwUnknown1,
872 DWORD dwUnknown2,
873 DWORD dwUnknown3,
874 DWORD dwUnknown4)
875 {
876 STUB;
877 return 0;
878 }
879
880 DWORD
881 APIENTRY
882 NtUserSetAppImeLevel(
883 DWORD dwUnknown1,
884 DWORD dwUnknown2)
885 {
886 STUB;
887 return 0;
888 }
889
890 DWORD
891 APIENTRY
892 NtUserSetImeInfoEx(
893 DWORD dwUnknown1)
894 {
895 STUB;
896 return 0;
897 }
898
899 DWORD
900 APIENTRY
901 NtUserSetInformationProcess(
902 DWORD dwUnknown1,
903 DWORD dwUnknown2,
904 DWORD dwUnknown3,
905 DWORD dwUnknown4)
906 {
907 STUB;
908 return 0;
909 }
910
911 NTSTATUS
912 APIENTRY
913 NtUserSetInformationThread(IN HANDLE ThreadHandle,
914 IN USERTHREADINFOCLASS ThreadInformationClass,
915 IN PVOID ThreadInformation,
916 IN ULONG ThreadInformationLength)
917
918 {
919 if (ThreadInformationClass == UserThreadInitiateShutdown)
920 {
921 ERR("Shutdown initiated\n");
922 }
923 else if (ThreadInformationClass == UserThreadEndShutdown)
924 {
925 ERR("Shutdown ended\n");
926 }
927 else
928 {
929 STUB;
930 }
931
932 return STATUS_SUCCESS;
933 }
934
935 DWORD
936 APIENTRY
937 NtUserSetThreadLayoutHandles(
938 DWORD dwUnknown1,
939 DWORD dwUnknown2)
940 {
941 STUB;
942 return 0;
943 }
944
945 BOOL
946 APIENTRY
947 NtUserSoundSentry(VOID)
948 {
949 STUB;
950 return 0;
951 }
952
953 DWORD
954 APIENTRY
955 NtUserTestForInteractiveUser(
956 DWORD dwUnknown1)
957 {
958 STUB;
959 return 0;
960 }
961
962 /* http://www.cyber-ta.org/releases/malware-analysis/public/SOURCES/b47155634ccb2c30630da7e3666d3d07/b47155634ccb2c30630da7e3666d3d07.trace.html#NtUserGetIconSize */
963 DWORD
964 APIENTRY
965 NtUserCalcMenuBar(
966 DWORD dwUnknown1,
967 DWORD dwUnknown2,
968 DWORD dwUnknown3,
969 DWORD dwUnknown4,
970 DWORD dwUnknown5)
971 {
972 STUB;
973 return 0;
974 }
975
976 DWORD
977 APIENTRY
978 NtUserPaintMenuBar(
979 DWORD dwUnknown1,
980 DWORD dwUnknown2,
981 DWORD dwUnknown3,
982 DWORD dwUnknown4,
983 DWORD dwUnknown5,
984 DWORD dwUnknown6)
985 {
986 STUB;
987 return 0;
988 }
989
990 BOOL
991 APIENTRY
992 NtUserUnregisterUserApiHook(VOID)
993 {
994 STUB;
995 return 0;
996 }
997
998 BOOL
999 APIENTRY
1000 NtUserGetLayeredWindowAttributes(
1001 HWND hwnd,
1002 COLORREF *pcrKey,
1003 BYTE *pbAlpha,
1004 DWORD *pdwFlags)
1005 {
1006 STUB;
1007 return 0;
1008 }
1009
1010 DWORD
1011 APIENTRY
1012 NtUserRemoteConnect(
1013 DWORD dwUnknown1,
1014 DWORD dwUnknown2,
1015 DWORD dwUnknown3)
1016 {
1017 STUB;
1018 return 0;
1019 }
1020
1021 DWORD
1022 APIENTRY
1023 NtUserRemoteRedrawRectangle(
1024 DWORD dwUnknown1,
1025 DWORD dwUnknown2,
1026 DWORD dwUnknown3,
1027 DWORD dwUnknown4)
1028 {
1029 STUB;
1030 return 0;
1031 }
1032
1033 DWORD
1034 APIENTRY
1035 NtUserRemoteRedrawScreen(VOID)
1036 {
1037 STUB;
1038 return 0;
1039 }
1040
1041 DWORD
1042 APIENTRY
1043 NtUserRemoteStopScreenUpdates(VOID)
1044 {
1045 STUB;
1046 return 0;
1047 }
1048
1049 DWORD
1050 APIENTRY
1051 NtUserCtxDisplayIOCtl(
1052 DWORD dwUnknown1,
1053 DWORD dwUnknown2,
1054 DWORD dwUnknown3)
1055 {
1056 STUB;
1057 return 0;
1058 }
1059
1060 /*
1061 * @unimplemented
1062 */
1063 DWORD
1064 APIENTRY
1065 NtUserDrawMenuBarTemp(
1066 HWND hWnd,
1067 HDC hDC,
1068 PRECT hRect,
1069 HMENU hMenu,
1070 HFONT hFont)
1071 {
1072 /* we'll use this function just for caching the menu bar */
1073 STUB
1074 return 0;
1075 }
1076
1077 /*
1078 * FillWindow: Called from User; Dialog, Edit and ListBox procs during a WM_ERASEBKGND.
1079 */
1080 /*
1081 * @unimplemented
1082 */
1083 BOOL APIENTRY
1084 NtUserFillWindow(HWND hWndPaint,
1085 HWND hWndPaint1,
1086 HDC hDC,
1087 HBRUSH hBrush)
1088 {
1089 STUB
1090
1091 return 0;
1092 }
1093
1094 /*
1095 * @unimplemented
1096 */
1097 BOOL APIENTRY
1098 NtUserLockWindowUpdate(HWND hWnd)
1099 {
1100 STUB
1101
1102 return 0;
1103 }
1104
1105 /*
1106 * @unimplemented
1107 */
1108 HWND APIENTRY
1109 NtUserRealChildWindowFromPoint(HWND Parent,
1110 LONG x,
1111 LONG y)
1112 {
1113 STUB
1114
1115 return 0;
1116 }
1117
1118 /*
1119 * @unimplemented
1120 */
1121 DWORD APIENTRY
1122 NtUserSetImeOwnerWindow(DWORD Unknown0,
1123 DWORD Unknown1)
1124 {
1125 STUB
1126
1127 return 0;
1128 }
1129
1130 /*
1131 * @unimplemented
1132 */
1133 DWORD APIENTRY
1134 NtUserSetInternalWindowPos(
1135 HWND hwnd,
1136 UINT showCmd,
1137 LPRECT rect,
1138 LPPOINT pt)
1139 {
1140 STUB
1141
1142 return 0;
1143 }
1144
1145 /*
1146 * @unimplemented
1147 */
1148 BOOL APIENTRY
1149 NtUserSetLayeredWindowAttributes(HWND hwnd,
1150 COLORREF crKey,
1151 BYTE bAlpha,
1152 DWORD dwFlags)
1153 {
1154 STUB;
1155 return FALSE;
1156 }
1157
1158 /*
1159 * @unimplemented
1160 */
1161 BOOL
1162 APIENTRY
1163 NtUserUpdateLayeredWindow(
1164 HWND hwnd,
1165 HDC hdcDst,
1166 POINT *pptDst,
1167 SIZE *psize,
1168 HDC hdcSrc,
1169 POINT *pptSrc,
1170 COLORREF crKey,
1171 BLENDFUNCTION *pblend,
1172 DWORD dwFlags,
1173 RECT *prcDirty)
1174 {
1175 STUB
1176
1177 return 0;
1178 }
1179
1180 /*
1181 * @unimplemented
1182 */
1183 HWND APIENTRY
1184 NtUserWindowFromPhysicalPoint(POINT Point)
1185 {
1186 STUB
1187
1188 return NULL;
1189 }
1190
1191 /*
1192 * NtUserResolveDesktopForWOW
1193 *
1194 * Status
1195 * @unimplemented
1196 */
1197
1198 DWORD APIENTRY
1199 NtUserResolveDesktopForWOW(DWORD Unknown0)
1200 {
1201 STUB
1202 return 0;
1203 }
1204
1205 /*
1206 * @unimplemented
1207 */
1208 BOOL APIENTRY
1209 NtUserEndMenu(VOID)
1210 {
1211 STUB
1212
1213 return 0;
1214 }
1215
1216 /*
1217 * @implemented
1218 */
1219 /* NOTE: unused function */
1220 BOOL APIENTRY
1221 NtUserTrackPopupMenuEx(
1222 HMENU hMenu,
1223 UINT fuFlags,
1224 int x,
1225 int y,
1226 HWND hWnd,
1227 LPTPMPARAMS lptpm)
1228 {
1229 STUB
1230
1231 return FALSE;
1232 }
1233
1234 DWORD APIENTRY
1235 NtUserQuerySendMessage(DWORD Unknown0)
1236 {
1237 STUB;
1238
1239 return 0;
1240 }
1241
1242 /*
1243 * @unimplemented
1244 */
1245 DWORD APIENTRY
1246 NtUserAlterWindowStyle(DWORD Unknown0,
1247 DWORD Unknown1,
1248 DWORD Unknown2)
1249 {
1250 STUB
1251
1252 return(0);
1253 }
1254
1255 /*
1256 * NtUserSetWindowStationUser
1257 *
1258 * Status
1259 * @unimplemented
1260 */
1261
1262 DWORD APIENTRY
1263 NtUserSetWindowStationUser(
1264 DWORD Unknown0,
1265 DWORD Unknown1,
1266 DWORD Unknown2,
1267 DWORD Unknown3)
1268 {
1269 STUB
1270
1271 return 0;
1272 }
1273
1274 BOOL APIENTRY NtUserAddClipboardFormatListener(
1275 HWND hwnd
1276 )
1277 {
1278 STUB;
1279 return FALSE;
1280 }
1281
1282 BOOL APIENTRY NtUserRemoveClipboardFormatListener(
1283 HWND hwnd
1284 )
1285 {
1286 STUB;
1287 return FALSE;
1288 }
1289
1290 BOOL APIENTRY NtUserGetUpdatedClipboardFormats(
1291 PUINT lpuiFormats,
1292 UINT cFormats,
1293 PUINT pcFormatsOut
1294 )
1295 {
1296 STUB;
1297 return FALSE;
1298 }
1299
1300 /*
1301 * @unimplemented
1302 */
1303 DWORD
1304 APIENTRY
1305 NtUserGetCursorFrameInfo(
1306 DWORD Unknown0,
1307 DWORD Unknown1,
1308 DWORD Unknown2,
1309 DWORD Unknown3)
1310 {
1311 STUB
1312
1313 return 0;
1314 }
1315
1316 /*
1317 * @unimplemented
1318 */
1319 BOOL
1320 APIENTRY
1321 NtUserSetSystemCursor(
1322 HCURSOR hcur,
1323 DWORD id)
1324 {
1325 return FALSE;
1326 }
1327
1328 /* EOF */