part 2/2 for implement GetAppCompatFlags
[reactos.git] / reactos / dll / win32 / user32 / misc / stubs.c
1 /* $Id$
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS user32.dll
5 * FILE: lib/user32/misc/stubs.c
6 * PURPOSE: User32.dll stubs
7 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * NOTES: If you implement a function, remove it from this file
9 * UPDATE HISTORY:
10 * 08-F05-2001 CSH Created
11 */
12
13 #include <user32.h>
14
15 #include <wine/debug.h>
16
17 WINE_DEFAULT_DEBUG_CHANNEL(user32);
18
19 /*
20 * @unimplemented
21 */
22 BOOL
23 STDCALL
24 AttachThreadInput(
25 DWORD idAttach,
26 DWORD idAttachTo,
27 BOOL fAttach)
28 {
29 UNIMPLEMENTED;
30 return FALSE;
31 }
32
33
34 /*
35 * @unimplemented
36 */
37 long
38 STDCALL
39 BroadcastSystemMessageA(
40 DWORD dwFlags,
41 LPDWORD lpdwRecipients,
42 UINT uiMessage,
43 WPARAM wParam,
44 LPARAM lParam)
45 {
46 UNIMPLEMENTED;
47 return 0;
48 }
49
50
51 /*
52 * @unimplemented
53 */
54 long
55 STDCALL
56 BroadcastSystemMessageW(
57 DWORD dwFlags,
58 LPDWORD lpdwRecipients,
59 UINT uiMessage,
60 WPARAM wParam,
61 LPARAM lParam)
62 {
63 UNIMPLEMENTED;
64 return 0;
65 }
66
67
68 /*
69 * @unimplemented
70 */
71 int
72 STDCALL
73 GetMouseMovePointsEx(
74 UINT cbSize,
75 LPMOUSEMOVEPOINT lppt,
76 LPMOUSEMOVEPOINT lpptBuf,
77 int nBufPoints,
78 DWORD resolution)
79 {
80 UNIMPLEMENTED;
81 return 0;
82 }
83
84
85 /*
86 * @unimplemented
87 */
88 BOOL
89 STDCALL
90 LockWindowUpdate(
91 HWND hWndLock)
92 {
93 UNIMPLEMENTED;
94 return FALSE;
95 }
96
97
98 /*
99 * @unimplemented
100 */
101 BOOL
102 STDCALL
103 LockWorkStation(VOID)
104 {
105 UNIMPLEMENTED;
106 return FALSE;
107 }
108
109
110 /*
111 * @unimplemented
112 */
113 DWORD
114 STDCALL
115 WaitForInputIdle(
116 HANDLE hProcess,
117 DWORD dwMilliseconds)
118 {
119 UNIMPLEMENTED;
120 return 0;
121 }
122
123 /******************************************************************************
124 * SetDebugErrorLevel [USER32.@]
125 * Sets the minimum error level for generating debugging events
126 *
127 * PARAMS
128 * dwLevel [I] Debugging error level
129 *
130 * @unimplemented
131 */
132 VOID
133 STDCALL
134 SetDebugErrorLevel( DWORD dwLevel )
135 {
136 DbgPrint("(%ld): stub\n", dwLevel);
137 }
138
139
140 /*
141 * @implemented
142 */
143 DWORD
144 STDCALL
145 GetAppCompatFlags ( HTASK hTask )
146 {
147 PW32THREADINFO ti = GetW32ThreadInfo();
148
149 if (ti == NULL)
150 {
151 return 0;
152 }
153
154 /* NOTE : GetAppCompatFlags retuns which compatible flags should be send back
155 * the return value is any of http://support.microsoft.com/kb/82860
156 * This text are direcly copy from the MSDN URL, so it does not get lost
157 *------------------------------------------------------------------------------
158 * Bit: 1
159 * Symbolic name: GACF_IGNORENODISCARD
160 *
161 * Meaning: Ignore NODISCARD flag if passed to GlobalAlloc(). C 6.x
162 * Runtime install library was allocating global memory
163 * improperly by incorrectly specifying the GMEM_NODISCARD bit.
164 *
165 * Problem: Setup for MS apps. does not work on 1M 286 machine.
166 *-----------------------------------------------------------------------
167 * Bit: 2
168 * Symbolic name: GACF_FORCETEXTBAND
169 *
170 * Meaning: Separate text band from graphics band. Forces separate band
171 * for text, disallowing 3.1 optimization where Text and
172 * Graphics are printed in the same band. Word Perfect was
173 * assuming text had to go in second band.
174 *
175 * Problem: Can't print graphics in landscape mode. The
176 * compatibility switch doesn't completely fix the
177 * problem, just fixes it for certain memory
178 * configurations.
179 *-----------------------------------------------------------------------
180 * Bit: 4
181 *
182 * Symbolic name: GACF_ONELANDGRXBAND
183 * Meaning: One graphics band only. Allows only one Landscape graphics
184 * band. Take as much memory as possible for this band. What
185 * doesn't fit in that band doesn't print.
186 *
187 * Problem: Can't print graphics in landscape mode. The
188 * compatibility switch doesn't completely fix the
189 * problem, just fixes it for certain memory configurations.
190 *-----------------------------------------------------------------------
191 * Bit: 8
192 * Symbolic name: GACF_IGNORETOPMOST
193 *
194 * Meaning: Ignore topmost windows for GetWindow(HWND,GW_HWNDFIRST)
195 *
196 * Problem: CCMail would GP fault when running any Windows applet
197 * from CCMail because it assumed the applet it starts
198 * will be at the top of the window list when winexec
199 * returns. Because of the addition of TOPMOST windows in
200 * Win , this isn't the case. The compatibility bit
201 * fixes this so GetWindow doesn't return a topmost window.
202 *-----------------------------------------------------------------------
203 * Bit: 10
204 * Symbolic name: GACF_CALLTTDEVICE
205 *
206 * Meaning: Set the DEVICE_FONTTYPE bit in the FontType for TT fonts
207 * returned by EnumFonts().
208 *
209 * Problem: WordPerfect was assuming TT fonts enumerated by the
210 * printer would have the device bit set. TT fonts are not
211 * device fonts, so this bit wasn't set. There were
212 * various font mapping problems, such as TNR appearing in
213 * Script or Symbol.
214 *-----------------------------------------------------------------------
215 * Bit: 20
216 *
217 * Symbolic name: GACF_MULTIPLEBANDS
218 *
219 * Meaning: Manually break graphics output into more than one band when printing.
220 *
221 * Problem: Freelance wouldn't print graphics when there was enough
222 * memory and unidrv used only one band for printing. If
223 * the first band was the entire page, it didn't issue any
224 * graphics calls, thinking it was the text only band.
225 * This forces unidrv to use multiple bands.
226 *-----------------------------------------------------------------------
227 * Bit: 40
228 * Symbolic name: GACF_ALWAYSSENDNCPAINT
229 *
230 * Meaning: SetWindowPos() must send a WM_NCPAINT message to all
231 * children, disallowing the 3.1 optimization where this message
232 * is only sent to windows that must be redrawn.
233 *
234 * Problem: File window overlaps the toolbox and doesn't repaint
235 * when a new file is opened. Pixie used the receipt of
236 * WM_NCPAINT messages to determine that they may need to
237 * reposition themselves at the top of the list. Win 3.0
238 * used to send the messages to windows even when they
239 * didn't need to be sent; in particular if the window was
240 * within the bounding rect of any update region involved
241 * in a window management operation.
242 *
243 * Problem: Repaint problems with dialog boxes left on the screen
244 * after file.open or file.new operations.
245 *
246 * Problem: Tool window is not available when opening the app.
247 *-----------------------------------------------------------------------
248 * Bit: 80
249 *-----------------------------------------------------------------------
250 * Bit: 100
251 *-----------------------------------------------------------------------
252 * Bit: 200
253 *-----------------------------------------------------------------------
254 * Bit: 800
255 *-----------------------------------------------------------------------
256 * Bit: 1000
257 *-----------------------------------------------------------------------
258 * Bit: 2000
259 *-----------------------------------------------------------------------
260 * Bit: 4000
261 *-----------------------------------------------------------------------
262 * Bit: 8000
263 *
264 * Symbolic name: GACF_FORCETTGRAPHICS
265 *
266 * Meaning: no expain in msdn
267 *
268 * Problem: Freelance wouldn't print TT unless print TT as graphics was selected.
269 *-----------------------------------------------------------------------
270 * Bit: 10000
271 *
272 * Symbolic name: GACF_NOHRGN1
273 * Meaning: This bit affects applications that depend on a bug in the
274 * 3.0 GetUpdateRect() function. Under 3.0, GetUpdateRect
275 * would not always return the rectangle in logical DC
276 * coordinates: if the entire window was invalid, the rectangle
277 * was sometimes returned in window coordinates. This bug was
278 * fixed for 3.0 and 3.1 apps in Windows 3.1: coordinates are
279 * ALWAYS returned in logical coordinates. This bit re-
280 * introduces the bug in GetUpdateRect(), for those
281 * applications that depend on this behavior.
282 *
283 * Problem: Canvas not redrawn properly opening specific MSDraw objects in Winword.
284 *-----------------------------------------------------------------------
285 * Bit: 20000
286 *
287 * Symbolic name: GACF_NCCALCSIZEONMOVE
288 * Meaning: 3.1 and higher optimized WM_NCCALCSIZE if a window was just moving,
289 * where 3.0 always sent it. This bit causes it to be sent always, as in 3.0.
290 *
291 * Problem: Navigator bar of window fails to redraw when the window
292 * is moved across the desktop.
293 *-----------------------------------------------------------------------
294 * Bit: 40000
295 *
296 * Symbolic name: GACF_SENDMENUDBLCLK
297 *
298 * Meaning: Passes double-clicks on a menu bar on to the app. With this
299 * bit set, if the user double clicks on the menu bar when a
300 * menu is visible, we end processing of the menu and pass the
301 * double click message on to the application. This allows Just
302 * Write to detect double click on the system menu of a
303 * maximized MDI child. The normal (and expected) behavior is
304 * for Windows to detect the double click on a sys menu of a
305 * maximized child and send the app a WM_SYSCOMMAND SC_CLOSE
306 * message which is what happens with a non-maximized MDI child window.
307 *
308 * Problem: Sub-editors (such as footer and header editors)
309 * couldn't be closed by double-clicking the system menu.
310 *
311 *-----------------------------------------------------------------------
312 * Bit: 80000
313 *
314 * Symbolic name: GACF_30AVGWIDTH
315 *
316 * Meaning: Changed the way we calculate avg width, this fixes it for
317 * postscript. Scale all fonts by 7/8. This flag has been
318 * added for TurboTax for printing with pscript driver. Turbo
319 * Tax has hard coded average width it uses for selecting fonts.
320 * Since we changed the way we calculate avg width to match what
321 * is in TT, Turbo Tax is broken.
322 *
323 * Problem: 1040 tax forms wouldn't print correctly.
324 */
325
326 return ti->dwAppsCompatibleFlags;
327 }
328
329 /*
330 * @unimplemented
331 */
332 UINT
333 STDCALL
334 GetInternalWindowPos(
335 HWND hwnd,
336 LPRECT rectWnd,
337 LPPOINT ptIcon
338 )
339 {
340 UNIMPLEMENTED;
341 return FALSE;
342 }
343
344 /*
345 * @unimplemented
346 */
347 VOID
348 STDCALL
349 LoadLocalFonts ( VOID )
350 {
351 UNIMPLEMENTED;
352 }
353
354 /*
355 * @unimplemented
356 */
357 VOID
358 STDCALL
359 LoadRemoteFonts ( VOID )
360 {
361 UNIMPLEMENTED;
362 }
363
364 /*
365 * @unimplemented
366 */
367 VOID
368 STDCALL
369 SetInternalWindowPos(
370 HWND hwnd,
371 UINT showCmd,
372 LPRECT rect,
373 LPPOINT pt
374 )
375 {
376 UNIMPLEMENTED;
377 }
378
379 /*
380 * @unimplemented
381 */
382 VOID
383 STDCALL
384 RegisterSystemThread ( DWORD flags, DWORD reserved )
385 {
386 UNIMPLEMENTED;
387 }
388
389 /*
390 * @unimplemented
391 */
392 DWORD
393 STDCALL
394 RegisterTasklist ( DWORD x )
395 {
396 UNIMPLEMENTED;
397 return FALSE;
398 }
399
400 /*
401 * @unimplemented
402 */
403 DWORD
404 STDCALL
405 DragObject(
406 HWND hwnd1,
407 HWND hwnd2,
408 UINT u1,
409 DWORD dw1,
410 HCURSOR hc1
411 )
412 {
413 return NtUserDragObject(hwnd1, hwnd2, u1, dw1, hc1);
414 }
415
416
417
418
419 /*
420 * @implemented
421 */
422 UINT
423 STDCALL
424 UserRealizePalette ( HDC hDC )
425 {
426 return NtUserCallOneParam((DWORD) hDC, ONEPARAM_ROUTINE_REALIZEPALETTE);
427 }
428
429 /*
430 * @unimplemented
431 */
432 HANDLE
433 WINAPI
434 SetSysColorsTemp(
435 const COLORREF *pPens,
436 const HBRUSH *pBrushes,
437 INT n
438 )
439 {
440 UNIMPLEMENTED;
441 return FALSE;
442 }
443
444 /*
445 * @unimplemented
446 */
447 WORD
448 STDCALL
449 CascadeChildWindows ( HWND hWndParent, WORD wFlags )
450 {
451 UNIMPLEMENTED;
452 return FALSE;
453 }
454
455 /*
456 * @unimplemented
457 */
458 WORD
459 STDCALL
460 TileChildWindows ( HWND hWndParent, WORD wFlags )
461 {
462 UNIMPLEMENTED;
463 return FALSE;
464 }
465
466 /*
467 * @unimplemented
468 */
469 HDESK
470 STDCALL
471 GetInputDesktop ( VOID )
472 {
473 UNIMPLEMENTED;
474 return FALSE;
475 }
476
477 /*
478 * @unimplemented
479 */
480 BOOL
481 STDCALL
482 GetAccCursorInfo ( PCURSORINFO pci )
483 {
484 UNIMPLEMENTED;
485 return FALSE;
486 }
487
488 /*
489 * @unimplemented
490 */
491 BOOL
492 STDCALL
493 ClientThreadSetup ( VOID )
494 {
495 UNIMPLEMENTED;
496 return FALSE;
497 }
498
499 /*
500 * @unimplemented
501 */
502 UINT
503 STDCALL
504 GetRawInputDeviceInfoW(
505 HANDLE hDevice,
506 UINT uiCommand,
507 LPVOID pData,
508 PUINT pcbSize)
509 {
510 UNIMPLEMENTED;
511 return FALSE;
512 }
513
514 /*
515 * @unimplemented
516 */
517 LONG
518 STDCALL
519 BroadcastSystemMessageExW(
520 DWORD dwflags,
521 LPDWORD lpdwRecipients,
522 UINT uiMessage,
523 WPARAM wParam,
524 LPARAM lParam,
525 PBSMINFO pBSMInfo)
526 {
527 UNIMPLEMENTED;
528 return FALSE;
529 }
530
531 /*
532 * @unimplemented
533 */
534 LONG
535 STDCALL
536 CsrBroadcastSystemMessageExW(
537 DWORD dwflags,
538 LPDWORD lpdwRecipients,
539 UINT uiMessage,
540 WPARAM wParam,
541 LPARAM lParam,
542 PBSMINFO pBSMInfo)
543 {
544 UNIMPLEMENTED;
545 return FALSE;
546 }
547
548 /*
549 * @unimplemented
550 */
551 UINT
552 STDCALL
553 GetRawInputDeviceInfoA(
554 HANDLE hDevice,
555 UINT uiCommand,
556 LPVOID pData,
557 PUINT pcbSize)
558 {
559 UNIMPLEMENTED;
560 return FALSE;
561 }
562
563 /*
564 * @unimplemented
565 */
566 LONG
567 STDCALL
568 BroadcastSystemMessageExA(
569 DWORD dwflags,
570 LPDWORD lpdwRecipients,
571 UINT uiMessage,
572 WPARAM wParam,
573 LPARAM lParam,
574 PBSMINFO pBSMInfo)
575 {
576 UNIMPLEMENTED;
577 return FALSE;
578 }
579
580 /*
581 * @unimplemented
582 */
583 BOOL
584 STDCALL
585 AlignRects(LPRECT rect, DWORD b, DWORD c, DWORD d)
586 {
587 UNIMPLEMENTED;
588 return FALSE;
589 }
590
591 /*
592 * @unimplemented
593 */
594 LRESULT
595 STDCALL
596 DefRawInputProc(
597 PRAWINPUT* paRawInput,
598 INT nInput,
599 UINT cbSizeHeader)
600 {
601 UNIMPLEMENTED;
602 return FALSE;
603 }
604
605 /*
606 * @unimplemented
607 */
608 BOOL
609 STDCALL
610 GetLayeredWindowAttributes(
611 HWND hwnd,
612 COLORREF *pcrKey,
613 BYTE *pbAlpha,
614 DWORD *pdwFlags)
615 {
616 UNIMPLEMENTED;
617 return FALSE;
618 }
619
620 /*
621 * @unimplemented
622 */
623 UINT
624 STDCALL
625 GetRawInputBuffer(
626 PRAWINPUT pData,
627 PUINT pcbSize,
628 UINT cbSizeHeader)
629 {
630 UNIMPLEMENTED;
631 return FALSE;
632 }
633
634 /*
635 * @unimplemented
636 */
637 UINT
638 STDCALL
639 GetRawInputData(
640 HRAWINPUT hRawInput,
641 UINT uiCommand,
642 LPVOID pData,
643 PUINT pcbSize,
644 UINT cbSizeHeader)
645 {
646 UNIMPLEMENTED;
647 return FALSE;
648 }
649
650 /*
651 * @unimplemented
652 */
653 UINT
654 STDCALL
655 GetRawInputDeviceList(
656 PRAWINPUTDEVICELIST pRawInputDeviceList,
657 PUINT puiNumDevices,
658 UINT cbSize)
659 {
660 UNIMPLEMENTED;
661 return FALSE;
662 }
663
664 /*
665 * @unimplemented
666 */
667 UINT
668 STDCALL
669 GetRegisteredRawInputDevices(
670 PRAWINPUTDEVICE pRawInputDevices,
671 PUINT puiNumDevices,
672 UINT cbSize)
673 {
674 UNIMPLEMENTED;
675 return FALSE;
676 }
677
678 /*
679 * @unimplemented
680 */
681 BOOL
682 STDCALL
683 PrintWindow(
684 HWND hwnd,
685 HDC hdcBlt,
686 UINT nFlags)
687 {
688 UNIMPLEMENTED;
689 return FALSE;
690 }
691
692 /*
693 * @unimplemented
694 */
695 BOOL
696 STDCALL
697 RegisterRawInputDevices(
698 PCRAWINPUTDEVICE pRawInputDevices,
699 UINT uiNumDevices,
700 UINT cbSize)
701 {
702 UNIMPLEMENTED;
703 return FALSE;
704 }
705
706 /*
707 * @unimplemented
708 */
709 UINT
710 STDCALL
711 WINNLSGetIMEHotkey( HWND hwnd)
712 {
713 UNIMPLEMENTED;
714 return FALSE;
715 }
716
717 /*
718 * @unimplemented
719 */
720 BOOL
721 STDCALL
722 WINNLSEnableIME( HWND hwnd, BOOL enable)
723 {
724 UNIMPLEMENTED;
725 return FALSE;
726 }
727
728 /*
729 * @unimplemented
730 */
731 BOOL
732 STDCALL
733 WINNLSGetEnableStatus( HWND hwnd)
734 {
735 UNIMPLEMENTED;
736 return FALSE;
737 }
738
739 /*
740 * @unimplemented
741 */
742 BOOL
743 STDCALL
744 IMPSetIMEW( HWND hwnd, LPIMEPROW ime)
745 {
746 UNIMPLEMENTED;
747 return FALSE;
748 }
749
750 /*
751 * @unimplemented
752 */
753 BOOL
754 STDCALL
755 IMPQueryIMEW( LPIMEPROW ime)
756 {
757 UNIMPLEMENTED;
758 return FALSE;
759 }
760
761 /*
762 * @unimplemented
763 */
764 BOOL
765 STDCALL
766 IMPGetIMEW( HWND hwnd, LPIMEPROW ime)
767 {
768 UNIMPLEMENTED;
769 return FALSE;
770 }
771
772 /*
773 * @unimplemented
774 */
775 BOOL
776 STDCALL
777 IMPSetIMEA( HWND hwnd, LPIMEPROA ime)
778 {
779 UNIMPLEMENTED;
780 return FALSE;
781 }
782
783 /*
784 * @unimplemented
785 */
786 BOOL
787 STDCALL
788 IMPQueryIMEA( LPIMEPROA ime)
789 {
790 UNIMPLEMENTED;
791 return FALSE;
792 }
793
794 /*
795 * @unimplemented
796 */
797 BOOL
798 STDCALL
799 IMPGetIMEA( HWND hwnd, LPIMEPROA ime)
800 {
801 UNIMPLEMENTED;
802 return FALSE;
803 }
804
805 /*
806 * @unimplemented
807 */
808 LRESULT
809 STDCALL
810 SendIMEMessageExW(HWND hwnd,LPARAM lparam)
811 {
812 UNIMPLEMENTED;
813 return FALSE;
814 }
815
816 /*
817 * @unimplemented
818 */
819 LRESULT
820 STDCALL
821 SendIMEMessageExA(HWND hwnd, LPARAM lparam)
822 {
823 UNIMPLEMENTED;
824 return FALSE;
825 }
826
827 /*
828 * @unimplemented
829 */
830 BOOL STDCALL DisplayExitWindowsWarnings(ULONG flags)
831 {
832 UNIMPLEMENTED;
833 return FALSE;
834 }
835
836 /*
837 * @unimplemented
838 */
839 BOOL STDCALL ReasonCodeNeedsBugID(ULONG reasoncode)
840 {
841 UNIMPLEMENTED;
842 return FALSE;
843 }
844
845 /*
846 * @unimplemented
847 */
848 BOOL STDCALL ReasonCodeNeedsComment(ULONG reasoncode)
849 {
850 UNIMPLEMENTED;
851 return FALSE;
852 }
853
854 /*
855 * @unimplemented
856 */
857 BOOL STDCALL CtxInitUser32(VOID)
858 {
859 UNIMPLEMENTED;
860 return FALSE;
861 }
862
863 /*
864 * @unimplemented
865 */
866 BOOL STDCALL EnterReaderModeHelper(HWND hwnd)
867 {
868 UNIMPLEMENTED;
869 return FALSE;
870 }
871
872 /*
873 * @unimplemented
874 */
875 DWORD
876 STDCALL
877 GetAppCompatFlags2(HTASK hTask)
878 {
879 UNIMPLEMENTED;
880 return FALSE;
881 }
882
883 /*
884 * @unimplemented
885 */
886 VOID STDCALL InitializeLpkHooks(FARPROC *hookfuncs)
887 {
888 UNIMPLEMENTED;
889 }
890
891 /*
892 * @unimplemented
893 */
894 WORD STDCALL InitializeWin32EntryTable(UCHAR* EntryTablePlus0x1000)
895 {
896 UNIMPLEMENTED;
897 return FALSE;
898 }
899
900 /*
901 * @unimplemented
902 */
903 BOOL STDCALL IsServerSideWindow(HWND wnd)
904 {
905 UNIMPLEMENTED;
906 return FALSE;
907 }
908
909 typedef BOOL (CALLBACK *THEME_HOOK_FUNC) (DWORD state,PVOID arg2); //return type and 2nd parameter unknown
910 /*
911 * @unimplemented
912 */
913 BOOL STDCALL RegisterUserApiHook(HINSTANCE instance,THEME_HOOK_FUNC proc)
914 {
915 UNIMPLEMENTED;
916 return FALSE;
917 }
918
919 /*
920 * @unimplemented
921 */
922 BOOL STDCALL UnregisterUserApiHook(VOID)
923 {
924 UNIMPLEMENTED;
925 return FALSE;
926 }
927
928 /*
929 * @unimplemented
930 */
931 HKL STDCALL LoadKeyboardLayoutEx(DWORD unknown,LPCWSTR pwszKLID,UINT Flags) //1st parameter unknown
932 {
933 UNIMPLEMENTED;
934 return FALSE;
935 }
936
937 /*
938 * @unimplemented
939 */
940 VOID STDCALL AllowForegroundActivation(VOID)
941 {
942 UNIMPLEMENTED;
943 }
944
945 /*
946 * @unimplemented
947 */
948 VOID STDCALL ShowStartGlass(DWORD unknown)
949 {
950 UNIMPLEMENTED;
951 }
952
953 /*
954 * @unimplemented
955 */
956 BOOL STDCALL DdeGetQualityOfService(HWND hWnd, DWORD Reserved, PSECURITY_QUALITY_OF_SERVICE pqosPrev)
957 {
958 UNIMPLEMENTED;
959 return FALSE;
960 }
961
962
963 /*
964 * @unimplemented
965 */
966 DWORD STDCALL User32InitializeImmEntryTable(PVOID p)
967 {
968 UNIMPLEMENTED;
969 return 0;
970 }
971