From 5d1d777e691815bedc1f2bb22f74a01c28c39ad7 Mon Sep 17 00:00:00 2001 From: "Theodore S. Hetke" Date: Sun, 14 Mar 1999 15:18:08 +0000 Subject: [PATCH] Added tracing for delayed imports and removed the fixme. --- include/peexe.h | 1 + loader/pe_image.c | 30 +++++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/include/peexe.h b/include/peexe.h index bc202dfb750..a5bd2e39283 100644 --- a/include/peexe.h +++ b/include/peexe.h @@ -130,6 +130,7 @@ typedef struct _IMAGE_OPTIONAL_HEADER #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 #define IMAGE_DIRECTORY_ENTRY_IAT 12 /* Import Address Table */ #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 +#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 /* Subsystem Values */ diff --git a/loader/pe_image.c b/loader/pe_image.c index 0affebb4364..eb86f119f0d 100644 --- a/loader/pe_image.c +++ b/loader/pe_image.c @@ -700,10 +700,34 @@ WINE_MODREF *PE_CreateModule( HMODULE hModule, dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_IAT; if (dir->Size) TRACE( win32, "Import Address Table directory ignored\n" ); - dir = nt->OptionalHeader.DataDirectory+13; - if (dir->Size) FIXME( win32, "Unknown directory 13 ignored\n" ); + dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT; + if (dir->Size) + { + TRACE( win32, "Delayed import, stub calls LoadLibrary\n" ); + /* + * Nothing to do here. + */ + +#ifdef ImgDelayDescr + /* + * This code is useful to observe what the heck is going on. + */ + { + ImgDelayDescr *pe_delay = NULL; + pe_delay = (PImgDelayDescr)RVA(dir->VirtualAddress); + TRACE(delayhlp,"pe_delay->grAttrs = %08x\n", pe_delay->grAttrs); + TRACE(delayhlp,"pe_delay->szName = %s\n", pe_delay->szName); + TRACE(delayhlp,"pe_delay->phmod = %08x\n", pe_delay->phmod); + TRACE(delayhlp,"pe_delay->pIAT = %08x\n", pe_delay->pIAT); + TRACE(delayhlp,"pe_delay->pINT = %08x\n", pe_delay->pINT); + TRACE(delayhlp,"pe_delay->pBoundIAT = %08x\n", pe_delay->pBoundIAT); + TRACE(delayhlp,"pe_delay->pUnloadIAT = %08x\n", pe_delay->pUnloadIAT); + TRACE(delayhlp,"pe_delay->dwTimeStamp = %08x\n", pe_delay->dwTimeStamp); + } +#endif /* ImgDelayDescr */ + } - dir = nt->OptionalHeader.DataDirectory+14; + dir = nt->OptionalHeader.DataDirectory+IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR; if (dir->Size) FIXME( win32, "Unknown directory 14 ignored\n" ); dir = nt->OptionalHeader.DataDirectory+15; -- 2.11.4.GIT