Module: wine Branch: master Commit: 2afb86337288d320969a5d16bd9d7243122a1051 URL: https://source.winehq.org/git/wine.git/?a=commit;h=2afb86337288d320969a5d16b...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Aug 6 12:26:23 2019 +0200
winecrt0: Add __delayLoadHelper2.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winecrt0/delay_load.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/dlls/winecrt0/delay_load.c b/dlls/winecrt0/delay_load.c index 0589b62..8c8a9cc 100644 --- a/dlls/winecrt0/delay_load.c +++ b/dlls/winecrt0/delay_load.c @@ -18,13 +18,27 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#if 0 -#pragma makedep unix -#endif - #include <stdarg.h> #include "windef.h" #include "winbase.h" +#include "delayloadhandler.h" + +void *WINAPI ResolveDelayLoadedAPI( void* base, const IMAGE_DELAYLOAD_DESCRIPTOR* desc, + PDELAYLOAD_FAILURE_DLL_CALLBACK dllhook, + PDELAYLOAD_FAILURE_SYSTEM_ROUTINE syshook, + IMAGE_THUNK_DATA* addr, ULONG flags ); +void *WINAPI DelayLoadFailureHook( LPCSTR name, LPCSTR function ); + +#ifdef _WIN32 + +extern IMAGE_DOS_HEADER __ImageBase; + +FARPROC WINAPI __delayLoadHelper2( const IMAGE_DELAYLOAD_DESCRIPTOR *descr, IMAGE_THUNK_DATA *addr ) +{ + return ResolveDelayLoadedAPI( &__ImageBase, descr, NULL, DelayLoadFailureHook, addr, 0 ); +} + +#else /* _WIN32 */
struct ImgDelayDescr { @@ -40,8 +54,6 @@ struct ImgDelayDescr
extern struct ImgDelayDescr __wine_spec_delay_imports[];
-extern FARPROC WINAPI DelayLoadFailureHook( LPCSTR name, LPCSTR function ); - FARPROC WINAPI DECLSPEC_HIDDEN __wine_spec_delay_load( unsigned int id ) { struct ImgDelayDescr *descr = __wine_spec_delay_imports + HIWORD(id); @@ -65,3 +77,5 @@ static void free_delay_imports(void) if (*descr->phmod) FreeLibrary( *descr->phmod ); } #endif + +#endif /* _WIN32 */