From 57212decc82c13c041ad33c1e574b59101b3ad11 Mon Sep 17 00:00:00 2001 From: marco Date: Fri, 20 Mar 2015 14:01:28 +0000 Subject: [PATCH] * ugly auto conversion IMAGE_IMPORT_DESCRIPTOR and _IMAGE_TLS_DIRECTORY64/32 fixed. * IMAGE_EXPORT_DIRECTORY (see comments mantis #27674 ) git-svn-id: trunk@30264 - --- rtl/win/wininc/struct.inc | 53 +++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/rtl/win/wininc/struct.inc b/rtl/win/wininc/struct.inc index db24e54eea..b57b646bfd 100644 --- a/rtl/win/wininc/struct.inc +++ b/rtl/win/wininc/struct.inc @@ -8346,6 +8346,25 @@ type {$push} {$packrecords 4} + + PIMAGE_EXPORT_DIRECTORY = ^TIMAGE_EXPORT_DIRECTORY; + IMAGE_EXPORT_DIRECTORY = record + Characteristics : DWORD; + TimeDateStamp : DWORD; + MajorVersion : WORD; + MinorVersion : WORD; + Name : DWORD; + Base : DWORD; + NumberOfFunctions : DWORD; + NumberOfNames : DWORD; + AddressOfFunctions : DWORD; { RVA from base of image } + AddressOfNames : DWORD; { RVA from base of image } + AddressOfNameOrdinals : DWORD; { RVA from base of image } + end; + TIMAGE_EXPORT_DIRECTORY = IMAGE_EXPORT_DIRECTORY; + _IMAGE_EXPORT_DIRECTORY = IMAGE_EXPORT_DIRECTORY; + LPIMAGE_EXPORT_DIRECTORY= PIMAGE_EXPORT_DIRECTORY; + P_IMAGE_IMPORT_BY_NAME = ^_IMAGE_IMPORT_BY_NAME; _IMAGE_IMPORT_BY_NAME = record Hint : WORD; @@ -8403,15 +8422,13 @@ type AddressOfIndex : ULONGLONG; { PDWORD } AddressOfCallBacks : ULONGLONG; { PIMAGE_TLS_CALLBACK *; } SizeOfZeroFill : DWORD; - DUMMYUNIONNAME : bitpacked record case longint of 0 : ( Characteristics : DWORD ); - 1 : ( DUMMYSTRUCTNAME : record - Reserved0 : 0..$FFFFF; // 5 nibbles=20 bits - Alignment : 0..$F; // 4 bits - Reserved1 : 0..$FF; // 8 bits + 1 : ( CharacteristicsFields: bitpacked record + Reserved0 : 0..$FFFFF; // 5 nibbles=20 bits + Alignment : 0..$F; // 4 bits + Reserved1 : 0..$FF; // 8 bits end ); - end; end; IMAGE_TLS_DIRECTORY64 = _IMAGE_TLS_DIRECTORY64; PIMAGE_TLS_DIRECTORY64 = ^IMAGE_TLS_DIRECTORY64; @@ -8425,15 +8442,14 @@ type AddressOfIndex : DWORD; { PDWORD } AddressOfCallBacks : DWORD; { PIMAGE_TLS_CALLBACK * } SizeOfZeroFill : DWORD; - DUMMYUNIONNAME : record case longint of 0 : ( Characteristics : DWORD ); - 1 : ( DUMMYSTRUCTNAME : bitpacked record - Reserved0 : 0..$FFFFF; // 5 nibbles=20 bits - Alignment : 0..$F; // 4 bits - Reserved1 : 0..$FF; // 8 bits + 1 : ( CharacteristicsFields : bitpacked record + Reserved0 : 0..$FFFFF; // 5 nibbles=20 bits + Alignment : 0..$F; // 4 bits + Reserved1 : 0..$FF; // 8 bits end ); - end; + end; IMAGE_TLS_DIRECTORY32 = _IMAGE_TLS_DIRECTORY32; PIMAGE_TLS_DIRECTORY32 = ^IMAGE_TLS_DIRECTORY32; @@ -8472,18 +8488,17 @@ type P_IMAGE_IMPORT_DESCRIPTOR = ^_IMAGE_IMPORT_DESCRIPTOR; _IMAGE_IMPORT_DESCRIPTOR = record - DUMMYUNIONNAME : bitpacked record case longint of 0 : ( Characteristics : DWORD ); { 0 for terminating null import descriptor } - 1 : ( OriginalFirstThunk : DWORD ); { RVA to original unbound IAT (PIMAGE_THUNK_DATA) } - end; - TimeDateStamp : DWORD; { 0 if not bound, } + 1 : ( OriginalFirstThunk : DWORD; { RVA to original unbound IAT (PIMAGE_THUNK_DATA) } + TimeDateStamp : DWORD; { 0 if not bound, } // -1 if bound, and real date\time stamp // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND) // O.W. date/time stamp of DLL bound to (Old BIND) - ForwarderChain : DWORD; // -1 if no forwarders - Name : DWORD; - FirstThunk : DWORD; // RVA to IAT (if bound this IAT has actual addresses) + ForwarderChain : DWORD; // -1 if no forwarders + Name : DWORD; + FirstThunk : DWORD; // RVA to IAT (if bound this IAT has actual addresses) + ); end; IMAGE_IMPORT_DESCRIPTOR = _IMAGE_IMPORT_DESCRIPTOR; PIMAGE_IMPORT_DESCRIPTOR = ^IMAGE_IMPORT_DESCRIPTOR {UNALIGNED } ;