Sync to trunk r65566.
[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 NTSTATUS
758 APIENTRY
759 NtUserQueryInformationThread(IN HANDLE ThreadHandle,
760 IN USERTHREADINFOCLASS ThreadInformationClass,
761 OUT PVOID ThreadInformation,
762 IN ULONG ThreadInformationLength)
763 {
764 STUB;
765 return STATUS_SUCCESS;
766 }
767
768 DWORD
769 APIENTRY
770 NtUserQueryInputContext(
771 DWORD dwUnknown1,
772 DWORD dwUnknown2)
773 {
774 STUB;
775 return 0;
776 }
777
778 BOOL
779 APIENTRY
780 NtUserRealInternalGetMessage(
781 LPMSG lpMsg,
782 HWND hWnd,
783 UINT wMsgFilterMin,
784 UINT wMsgFilterMax,
785 UINT wRemoveMsg,
786 BOOL bGMSG)
787 {
788 STUB;
789 return 0;
790 }
791
792 BOOL
793 APIENTRY
794 NtUserRealWaitMessageEx(
795 DWORD dwWakeMask,
796 UINT uTimeout)
797 {
798 STUB;
799 return 0;
800 }
801
802 BOOL
803 APIENTRY
804 NtUserRegisterRawInputDevices(
805 IN PCRAWINPUTDEVICE pRawInputDevices,
806 IN UINT uiNumDevices,
807 IN UINT cbSize)
808 {
809 STUB;
810 return 0;
811 }
812
813 DWORD
814 APIENTRY
815 NtUserResolveDesktop(
816 DWORD dwUnknown1,
817 DWORD dwUnknown2,
818 DWORD dwUnknown3,
819 DWORD dwUnknown4)
820 {
821 STUB;
822 return 0;
823 }
824
825 DWORD
826 APIENTRY
827 NtUserSetAppImeLevel(
828 DWORD dwUnknown1,
829 DWORD dwUnknown2)
830 {
831 STUB;
832 return 0;
833 }
834
835 DWORD
836 APIENTRY
837 NtUserSetImeInfoEx(
838 DWORD dwUnknown1)
839 {
840 STUB;
841 return 0;
842 }
843
844 DWORD
845 APIENTRY
846 NtUserSetInformationProcess(
847 DWORD dwUnknown1,
848 DWORD dwUnknown2,
849 DWORD dwUnknown3,
850 DWORD dwUnknown4)
851 {
852 STUB;
853 return 0;
854 }
855
856 NTSTATUS
857 APIENTRY
858 NtUserSetInformationThread(IN HANDLE ThreadHandle,
859 IN USERTHREADINFOCLASS ThreadInformationClass,
860 IN PVOID ThreadInformation,
861 IN ULONG ThreadInformationLength)
862
863 {
864 if (ThreadInformationClass == UserThreadInitiateShutdown)
865 {
866 ERR("Shutdown initiated\n");
867 }
868 else if (ThreadInformationClass == UserThreadEndShutdown)
869 {
870 ERR("Shutdown ended\n");
871 }
872 else
873 {
874 STUB;
875 }
876
877 return STATUS_SUCCESS;
878 }
879
880 DWORD
881 APIENTRY
882 NtUserSetThreadLayoutHandles(
883 DWORD dwUnknown1,
884 DWORD dwUnknown2)
885 {
886 STUB;
887 return 0;
888 }
889
890 BOOL
891 APIENTRY
892 NtUserSoundSentry(VOID)
893 {
894 STUB;
895 return 0;
896 }
897
898 DWORD
899 APIENTRY
900 NtUserTestForInteractiveUser(
901 DWORD dwUnknown1)
902 {
903 STUB;
904 return 0;
905 }
906
907 /* http://www.cyber-ta.org/releases/malware-analysis/public/SOURCES/b47155634ccb2c30630da7e3666d3d07/b47155634ccb2c30630da7e3666d3d07.trace.html#NtUserGetIconSize */
908 DWORD
909 APIENTRY
910 NtUserCalcMenuBar(
911 DWORD dwUnknown1,
912 DWORD dwUnknown2,
913 DWORD dwUnknown3,
914 DWORD dwUnknown4,
915 DWORD dwUnknown5)
916 {
917 STUB;
918 return 0;
919 }
920
921 DWORD
922 APIENTRY
923 NtUserPaintMenuBar(
924 DWORD dwUnknown1,
925 DWORD dwUnknown2,
926 DWORD dwUnknown3,
927 DWORD dwUnknown4,
928 DWORD dwUnknown5,
929 DWORD dwUnknown6)
930 {
931 STUB;
932 return 0;
933 }
934
935
936 DWORD
937 APIENTRY
938 NtUserRemoteConnect(
939 DWORD dwUnknown1,
940 DWORD dwUnknown2,
941 DWORD dwUnknown3)
942 {
943 STUB;
944 return 0;
945 }
946
947 DWORD
948 APIENTRY
949 NtUserRemoteRedrawRectangle(
950 DWORD dwUnknown1,
951 DWORD dwUnknown2,
952 DWORD dwUnknown3,
953 DWORD dwUnknown4)
954 {
955 STUB;
956 return 0;
957 }
958
959 DWORD
960 APIENTRY
961 NtUserRemoteRedrawScreen(VOID)
962 {
963 STUB;
964 return 0;
965 }
966
967 DWORD
968 APIENTRY
969 NtUserRemoteStopScreenUpdates(VOID)
970 {
971 STUB;
972 return 0;
973 }
974
975 DWORD
976 APIENTRY
977 NtUserCtxDisplayIOCtl(
978 DWORD dwUnknown1,
979 DWORD dwUnknown2,
980 DWORD dwUnknown3)
981 {
982 STUB;
983 return 0;
984 }
985
986 /*
987 * @unimplemented
988 */
989 DWORD
990 APIENTRY
991 NtUserDrawMenuBarTemp(
992 HWND hWnd,
993 HDC hDC,
994 PRECT hRect,
995 HMENU hMenu,
996 HFONT hFont)
997 {
998 /* We'll use this function just for caching the menu bar */
999 STUB
1000 return 0;
1001 }
1002
1003 /*
1004 * FillWindow: Called from User; Dialog, Edit and ListBox procs during a WM_ERASEBKGND.
1005 */
1006 /*
1007 * @unimplemented
1008 */
1009 BOOL APIENTRY
1010 NtUserFillWindow(HWND hWndPaint,
1011 HWND hWndPaint1,
1012 HDC hDC,
1013 HBRUSH hBrush)
1014 {
1015 STUB
1016
1017 return 0;
1018 }
1019
1020 /*
1021 * @unimplemented
1022 */
1023 BOOL APIENTRY
1024 NtUserLockWindowUpdate(HWND hWnd)
1025 {
1026 STUB
1027
1028 return 0;
1029 }
1030
1031 /*
1032 * @unimplemented
1033 */
1034 DWORD APIENTRY
1035 NtUserSetImeOwnerWindow(DWORD Unknown0,
1036 DWORD Unknown1)
1037 {
1038 STUB
1039
1040 return 0;
1041 }
1042
1043 BOOL
1044 APIENTRY
1045 NtUserGetLayeredWindowAttributes(
1046 HWND hwnd,
1047 COLORREF *pcrKey,
1048 BYTE *pbAlpha,
1049 DWORD *pdwFlags)
1050 {
1051 STUB;
1052 return 0;
1053 }
1054
1055 /*
1056 * @unimplemented
1057 */
1058 BOOL APIENTRY
1059 NtUserSetLayeredWindowAttributes(HWND hwnd,
1060 COLORREF crKey,
1061 BYTE bAlpha,
1062 DWORD dwFlags)
1063 {
1064 STUB;
1065 return FALSE;
1066 }
1067
1068 /*
1069 * @unimplemented
1070 */
1071 BOOL
1072 APIENTRY
1073 NtUserUpdateLayeredWindow(
1074 HWND hwnd,
1075 HDC hdcDst,
1076 POINT *pptDst,
1077 SIZE *psize,
1078 HDC hdcSrc,
1079 POINT *pptSrc,
1080 COLORREF crKey,
1081 BLENDFUNCTION *pblend,
1082 DWORD dwFlags,
1083 RECT *prcDirty)
1084 {
1085 STUB
1086
1087 return 0;
1088 }
1089
1090 /*
1091 * NtUserResolveDesktopForWOW
1092 *
1093 * Status
1094 * @unimplemented
1095 */
1096
1097 DWORD APIENTRY
1098 NtUserResolveDesktopForWOW(DWORD Unknown0)
1099 {
1100 STUB
1101 return 0;
1102 }
1103
1104 /*
1105 * @unimplemented
1106 */
1107 BOOL APIENTRY
1108 NtUserEndMenu(VOID)
1109 {
1110 STUB
1111
1112 return 0;
1113 }
1114
1115 /*
1116 * @implemented
1117 */
1118 /* NOTE: unused function */
1119 BOOL APIENTRY
1120 NtUserTrackPopupMenuEx(
1121 HMENU hMenu,
1122 UINT fuFlags,
1123 int x,
1124 int y,
1125 HWND hWnd,
1126 LPTPMPARAMS lptpm)
1127 {
1128 STUB
1129
1130 return FALSE;
1131 }
1132
1133 DWORD APIENTRY
1134 NtUserQuerySendMessage(DWORD Unknown0)
1135 {
1136 STUB;
1137
1138 return 0;
1139 }
1140
1141 /*
1142 * @unimplemented
1143 */
1144 DWORD APIENTRY
1145 NtUserAlterWindowStyle(DWORD Unknown0,
1146 DWORD Unknown1,
1147 DWORD Unknown2)
1148 {
1149 STUB
1150
1151 return(0);
1152 }
1153
1154 /*
1155 * NtUserSetWindowStationUser
1156 *
1157 * Status
1158 * @unimplemented
1159 */
1160
1161 DWORD APIENTRY
1162 NtUserSetWindowStationUser(
1163 DWORD Unknown0,
1164 DWORD Unknown1,
1165 DWORD Unknown2,
1166 DWORD Unknown3)
1167 {
1168 STUB
1169
1170 return 0;
1171 }
1172
1173 BOOL APIENTRY NtUserAddClipboardFormatListener(
1174 HWND hwnd
1175 )
1176 {
1177 STUB;
1178 return FALSE;
1179 }
1180
1181 BOOL APIENTRY NtUserRemoveClipboardFormatListener(
1182 HWND hwnd
1183 )
1184 {
1185 STUB;
1186 return FALSE;
1187 }
1188
1189 BOOL APIENTRY NtUserGetUpdatedClipboardFormats(
1190 PUINT lpuiFormats,
1191 UINT cFormats,
1192 PUINT pcFormatsOut
1193 )
1194 {
1195 STUB;
1196 return FALSE;
1197 }
1198
1199 /*
1200 * @unimplemented
1201 */
1202 BOOL
1203 APIENTRY
1204 NtUserSetSystemCursor(
1205 HCURSOR hcur,
1206 DWORD id)
1207 {
1208 return FALSE;
1209 }
1210
1211 /* EOF */