4 * Copyright 1995 Alexandre Julliard
7 #ifndef __WINE_CALLBACK_H
8 #define __WINE_CALLBACK_H
13 extern int (*IF1632_CallLargeStack)( int (*func)(), void *arg );
15 #define CALL_LARGE_STACK(func,arg) \
16 (IF1632_CallLargeStack ? \
17 IF1632_CallLargeStack( (int(*)())(func), (void *)(arg) ) : \
18 ((int(*)())(func))((void *)arg))
20 /* List of the 16-bit callback functions. This list is used */
21 /* by the build program to generate the file if1632/callto16.S */
25 extern LONG CALLBACK CallTo16_regs_ (const CONTEXT *context);
26 extern WORD CALLBACK CallTo16_word_ (FARPROC16);
27 extern WORD CALLBACK CallTo16_word_w (FARPROC16,WORD);
28 extern LONG CALLBACK CallTo16_long_l (FARPROC16,LONG);
29 extern WORD CALLBACK CallTo16_word_ww (FARPROC16,WORD,WORD);
30 extern WORD CALLBACK CallTo16_word_wl (FARPROC16,WORD,LONG);
31 extern WORD CALLBACK CallTo16_word_ll (FARPROC16,LONG,LONG);
32 extern WORD CALLBACK CallTo16_word_www (FARPROC16,WORD,WORD,WORD);
33 extern WORD CALLBACK CallTo16_word_wwl (FARPROC16,WORD,WORD,LONG);
34 extern WORD CALLBACK CallTo16_word_wlw (FARPROC16,WORD,LONG,WORD);
35 extern LONG CALLBACK CallTo16_long_wwl (FARPROC16,WORD,WORD,LONG);
36 extern WORD CALLBACK CallTo16_word_llwl (FARPROC16,LONG,LONG,WORD,LONG);
37 extern WORD CALLBACK CallTo16_word_lwll (FARPROC16,LONG,WORD,LONG,LONG);
38 extern LONG CALLBACK CallTo16_long_wwwl (FARPROC16,WORD,WORD,WORD,LONG);
39 extern LONG CALLBACK CallTo16_wndp_wwwl (FARPROC16,WORD,WORD,WORD,LONG);
40 extern WORD CALLBACK CallTo16_word_lwww (FARPROC16,LONG,WORD,WORD,WORD);
41 extern WORD CALLBACK CallTo16_word_wwll (FARPROC16,WORD,WORD,LONG,LONG);
42 extern WORD CALLBACK CallTo16_word_wllwl(FARPROC16,WORD,LONG,LONG,WORD,LONG);
43 extern LONG CALLBACK CallTo16_long_lwwll(FARPROC16,LONG,WORD,WORD,LONG,LONG);
44 extern WORD CALLBACK CallTo16_word_wwlll(FARPROC16,WORD,WORD,LONG,LONG,LONG);
45 extern WORD CALLBACK CallTo16_word_wwwww(FARPROC16,WORD,WORD,WORD,WORD,WORD);
46 extern LONG CALLBACK CallTo16_wndp_lllllllwlwwwl(FARPROC16,LONG,LONG,LONG,LONG,
47 LONG,LONG,LONG,WORD,LONG,WORD,
49 extern WORD CALLBACK CallTo16_word_lwlll(FARPROC16,LONG,WORD,LONG,LONG,LONG);
50 extern WORD CALLBACK CallTo16_word_llll (FARPROC16,LONG,LONG,LONG,LONG);
51 extern LONG CALLBACK CallTo16_long_lwlll(FARPROC16,LONG,WORD,LONG,LONG,LONG);
52 extern LONG CALLBACK CallTo16_long_lwwllwlllllw(FARPROC16,LONG,WORD,WORD,LONG,
53 LONG,WORD,LONG,LONG,LONG,LONG,
56 #define CallDriverProc( func, dwId, msg, hdrvr, lparam1, lparam2 ) \
57 CallTo16_long_lwwll( func, dwId, msg, hdrvr, lparam1, lparam2 )
58 #define CallDriverCallback( func, hdev, msg, user, lparam1, lparam2 ) \
59 CallTo16_word_wwlll( func, hdev, msg, user, lparam1, lparam2 )
60 #define CallTimeFuncProc( func, id, msg, dwUser, dw1, dw2 ) \
61 CallTo16_word_wwlll( func, id, msg, dwUser, dw1, dw2 )
62 #define CallWindowsExitProc( func, nExitType ) \
63 CallTo16_word_w( func, nExitType )
64 #define CallWordBreakProc16( func, lpch, ichCurrent, cch, code ) \
65 CallTo16_word_lwww( func, lpch, ichCurrent, cch, code )
68 /* List of the 32-bit callback functions. This list is used */
69 /* by the build program to generate the file if1632/callto32.S */
71 extern LONG CALLBACK CallTo32_0( FARPROC32 );
72 extern LONG CALLBACK CallTo32_1( FARPROC32, DWORD );
73 extern LONG CALLBACK CallTo32_2( FARPROC32, DWORD, DWORD );
74 extern LONG CALLBACK CallTo32_3( FARPROC32, DWORD, DWORD, DWORD );
75 extern LONG CALLBACK CallTo32_4( FARPROC32, DWORD, DWORD, DWORD, DWORD );
76 extern LONG CALLBACK CallTo32_5( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD );
77 extern LONG CALLBACK CallTo32_6( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
78 extern LONG CALLBACK CallTo32_7( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
79 extern LONG CALLBACK CallTo32_8( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
80 extern LONG CALLBACK CallTo32_9( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
81 extern LONG CALLBACK CallTo32_10( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
82 extern LONG CALLBACK CallTo32_11( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
83 extern LONG CALLBACK CallTo32_12( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
84 extern LONG CALLBACK CallTo32_13( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD );
88 #define CallDriverProc( func, dwId, msg, hdrvr, lparam1, lparam2 ) \
89 (*func)( dwId, msg, hdrvr, lparam1, lparam2 )
90 #define CallDriverCallback( func, hdev, msg, user, lparam1, lparam2 ) \
91 (*func)( hdev, msg, user, lparam1, lparam2 )
92 #define CallTimeFuncProc( func, id, msg, dwUser, dw1, dw2 ) \
93 (*func)( id, msg, dwUser, dw1, dw2 )
94 #define CallWindowsExitProc( func, nExitType ) \
96 #define CallWordBreakProc16( func, lpch, ichCurrent, cch, code ) \
97 (*func)( lpch, ichCurrent, cch, code )
102 #endif /* __WINE_CALLBACK_H */