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