As Nikolay pointed out, the change
/* the ones with offsets at the end are the same as in Windows */ struct _IMAGELIST {
- const struct IImageListVtbl *lpVtbl;/* IImageList vtable */
- LONG ref; /* reference count */
- DWORD magic; /* 00: 'SAMX' */
is wrong because it changes offsets... but it also breaks those comments. (Can you put the vtable at the end?)