diff --git a/tools/widl/typelib_struct.h b/tools/widl/typelib_struct.h index cc336641f2b..83a326b259a 100644 --- a/tools/widl/typelib_struct.h +++ b/tools/widl/typelib_struct.h @@ -153,17 +153,19 @@ typedef struct tagMSFT_TypeInfoBase { /* loword is num of inherited interfaces */ INT res18; /* always? 0 */ /*060*/ INT res19; /* always? -1 */ - } MSFT_TypeInfoBase; +} MSFT_TypeInfoBase; /* layout of an entry with information on imported types */ typedef struct tagMSFT_ImpInfo { - INT res0; /* bits 0 - 15: count */ + INT flags; /* bits 0 - 15: count */ /* bit 16: if set oGuid is an offset to Guid */ /* if clear oGuid is a typeinfo index in the specified typelib */ /* bits 24 - 31: TKIND of reference */ INT oImpFile; /* offset in the Import File table */ INT oGuid; /* offset in Guid table or typeinfo index (see bit 16 of res0) */ - } MSFT_ImpInfo; +} MSFT_ImpInfo; + +#define MSFT_IMPINFO_OFFSET_IS_GUID 0x00010000 /* function description data */ typedef struct { diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index faea83d1f02..b1771927ddb 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -1751,7 +1751,7 @@ static void add_dispatch(msft_typelib_t *typelib) guidentry.guid = iid_idispatch; guidentry.hreftype = 1; guidentry.next_hash = -1; - impinfo.res0 = 0x301 << 16; + impinfo.flags = TKIND_INTERFACE << 24 | MSFT_IMPINFO_OFFSET_IS_GUID; impinfo.oImpFile = impfile_offset; impinfo.oGuid = ctl2_alloc_guid(typelib, &guidentry); typelib->typelib_header.dispatchpos = alloc_importinfo(typelib, &impinfo) | 0x01;