Jacek Caban : winecrt0: Add __delayLoadHelper2.
Alexandre Julliard
julliard at winehq.org
Tue Aug 6 17:41:59 CDT 2019
Module: wine
Branch: master
Commit: 2afb86337288d320969a5d16bd9d7243122a1051
URL: https://source.winehq.org/git/wine.git/?a=commit;h=2afb86337288d320969a5d16bd9d7243122a1051
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Aug 6 12:26:23 2019 +0200
winecrt0: Add __delayLoadHelper2.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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 */
More information about the wine-cvs
mailing list