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