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