2 * Copyright 1995 Martin von Loewis
17 /* #define DEBUG_RELAY */
20 WIN32_builtin
*WIN32_builtin_list
;
22 int RELAY32_Init(void)
25 /* Add a call for each DLL */
32 /* Why should it fail, anyways? */
36 WIN32_builtin
*RELAY32_GetBuiltinDLL(char *name
)
39 for(it
=WIN32_builtin_list
;it
;it
=it
->next
)
40 if(strcmp(name
,it
->name
)==0)
45 void RELAY32_Unimplemented(char *dll
, int item
)
48 fprintf( stderr
, "No handler for routine %s.%d", dll
, item
);
49 Dll
=RELAY32_GetBuiltinDLL(dll
);
50 if(Dll
&& Dll
->functions
[item
].name
)
51 fprintf(stderr
, "(%s?)\n", Dll
->functions
[item
].name
);
53 fprintf(stderr
, "\n");
58 void *RELAY32_GetEntryPoint(char *dll_name
, char *item
, int hint
)
62 dprintf_module(stddeb
, "Looking for %s in %s, hint %x\n",
63 item
? item
: "(no name)", dll_name
, hint
);
64 dll
=RELAY32_GetBuiltinDLL(dll_name
);
66 /* import by ordinal */
68 if(hint
&& hint
<dll
->size
)return dll
->functions
[hint
].definition
;
72 if(hint
&& hint
<dll
->size
&&
73 dll
->functions
[hint
].name
&&
74 strcmp(item
,dll
->functions
[hint
].name
)==0)
75 return dll
->functions
[hint
].definition
;
76 /* hint is incorrect, search for name */
77 for(i
=1;i
<dll
->size
;i
++)
78 if(strcmp(item
,dll
->functions
[i
].name
)==0)
79 return dll
->functions
[i
].definition
;
80 /* function at hint has no name (unimplemented) */
81 if(hint
&& hint
<dll
->size
&& !dll
->functions
[hint
].name
)
83 dll
->functions
[hint
].name
=strdup(item
);
84 dprintf_module(stddeb
, "Returning unimplemented function %s.%d\n",
86 return dll
->functions
[hint
].definition
;
88 printf("Not found\n");
92 void RELAY32_DebugEnter(char *dll
,char *name
)
94 dprintf_relay(stddeb
, "Entering %s.%s\n",dll
,name
);
97 LONG
RELAY32_CallWindowProc( WNDPROC func
, int hwnd
, int message
,
98 int wParam
, int lParam
)
101 SpyMessage(hwnd
, message
, wParam
, lParam
);
109 : "g" (lParam
), "g" (wParam
), "g" (message
), "g" (hwnd
), "g" (func
)