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