Get rid of the non-standard ICOM_VFIELD macro.

diff --git a/dlls/avifil32/acmstream.c b/dlls/avifil32/acmstream.c
index 0c6563b..63a7efe 100644
--- a/dlls/avifil32/acmstream.c
+++ b/dlls/avifil32/acmstream.c
@@ -74,7 +74,7 @@
 
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIStream);
+  IAVIStreamVtbl *lpVtbl;
   DWORD		  ref;
 
   /* IAVIStream stuff */
diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index a23231f..b6ec19d 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -143,7 +143,7 @@
 
 typedef struct _IPersistFileImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IPersistFile);
+  IPersistFileVtbl *lpVtbl;
 
   /* IPersistFile stuff */
   IAVIFileImpl     *paf;
@@ -151,7 +151,7 @@
 
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIStream);
+  IAVIStreamVtbl   *lpVtbl;
   DWORD		    ref;
 
   /* IAVIStream stuff */
@@ -180,7 +180,7 @@
 
 struct _IAVIFileImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIFile);
+  IAVIFileVtbl     *lpVtbl;
   DWORD		    ref;
 
   /* IAVIFile stuff... */
diff --git a/dlls/avifil32/editstream.c b/dlls/avifil32/editstream.c
index 5028345..65e60ca 100644
--- a/dlls/avifil32/editstream.c
+++ b/dlls/avifil32/editstream.c
@@ -146,7 +146,7 @@
 
 typedef struct _IEditAVIStreamImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIStream);
+  IAVIStreamVtbl *lpVtbl;
 
   /* IAVIStream stuff */
   IAVIEditStreamImpl *pae;
@@ -154,7 +154,7 @@
 
 typedef struct _IEditStreamInternalImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IEditStreamInternal);
+  IEditStreamInternalVtbl *lpVtbl;
 
   /* IEditStreamInternal stuff */
   IAVIEditStreamImpl *pae;
@@ -162,7 +162,7 @@
 
 struct _IAVIEditStreamImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIEditStream);
+  IAVIEditStreamVtbl *lpVtbl;
   DWORD  ref;
 
   /* IAVIEditStream stuff */
diff --git a/dlls/avifil32/factory.c b/dlls/avifil32/factory.c
index c983953..91ec9ed 100644
--- a/dlls/avifil32/factory.c
+++ b/dlls/avifil32/factory.c
@@ -60,7 +60,7 @@
 typedef struct
 {
   /* IUnknown fields */
-  ICOM_VFIELD(IClassFactory);
+  IClassFactoryVtbl *lpVtbl;
   DWORD	 dwRef;
 
   CLSID  clsid;
diff --git a/dlls/avifil32/getframe.c b/dlls/avifil32/getframe.c
index b397aff..cc6ded7 100644
--- a/dlls/avifil32/getframe.c
+++ b/dlls/avifil32/getframe.c
@@ -67,7 +67,7 @@
 
 typedef struct _IGetFrameImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IGetFrame);
+  IGetFrameVtbl     *lpVtbl;
   DWORD              ref;
 
   /* IGetFrame stuff */
diff --git a/dlls/avifil32/icmstream.c b/dlls/avifil32/icmstream.c
index 663c505..8f0c092 100644
--- a/dlls/avifil32/icmstream.c
+++ b/dlls/avifil32/icmstream.c
@@ -77,7 +77,7 @@
 
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIStream);
+  IAVIStreamVtbl    *lpVtbl;
   DWORD		     ref;
 
   /* IAVIStream stuff */
diff --git a/dlls/avifil32/tmpfile.c b/dlls/avifil32/tmpfile.c
index 57fcf44..1bf777d 100644
--- a/dlls/avifil32/tmpfile.c
+++ b/dlls/avifil32/tmpfile.c
@@ -66,7 +66,7 @@
 
 typedef struct _ITmpFileImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIFile);
+  IAVIFileVtbl *lpVtbl;
   DWORD         ref;
 
   /* IAVIFile stuff */
diff --git a/dlls/avifil32/wavfile.c b/dlls/avifil32/wavfile.c
index cfa40c5..626d63e 100644
--- a/dlls/avifil32/wavfile.c
+++ b/dlls/avifil32/wavfile.c
@@ -173,7 +173,7 @@
 
 typedef struct _IPersistFileImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IPersistFile);
+  IPersistFileVtbl *lpVtbl;
 
   /* IPersistFile stuff */
   IAVIFileImpl     *paf;
@@ -181,7 +181,7 @@
 
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIStream);
+  IAVIStreamVtbl   *lpVtbl;
 
   /* IAVIStream stuff */
   IAVIFileImpl     *paf;
@@ -189,7 +189,7 @@
 
 struct _IAVIFileImpl {
   /* IUnknown stuff */
-  ICOM_VFIELD(IAVIFile);
+  IAVIFileVtbl     *lpVtbl;
   DWORD		    ref;
 
   /* IAVIFile, IAVIStream stuff... */
diff --git a/dlls/comcat/comcat_private.h b/dlls/comcat/comcat_private.h
index 5ca861d..bfdc50f 100644
--- a/dlls/comcat/comcat_private.h
+++ b/dlls/comcat/comcat_private.h
@@ -42,7 +42,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl *lpVtbl;
     DWORD ref;
 } ClassFactoryImpl;
 
diff --git a/dlls/comcat/information.c b/dlls/comcat/information.c
index 9841525..d714708 100644
--- a/dlls/comcat/information.c
+++ b/dlls/comcat/information.c
@@ -298,7 +298,7 @@
  */
 typedef struct
 {
-    ICOM_VFIELD(IEnumCATEGORYINFO);
+    IEnumCATEGORYINFOVtbl *lpVtbl;
     DWORD ref;
     LCID  lcid;
     HKEY  key;
@@ -601,7 +601,7 @@
  */
 typedef struct
 {
-    ICOM_VFIELD(IEnumGUID);
+    IEnumGUIDVtbl *lpVtbl;
     DWORD ref;
     struct class_categories const *categories;
     HKEY  key;
@@ -794,7 +794,7 @@
  */
 typedef struct
 {
-    ICOM_VFIELD(IEnumGUID);
+    IEnumGUIDVtbl *lpVtbl;
     DWORD ref;
     WCHAR keyname[68];
     HKEY  key;
diff --git a/dlls/d3d8/d3d8_private.h b/dlls/d3d8/d3d8_private.h
index d420d43..50c46ff 100644
--- a/dlls/d3d8/d3d8_private.h
+++ b/dlls/d3d8/d3d8_private.h
@@ -281,7 +281,7 @@
 struct IDirect3D8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3D8);
+    IDirect3D8Vtbl         *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3D8 fields */
@@ -331,7 +331,7 @@
 struct IDirect3DDevice8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DDevice8);
+    IDirect3DDevice8Vtbl         *lpVtbl;
     DWORD                         ref;
 
     /* IDirect3DDevice8 fields */
@@ -525,7 +525,7 @@
 struct IDirect3DVolume8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DVolume8);
+    IDirect3DVolume8Vtbl   *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DVolume8 fields */
@@ -579,7 +579,7 @@
 struct IDirect3DSwapChain8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DSwapChain8);
+    IDirect3DSwapChain8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DSwapChain8 fields */
@@ -618,7 +618,7 @@
 struct IDirect3DSurface8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DSurface8);
+    IDirect3DSurface8Vtbl  *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DSurface8 fields */
@@ -676,7 +676,7 @@
 struct IDirect3DResource8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DResource8);
+    IDirect3DResource8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -718,7 +718,7 @@
 struct IDirect3DVertexBuffer8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DVertexBuffer8);
+    IDirect3DVertexBuffer8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -766,7 +766,7 @@
 struct IDirect3DIndexBuffer8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DIndexBuffer8);
+    IDirect3DIndexBuffer8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -814,7 +814,7 @@
 struct IDirect3DBaseTexture8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DBaseTexture8);
+    IDirect3DBaseTexture8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -871,7 +871,7 @@
 struct IDirect3DCubeTexture8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DCubeTexture8);
+    IDirect3DCubeTexture8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -933,7 +933,7 @@
 struct IDirect3DTexture8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DTexture8);
+    IDirect3DTexture8Vtbl  *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResourc8 fields */
@@ -996,7 +996,7 @@
 struct IDirect3DVolumeTexture8Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DVolumeTexture8);
+    IDirect3DVolumeTexture8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -1084,7 +1084,7 @@
  */
 struct  IDirect3DStateBlockImpl {
   /* IUnknown fields */
-  /*ICOM_VFIELD(IDirect3DStateBlock9);*/
+  /*IDirect3DStateBlock9Vtbl *lpVtbl;*/
   DWORD  ref;
 
   /* The device, to be replaced by a IDirect3DDeviceImpl */
@@ -1173,7 +1173,7 @@
  */
 struct IDirect3DVertexShaderDeclarationImpl {
   /* IUnknown fields */
-  /*ICOM_VFIELD(IDirect3DVertexShaderDeclaration9);*/
+  /*IDirect3DVertexShaderDeclaration9Vtbl *lpVtbl;*/
   DWORD  ref;
 
   /* The device, to be replaced by a IDirect3DDeviceImpl */
@@ -1209,7 +1209,7 @@
  * IDirect3DVertexShader implementation structure
  */
 struct IDirect3DVertexShaderImpl {
-  /*ICOM_VFIELD(IDirect3DVertexShader9);*/
+  /*IDirect3DVertexShader9Vtbl *lpVtbl;*/
   DWORD ref;
 
   /* The device, to be replaced by a IDirect3DDeviceImpl */
@@ -1258,7 +1258,7 @@
  * IDirect3DPixelShader implementation structure
  */
 struct IDirect3DPixelShaderImpl { 
-  /*ICOM_VFIELD(IDirect3DPixelShader9);*/
+  /*IDirect3DPixelShader9Vtbl *lpVtbl;*/
   DWORD ref;
 
   /* The device, to be replaced by a IDirect3DDeviceImpl */
diff --git a/dlls/d3d9/d3d9_private.h b/dlls/d3d9/d3d9_private.h
index aa90e6a..c0b42e5 100644
--- a/dlls/d3d9/d3d9_private.h
+++ b/dlls/d3d9/d3d9_private.h
@@ -177,7 +177,7 @@
 struct IDirect3D9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3D9);
+    IDirect3D9Vtbl         *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3D9 fields */
@@ -222,7 +222,7 @@
 struct IDirect3DDevice9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DDevice9);
+    IDirect3DDevice9Vtbl         *lpVtbl;
     DWORD                         ref;
 
     /* IDirect3DDevice9 fields */
@@ -427,7 +427,7 @@
 struct IDirect3DVolume9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DVolume9);
+    IDirect3DVolume9Vtbl   *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DVolume9 fields */
@@ -478,7 +478,7 @@
 struct IDirect3DSwapChain9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DSwapChain9);
+    IDirect3DSwapChain9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DSwapChain9 fields */
@@ -519,7 +519,7 @@
 struct IDirect3DResource9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DResource9);
+    IDirect3DResource9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -558,7 +558,7 @@
 struct IDirect3DSurface9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DSurface9);
+    IDirect3DSurface9Vtbl  *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -618,7 +618,7 @@
 struct IDirect3DVertexBuffer9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DVertexBuffer9);
+    IDirect3DVertexBuffer9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -666,7 +666,7 @@
 struct IDirect3DIndexBuffer9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DIndexBuffer9);
+    IDirect3DIndexBuffer9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -714,7 +714,7 @@
 struct IDirect3DBaseTexture9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DBaseTexture9);
+    IDirect3DBaseTexture9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -766,7 +766,7 @@
 struct IDirect3DCubeTexture9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DCubeTexture9);
+    IDirect3DCubeTexture9Vtbl *lpVtbl;
     DWORD                     ref;
 
     /* IDirect3DResource9 fields */
@@ -830,7 +830,7 @@
 struct IDirect3DTexture9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DTexture9);
+    IDirect3DTexture9Vtbl  *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -895,7 +895,7 @@
 struct IDirect3DVolumeTexture9Impl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DVolumeTexture9);
+    IDirect3DVolumeTexture9Vtbl *lpVtbl;
     DWORD                       ref;
 
     /* IDirect3DResource9 fields */
@@ -960,7 +960,7 @@
  */
 struct  IDirect3DStateBlock9Impl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirect3DStateBlock9);
+  IDirect3DStateBlock9Vtbl *lpVtbl;
   DWORD                     ref;
 
   /* IDirect3DStateBlock9 fields */
@@ -1058,7 +1058,7 @@
  */
 struct IDirect3DVertexDeclaration9Impl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirect3DVertexDeclaration9);
+  IDirect3DVertexDeclaration9Vtbl *lpVtbl;
   DWORD   ref;
 
   /* IDirect3DVertexDeclaration9 fields */
@@ -1097,7 +1097,7 @@
  */
 struct IDirect3DVertexShader9Impl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirect3DVertexShader9);
+  IDirect3DVertexShader9Vtbl *lpVtbl;
   DWORD ref;
 
   /* IDirect3DVertexDeclaration9 fields */
@@ -1139,7 +1139,7 @@
  */
 struct IDirect3DPixelShader9Impl { 
   /* IUnknown fields */
-  ICOM_VFIELD(IDirect3DPixelShader9);
+  IDirect3DPixelShader9Vtbl *lpVtbl;
   DWORD ref;
 
   /* IDirect3DPixelShader9 fields */
@@ -1180,7 +1180,7 @@
  */
 struct IDirect3DQuery9Impl { 
     /* IUnknown fields */
-    ICOM_VFIELD(IDirect3DQuery9);
+    IDirect3DQuery9Vtbl *lpVtbl;
     DWORD ref;
 
     /* IDirect3DQuery9 fields */  
diff --git a/dlls/d3dx8/d3dx8core_private.h b/dlls/d3dx8/d3dx8core_private.h
index 54aba71..e01bd5e 100644
--- a/dlls/d3dx8/d3dx8core_private.h
+++ b/dlls/d3dx8/d3dx8core_private.h
@@ -46,7 +46,7 @@
 struct ID3DXBufferImpl
 {
   /* IUnknown fields */
-  ICOM_VFIELD(ID3DXBuffer);
+  ID3DXBufferVtbl *lpVtbl;
   DWORD          ref;
 
   /* ID3DXBuffer fields */
@@ -78,7 +78,7 @@
 struct ID3DXFontImpl
 {
   /* IUnknown fields */
-  ICOM_VFIELD(ID3DXFont);
+  ID3DXFontVtbl *lpVtbl;
   DWORD          ref;
 
   /* ID3DXFont fields */
diff --git a/dlls/devenum/devenum_private.h b/dlls/devenum/devenum_private.h
index bc67906..82a2cf0 100644
--- a/dlls/devenum/devenum_private.h
+++ b/dlls/devenum/devenum_private.h
@@ -48,19 +48,19 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl *lpVtbl;
     DWORD ref;
 } ClassFactoryImpl;
 
 typedef struct
 {
-    ICOM_VFIELD(ICreateDevEnum);
+    ICreateDevEnumVtbl *lpVtbl;
     DWORD ref;
 } CreateDevEnumImpl;
 
 typedef struct
 {
-    ICOM_VFIELD(IEnumMoniker);
+    IEnumMonikerVtbl *lpVtbl;
     DWORD ref;
     DWORD index;
     HKEY hkey;
@@ -68,7 +68,7 @@
 
 typedef struct
 {
-    ICOM_VFIELD(IMoniker);
+    IMonikerVtbl *lpVtbl;
 
     DWORD ref;
     HKEY hkey;
@@ -76,14 +76,14 @@
 
 typedef struct
 {
-    ICOM_VFIELD(IPropertyBag);
+    IPropertyBagVtbl *lpVtbl;
     DWORD ref;
     HKEY hkey;
 } RegPropBagImpl;
 
 typedef struct
 {
-    ICOM_VFIELD(IParseDisplayName);
+    IParseDisplayNameVtbl *lpVtbl;
     DWORD ref;
 } ParseDisplayNameImpl;
 
diff --git a/dlls/dinput/device_private.h b/dlls/dinput/device_private.h
index 452837f..c6352c85 100644
--- a/dlls/dinput/device_private.h
+++ b/dlls/dinput/device_private.h
@@ -30,7 +30,7 @@
 typedef struct IDirectInputDevice2AImpl IDirectInputDevice2AImpl;
 struct IDirectInputDevice2AImpl
 {
-        ICOM_VFIELD(IDirectInputDevice2A);
+        IDirectInputDevice2AVtbl       *lpVtbl;
         DWORD                           ref;
         GUID                            guid;
 };
diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
index c29e29d..50e47e1 100644
--- a/dlls/dinput/dinput_main.c
+++ b/dlls/dinput/dinput_main.c
@@ -627,7 +627,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dmband/dmband_main.c b/dlls/dmband/dmband_main.c
index 89a523c..a85c364 100644
--- a/dlls/dmband/dmband_main.c
+++ b/dlls/dmband/dmband_main.c
@@ -23,7 +23,7 @@
 
 typedef struct {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dmcompos/dmcompos_main.c b/dlls/dmcompos/dmcompos_main.c
index 95b932d..cdbe451 100644
--- a/dlls/dmcompos/dmcompos_main.c
+++ b/dlls/dmcompos/dmcompos_main.c
@@ -23,7 +23,7 @@
 
 typedef struct {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dmcompos/dmcompos_private.h b/dlls/dmcompos/dmcompos_private.h
index 0588026..965ca3c 100644
--- a/dlls/dmcompos/dmcompos_private.h
+++ b/dlls/dmcompos/dmcompos_private.h
@@ -122,7 +122,7 @@
  */
 struct IDirectMusicComposerImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicComposer);
+  IDirectMusicComposerVtbl *lpVtbl;
   DWORD ref;
 
   /* IDirectMusicComposerImpl fields */
diff --git a/dlls/dmime/dmime_main.c b/dlls/dmime/dmime_main.c
index 56521a4..1e87a07 100644
--- a/dlls/dmime/dmime_main.c
+++ b/dlls/dmime/dmime_main.c
@@ -25,7 +25,7 @@
 
 typedef struct {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h
index c1c52aa..b85fb76 100644
--- a/dlls/dmime/dmime_private.h
+++ b/dlls/dmime/dmime_private.h
@@ -192,7 +192,7 @@
  */
 struct IDirectMusicPerformance8Impl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicPerformance8);
+  IDirectMusicPerformance8Vtbl *lpVtbl;
   DWORD                  ref;
 
   /* IDirectMusicPerformanceImpl fields */
@@ -361,7 +361,7 @@
  */
 struct IDirectMusicSegmentState8Impl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicSegmentState8);
+  IDirectMusicSegmentState8Vtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicSegmentState8Impl fields */
@@ -481,7 +481,7 @@
  */
 struct IDirectMusicTool8Impl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicTool8);
+  IDirectMusicTool8Vtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicTool8Impl fields */
@@ -505,7 +505,7 @@
  */
 struct IDirectMusicPatternTrackImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicPatternTrack);
+  IDirectMusicPatternTrackVtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicPatternTrackImpl fields */
diff --git a/dlls/dmloader/dmloader_private.h b/dlls/dmloader/dmloader_private.h
index 454f5db..4f2d0e5 100644
--- a/dlls/dmloader/dmloader_private.h
+++ b/dlls/dmloader/dmloader_private.h
@@ -105,7 +105,7 @@
  */
 struct IDirectMusicLoaderCF {
 	/* IUnknown fields */
-	ICOM_VFIELD(IClassFactory);
+	IClassFactoryVtbl *lpVtbl;
 	DWORD dwRef;
 };
 
@@ -122,7 +122,7 @@
  */
 struct IDirectMusicContainerCF {
 	/* IUnknown fields */
-	ICOM_VFIELD(IClassFactory);
+	IClassFactoryVtbl *lpVtbl;
 	DWORD dwRef;
 };
 
diff --git a/dlls/dmscript/dmscript_main.c b/dlls/dmscript/dmscript_main.c
index b027c8a..f63311b 100644
--- a/dlls/dmscript/dmscript_main.c
+++ b/dlls/dmscript/dmscript_main.c
@@ -23,7 +23,7 @@
 
 typedef struct {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dmstyle/dmstyle_main.c b/dlls/dmstyle/dmstyle_main.c
index dfaf698..e27da15 100644
--- a/dlls/dmstyle/dmstyle_main.c
+++ b/dlls/dmstyle/dmstyle_main.c
@@ -23,7 +23,7 @@
 
 typedef struct {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dmsynth/dmsynth_main.c b/dlls/dmsynth/dmsynth_main.c
index 66a17ab..152aeae 100644
--- a/dlls/dmsynth/dmsynth_main.c
+++ b/dlls/dmsynth/dmsynth_main.c
@@ -25,7 +25,7 @@
 
 typedef struct {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dmsynth/dmsynth_private.h b/dlls/dmsynth/dmsynth_private.h
index f9f2c13..546d2e6 100644
--- a/dlls/dmsynth/dmsynth_private.h
+++ b/dlls/dmsynth/dmsynth_private.h
@@ -62,7 +62,7 @@
  */
 struct IDirectMusicSynth8Impl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicSynth8);
+  IDirectMusicSynth8Vtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicSynth8 fields */
@@ -106,7 +106,7 @@
  */
 struct IDirectMusicSynthSinkImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicSynthSink);
+  IDirectMusicSynthSinkVtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicSynthSinkImpl fields */
diff --git a/dlls/dmusic/dmusic_main.c b/dlls/dmusic/dmusic_main.c
index c4c1336..6bf9da1 100644
--- a/dlls/dmusic/dmusic_main.c
+++ b/dlls/dmusic/dmusic_main.c
@@ -25,7 +25,7 @@
 
 typedef struct {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dmusic/dmusic_private.h b/dlls/dmusic/dmusic_private.h
index 0719577..5648572 100644
--- a/dlls/dmusic/dmusic_private.h
+++ b/dlls/dmusic/dmusic_private.h
@@ -108,7 +108,7 @@
  */
 struct IDirectMusic8Impl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusic8);
+  IDirectMusic8Vtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicImpl fields */
@@ -139,7 +139,7 @@
  */
 struct IDirectMusicBufferImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicBuffer);
+  IDirectMusicBufferVtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicBufferImpl fields */
@@ -170,7 +170,7 @@
  */
 struct IDirectMusicDownloadedInstrumentImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicDownloadedInstrument);
+  IDirectMusicDownloadedInstrumentVtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicDownloadedInstrumentImpl fields */
@@ -189,7 +189,7 @@
  */
 struct IDirectMusicDownloadImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicDownload);
+  IDirectMusicDownloadVtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicDownloadImpl fields */
@@ -208,7 +208,7 @@
  */
 struct IDirectMusicPortDownloadImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicPortDownload);
+  IDirectMusicPortDownloadVtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicPortDownloadImpl fields */
@@ -231,7 +231,7 @@
  */
 struct IDirectMusicPortImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicPort);
+  IDirectMusicPortVtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicPortImpl fields */
@@ -272,7 +272,7 @@
  */
 struct IDirectMusicThruImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectMusicThru);
+  IDirectMusicThruVtbl *lpVtbl;
   DWORD          ref;
 
   /* IDirectMusicThruImpl fields */
@@ -290,7 +290,7 @@
  */
 struct IReferenceClockImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IReferenceClock);
+  IReferenceClockVtbl *lpVtbl;
   DWORD          ref;
 
   /* IReferenceClockImpl fields */
diff --git a/dlls/dplayx/dpclassfactory.c b/dlls/dplayx/dpclassfactory.c
index e9523a7..c50b919 100644
--- a/dlls/dplayx/dpclassfactory.c
+++ b/dlls/dplayx/dpclassfactory.c
@@ -36,7 +36,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dplayx/dplay_global.h b/dlls/dplayx/dplay_global.h
index f009418..3840e67 100644
--- a/dlls/dplayx/dplay_global.h
+++ b/dlls/dplayx/dplay_global.h
@@ -215,19 +215,19 @@
 
 struct IDirectPlay2Impl
 {
-  ICOM_VFIELD(IDirectPlay2);
+  IDirectPlay2Vtbl *lpVtbl;
   DP_IMPL_FIELDS
 };
 
 struct IDirectPlay3Impl
 {
-  ICOM_VFIELD(IDirectPlay3);
+  IDirectPlay3Vtbl *lpVtbl;
   DP_IMPL_FIELDS
 };
 
 struct IDirectPlay4Impl
 {
-  ICOM_VFIELD(IDirectPlay4);
+  IDirectPlay4Vtbl *lpVtbl;
   DP_IMPL_FIELDS
 };
 
diff --git a/dlls/dplayx/dplaysp.c b/dlls/dplayx/dplaysp.c
index a0acd74..1372e49 100644
--- a/dlls/dplayx/dplaysp.c
+++ b/dlls/dplayx/dplaysp.c
@@ -68,7 +68,7 @@
 
 struct IDirectPlaySPImpl
 {
-  ICOM_VFIELD(IDirectPlaySP);
+  IDirectPlaySPVtbl *lpVtbl;
   DPSP_IMPL_FIELDS
 };
 
diff --git a/dlls/dplayx/dplobby.c b/dlls/dplayx/dplobby.c
index 913c50a..eb53771 100644
--- a/dlls/dplayx/dplobby.c
+++ b/dlls/dplayx/dplobby.c
@@ -118,19 +118,19 @@
 
 struct IDirectPlayLobbyImpl
 {
-    ICOM_VFIELD(IDirectPlayLobby);
+    IDirectPlayLobbyVtbl *lpVtbl;
     DPL_IMPL_FIELDS
 };
 
 struct IDirectPlayLobby2Impl
 {
-    ICOM_VFIELD(IDirectPlayLobby2);
+    IDirectPlayLobby2Vtbl *lpVtbl;
     DPL_IMPL_FIELDS
 };
 
 struct IDirectPlayLobby3Impl
 {
-    ICOM_VFIELD(IDirectPlayLobby3);
+    IDirectPlayLobby3Vtbl *lpVtbl;
     DPL_IMPL_FIELDS
 };
 
diff --git a/dlls/dplayx/lobbysp.c b/dlls/dplayx/lobbysp.c
index ea13014..40170c0 100644
--- a/dlls/dplayx/lobbysp.c
+++ b/dlls/dplayx/lobbysp.c
@@ -55,7 +55,7 @@
 
 struct IDPLobbySPImpl
 {
-  ICOM_VFIELD(IDPLobbySP);
+  IDPLobbySPVtbl *lpVtbl;
   DPLSP_IMPL_FIELDS
 };
 
diff --git a/dlls/dpnet/dpnet_main.c b/dlls/dpnet/dpnet_main.c
index 627798d..bfd8436 100644
--- a/dlls/dpnet/dpnet_main.c
+++ b/dlls/dpnet/dpnet_main.c
@@ -65,7 +65,7 @@
 typedef struct
 {
   /* IUnknown fields */
-  ICOM_VFIELD(IClassFactory);
+  IClassFactoryVtbl *lpVtbl;
   DWORD      ref; 
   REFCLSID   rclsid;
   HRESULT   (*pfnCreateInstanceFactory)(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj);
diff --git a/dlls/dpnet/dpnet_private.h b/dlls/dpnet/dpnet_private.h
index e7f9715..1f3dc8c 100644
--- a/dlls/dpnet/dpnet_private.h
+++ b/dlls/dpnet/dpnet_private.h
@@ -50,7 +50,7 @@
 struct IDirectPlay8ClientImpl
 {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectPlay8Client);
+  IDirectPlay8ClientVtbl *lpVtbl;
   DWORD         ref;
   /* IDirectPlay8Client fields */
 };
@@ -96,7 +96,7 @@
 struct IDirectPlay8AddressImpl
 {
   /* IUnknown fields */
-  ICOM_VFIELD(IDirectPlay8Address);
+  IDirectPlay8AddressVtbl *lpVtbl;
   DWORD         ref;
   /* IDirectPlay8Address fields */
   GUID SP_guid;
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index 8a37e61..5168045 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -70,7 +70,7 @@
 struct IDirectSoundImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSound8);
+    IDirectSound8Vtbl          *lpVtbl;
     DWORD                       ref;
     /* IDirectSoundImpl fields */
     GUID                        guid;
@@ -131,7 +131,7 @@
  * IDirectSound COM components
  */
 struct IDirectSound_IUnknown {
-    ICOM_VFIELD(IUnknown);
+    IUnknownVtbl               *lpVtbl;
     DWORD                       ref;
     LPDIRECTSOUND8              pds;
 };
@@ -141,7 +141,7 @@
     LPUNKNOWN * ppunk);
 
 struct IDirectSound_IDirectSound {
-    ICOM_VFIELD(IDirectSound);
+    IDirectSoundVtbl           *lpVtbl;
     DWORD                       ref;
     LPDIRECTSOUND8              pds;
 };
@@ -154,7 +154,7 @@
  * IDirectSound8 COM components
  */
 struct IDirectSound8_IUnknown {
-    ICOM_VFIELD(IUnknown);
+    IUnknownVtbl               *lpVtbl;
     DWORD                       ref;
     LPDIRECTSOUND8              pds;
 };
@@ -164,7 +164,7 @@
     LPUNKNOWN * ppunk);
 
 struct IDirectSound8_IDirectSound {
-    ICOM_VFIELD(IDirectSound);
+    IDirectSoundVtbl           *lpVtbl;
     DWORD                       ref;
     LPDIRECTSOUND8              pds;
 };
@@ -174,7 +174,7 @@
     LPDIRECTSOUND * ppds);
 
 struct IDirectSound8_IDirectSound8 {
-    ICOM_VFIELD(IDirectSound8);
+    IDirectSound8Vtbl          *lpVtbl;
     DWORD                       ref;
     LPDIRECTSOUND8              pds;
 };
@@ -190,7 +190,7 @@
 {
     /* FIXME: document */
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSoundBuffer8);
+    IDirectSoundBuffer8Vtbl    *lpVtbl;
     DWORD                       ref;
     /* IDirectSoundBufferImpl fields */
     SecondaryBufferImpl*        dsb;
@@ -240,7 +240,7 @@
  */
 struct SecondaryBufferImpl
 {
-    ICOM_VFIELD(IDirectSoundBuffer8);
+    IDirectSoundBuffer8Vtbl    *lpVtbl;
     DWORD                       ref;
     IDirectSoundBufferImpl*     dsb;
 };
@@ -256,7 +256,7 @@
  */
 struct PrimaryBufferImpl
 {
-    ICOM_VFIELD(IDirectSoundBuffer8);
+    IDirectSoundBuffer8Vtbl    *lpVtbl;
     DWORD                       ref;
     IDirectSoundImpl*           dsound;
 };
@@ -272,7 +272,7 @@
 struct IDirectSoundCaptureImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSoundCapture);
+    IDirectSoundCaptureVtbl           *lpVtbl;
     DWORD                              ref;
 
     /* IDirectSoundCaptureImpl fields */
@@ -309,7 +309,7 @@
 struct IDirectSoundCaptureBufferImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSoundCaptureBuffer8);
+    IDirectSoundCaptureBuffer8Vtbl     *lpVtbl;
     DWORD                               ref;
 
     /* IDirectSoundCaptureBufferImpl fields */
@@ -331,7 +331,7 @@
 struct IDirectSoundFullDuplexImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSoundFullDuplex);
+    IDirectSoundFullDuplexVtbl *lpVtbl;
     DWORD                       ref;
 
     /* IDirectSoundFullDuplexImpl fields */
@@ -344,7 +344,7 @@
 struct IDirectSoundNotifyImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSoundNotify);
+    IDirectSoundNotifyVtbl     *lpVtbl;
     DWORD                       ref;
     IDirectSoundBufferImpl*     dsb;
 };
@@ -361,7 +361,7 @@
 struct IDirectSoundCaptureNotifyImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSoundNotify);
+    IDirectSoundNotifyVtbl             *lpVtbl;
     DWORD                               ref;
     IDirectSoundCaptureBufferImpl*      dscb;
 };
@@ -376,7 +376,7 @@
 struct IDirectSound3DListenerImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSound3DListener);
+    IDirectSound3DListenerVtbl *lpVtbl;
     DWORD                       ref;
     /* IDirectSound3DListenerImpl fields */
     IDirectSoundImpl*           dsound;
@@ -392,7 +392,7 @@
 struct IKsBufferPropertySetImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IKsPropertySet);
+    IKsPropertySetVtbl         *lpVtbl;
     DWORD			ref;
     /* IKsPropertySetImpl fields */
     IDirectSoundBufferImpl*	dsb;
@@ -410,7 +410,7 @@
 struct IKsPrivatePropertySetImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IKsPropertySet);
+    IKsPropertySetVtbl         *lpVtbl;
     DWORD			ref;
 };
 
@@ -423,7 +423,7 @@
 struct IDirectSound3DBufferImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDirectSound3DBuffer);
+    IDirectSound3DBufferVtbl   *lpVtbl;
     DWORD                       ref;
     /* IDirectSound3DBufferImpl fields */
     IDirectSoundBufferImpl*     dsb;
@@ -441,7 +441,7 @@
 struct IClassFactoryImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 };
 
diff --git a/dlls/dswave/dswave_main.c b/dlls/dswave/dswave_main.c
index a10df08..97656a9 100644
--- a/dlls/dswave/dswave_main.c
+++ b/dlls/dswave/dswave_main.c
@@ -25,7 +25,7 @@
 
 typedef struct {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/dxdiagn/dxdiag_main.c b/dlls/dxdiagn/dxdiag_main.c
index 35ffc5e..8519f66 100644
--- a/dlls/dxdiagn/dxdiag_main.c
+++ b/dlls/dxdiagn/dxdiag_main.c
@@ -40,7 +40,7 @@
  */
 typedef struct {
   /* IUnknown fields */
-  ICOM_VFIELD(IClassFactory);
+  IClassFactoryVtbl *lpVtbl;
   DWORD      ref; 
   REFCLSID   rclsid;
   HRESULT   (*pfnCreateInstanceFactory)(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj);
diff --git a/dlls/dxdiagn/dxdiag_private.h b/dlls/dxdiagn/dxdiag_private.h
index a8531c3..34b5607 100644
--- a/dlls/dxdiagn/dxdiag_private.h
+++ b/dlls/dxdiagn/dxdiag_private.h
@@ -49,7 +49,7 @@
  */
 struct IDxDiagProviderImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDxDiagProvider);
+  IDxDiagProviderVtbl *lpVtbl;
   DWORD       ref;
   /* IDxDiagProvider fields */
   BOOL        init;
@@ -86,7 +86,7 @@
  */
 struct IDxDiagContainerImpl {
   /* IUnknown fields */
-  ICOM_VFIELD(IDxDiagContainer);
+  IDxDiagContainerVtbl *lpVtbl;
   DWORD       ref;
   /* IDxDiagContainer fields */
   IDxDiagContainerImpl_SubContainer* subContainers;
diff --git a/dlls/msdmo/dmoreg.c b/dlls/msdmo/dmoreg.c
index 3d275b3..8827314 100644
--- a/dlls/msdmo/dmoreg.c
+++ b/dlls/msdmo/dmoreg.c
@@ -79,7 +79,7 @@
 
 typedef struct
 {
-    ICOM_VFIELD(IEnumDMO);
+    IEnumDMOVtbl               *lpVtbl;
     DWORD			ref;
     DWORD			index;
     const GUID*                 guidCategory;
diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index eec2cd8..f779f84 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -1377,7 +1377,7 @@
 
 typedef struct {
   /* IUnknown fields */
-  ICOM_VFIELD(IClassFactory);
+  IClassFactoryVtbl          *lpVtbl;
   DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/ole32/bindctx.c b/dlls/ole32/bindctx.c
index 91b3791..af0b2d9 100644
--- a/dlls/ole32/bindctx.c
+++ b/dlls/ole32/bindctx.c
@@ -48,7 +48,7 @@
 /* BindCtx data strucrture */
 typedef struct BindCtxImpl{
 
-    ICOM_VFIELD(IBindCtx); /* VTable relative to the IBindCtx interface.*/
+    IBindCtxVtbl *lpVtbl; /* VTable relative to the IBindCtx interface.*/
 
     ULONG ref; /* reference counter for this object */
 
diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c
index 0bee645..ab1833f 100644
--- a/dlls/ole32/clipboard.c
+++ b/dlls/ole32/clipboard.c
@@ -133,7 +133,7 @@
 typedef struct
 {
   /* IEnumFORMATETC VTable */
-  ICOM_VFIELD(IEnumFORMATETC);
+  IEnumFORMATETCVtbl          *lpVtbl;
 
   /* IEnumFORMATETC fields */
   UINT                         posFmt;    /* current enumerator position */
diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c
index 6cc0c63..22d10f6 100644
--- a/dlls/ole32/compositemoniker.c
+++ b/dlls/ole32/compositemoniker.c
@@ -66,7 +66,7 @@
 /* EnumMoniker data structure */
 typedef struct EnumMonikerImpl{
 
-    ICOM_VFIELD(IEnumMoniker);  /* VTable relative to the IEnumMoniker interface.*/
+    IEnumMonikerVtbl *lpVtbl;  /* VTable relative to the IEnumMoniker interface.*/
 
     ULONG ref; /* reference counter for this object */
 
diff --git a/dlls/ole32/ftmarshal.c b/dlls/ole32/ftmarshal.c
index d0e39f0..e67c714 100644
--- a/dlls/ole32/ftmarshal.c
+++ b/dlls/ole32/ftmarshal.c
@@ -35,9 +35,9 @@
 WINE_DEFAULT_DEBUG_CHANNEL(ole);
 
 typedef struct _FTMarshalImpl {
-	ICOM_VFIELD (IUnknown);
+	IUnknownVtbl *lpVtbl;
 	DWORD ref;
-	ICOM_VTABLE (IMarshal) * lpvtblFTM;
+	IMarshalVtbl *lpvtblFTM;
 
 	IUnknown *pUnkOuter;
 } FTMarshalImpl;
diff --git a/dlls/ole32/git.c b/dlls/ole32/git.c
index c343d37..fe426fc 100644
--- a/dlls/ole32/git.c
+++ b/dlls/ole32/git.c
@@ -70,7 +70,7 @@
 /* Class data */
 typedef struct StdGlobalInterfaceTableImpl
 {
-  ICOM_VFIELD(IGlobalInterfaceTable);
+  IGlobalInterfaceTableVtbl *lpVtbl;
 
   ULONG ref;
   struct StdGITEntry* firstEntry;
diff --git a/dlls/ole32/hglobalstream.c b/dlls/ole32/hglobalstream.c
index ba6e587..6612d6e 100644
--- a/dlls/ole32/hglobalstream.c
+++ b/dlls/ole32/hglobalstream.c
@@ -52,7 +52,7 @@
  */
 struct HGLOBALStreamImpl
 {
-  ICOM_VFIELD(IStream);  /* Needs to be the first item in the stuct
+  IStreamVtbl *lpVtbl;   /* Needs to be the first item in the stuct
 			  * since we want to cast this in a IStream pointer */
 
   /*
diff --git a/dlls/ole32/ifs.c b/dlls/ole32/ifs.c
index 6fa2cd5..90e5eb3 100644
--- a/dlls/ole32/ifs.c
+++ b/dlls/ole32/ifs.c
@@ -48,7 +48,7 @@
 static ICOM_VTABLE(IMalloc) VT_IMalloc32;
 
 typedef struct {
-        ICOM_VFIELD(IMalloc);
+        IMallocVtbl *lpVtbl;
         DWORD dummy;                /* nothing, we are static */
 	IMallocSpy * pSpy;          /* the spy when active */
 	DWORD SpyedAllocationsLeft; /* number of spyed allocations left */
@@ -364,7 +364,7 @@
 static ICOM_VTABLE(IMallocSpy) VT_IMallocSpy;
 
 typedef struct {
-        ICOM_VFIELD(IMallocSpy);
+        IMallocSpyVtbl *lpVtbl;
         DWORD ref;
 } _MallocSpy;
 
diff --git a/dlls/ole32/memlockbytes.c b/dlls/ole32/memlockbytes.c
index 00bbabe..5929011 100644
--- a/dlls/ole32/memlockbytes.c
+++ b/dlls/ole32/memlockbytes.c
@@ -53,7 +53,7 @@
    * Needs to be the first item in the stuct
    * since we want to cast this in an ILockBytes pointer
    */
-  ICOM_VFIELD(ILockBytes);
+  ILockBytesVtbl *lpVtbl;
 
   /*
    * Reference count
diff --git a/dlls/ole32/memlockbytes16.c b/dlls/ole32/memlockbytes16.c
index 22e14f9..9067718 100644
--- a/dlls/ole32/memlockbytes16.c
+++ b/dlls/ole32/memlockbytes16.c
@@ -52,7 +52,7 @@
    * Needs to be the first item in the stuct
    * since we want to cast this in an ILockBytes pointer
    */
-  ICOM_VFIELD(ILockBytes16);
+  ILockBytes16Vtbl *lpVtbl;
   ULONG        ref;
 
   /*
diff --git a/dlls/ole32/moniker.c b/dlls/ole32/moniker.c
index 7612b1ce..5d24abe 100644
--- a/dlls/ole32/moniker.c
+++ b/dlls/ole32/moniker.c
@@ -58,7 +58,7 @@
 /* define the RunningObjectTableImpl structure */
 typedef struct RunningObjectTableImpl{
 
-    ICOM_VFIELD(IRunningObjectTable);
+    IRunningObjectTableVtbl *lpVtbl;
     ULONG      ref;
 
     RunObject* runObjTab;            /* pointer to the first object in the table       */
diff --git a/dlls/ole32/ole16.c b/dlls/ole32/ole16.c
index 61e980e..fb81fc5 100644
--- a/dlls/ole32/ole16.c
+++ b/dlls/ole32/ole16.c
@@ -64,7 +64,7 @@
 typedef struct
 {
         /* IUnknown fields */
-        ICOM_VFIELD(IMalloc16);
+        IMalloc16Vtbl          *lpVtbl;
         DWORD                   ref;
         /* IMalloc16 fields */
 } IMalloc16Impl;
diff --git a/dlls/ole32/oleobj.c b/dlls/ole32/oleobj.c
index cced63a..dd39e67 100644
--- a/dlls/ole32/oleobj.c
+++ b/dlls/ole32/oleobj.c
@@ -38,7 +38,7 @@
  */
 typedef struct OleAdviseHolderImpl
 {
-  ICOM_VFIELD(IOleAdviseHolder);
+  IOleAdviseHolderVtbl *lpVtbl;
 
   DWORD ref;
 
@@ -369,7 +369,7 @@
 
 typedef struct DataAdviseHolder
 {
-  ICOM_VFIELD(IDataAdviseHolder);
+  IDataAdviseHolderVtbl *lpVtbl;
 
   DWORD                 ref;
   DWORD                 maxCons;
diff --git a/dlls/ole32/storage.c b/dlls/ole32/storage.c
index 664d661..abed7bd 100644
--- a/dlls/ole32/storage.c
+++ b/dlls/ole32/storage.c
@@ -954,7 +954,7 @@
 typedef struct
 {
         /* IUnknown fields */
-        ICOM_VFIELD(IStream16);
+        IStream16Vtbl                  *lpVtbl;
         DWORD                           ref;
         /* IStream16 fields */
         SEGPTR                          thisptr; /* pointer to this struct as segmented */
@@ -1448,7 +1448,7 @@
 typedef struct
 {
         /* IUnknown fields */
-        ICOM_VFIELD(IStream);
+        IStreamVtbl                    *lpVtbl;
         DWORD                           ref;
         /* IStream32 fields */
         struct storage_pps_entry        stde;
@@ -1502,7 +1502,7 @@
 typedef struct
 {
         /* IUnknown fields */
-        ICOM_VFIELD(IStorage16);
+        IStorage16Vtbl                 *lpVtbl;
         DWORD                           ref;
         /* IStorage16 fields */
         SEGPTR                          thisptr; /* pointer to this struct as segmented */
diff --git a/dlls/ole32/storage32.h b/dlls/ole32/storage32.h
index f9b0fb2..05ceaed 100644
--- a/dlls/ole32/storage32.h
+++ b/dlls/ole32/storage32.h
@@ -204,7 +204,7 @@
  */
 struct StorageBaseImpl
 {
-  ICOM_VFIELD(IStorage);   /* Needs to be the first item in the struct
+  IStorageVtbl *lpVtbl;    /* Needs to be the first item in the struct
 			    * since we want to cast this in a Storage32 pointer */
 
   /*
@@ -298,7 +298,7 @@
  */
 struct StorageImpl
 {
-  ICOM_VFIELD(IStorage); /* Needs to be the first item in the struct
+  IStorageVtbl *lpVtbl;  /* Needs to be the first item in the struct
 			  * since we want to cast this in a Storage32 pointer */
 
   /*
@@ -498,7 +498,7 @@
  */
 struct StorageInternalImpl
 {
-  ICOM_VFIELD(IStorage);	/* Needs to be the first item in the struct
+  IStorageVtbl *lpVtbl;         /* Needs to be the first item in the struct
 				 * since we want to cast this in a Storage32 pointer */
 
   /*
@@ -542,8 +542,8 @@
  */
 struct IEnumSTATSTGImpl
 {
-  ICOM_VFIELD(IEnumSTATSTG);    /* Needs to be the first item in the struct
-					 * since we want to cast this in a IEnumSTATSTG pointer */
+  IEnumSTATSTGVtbl *lpVtbl;    /* Needs to be the first item in the struct
+				* since we want to cast this in a IEnumSTATSTG pointer */
 
   ULONG		 ref;		        /* Reference count */
   StorageImpl* parentStorage;         /* Reference to the parent storage */
@@ -627,8 +627,8 @@
  */
 struct StgStreamImpl
 {
-  ICOM_VFIELD(IStream);  /* Needs to be the first item in the struct
-				    * since we want to cast this in a IStream pointer */
+  IStreamVtbl *lpVtbl;  /* Needs to be the first item in the struct
+			 * since we want to cast this in a IStream pointer */
 
   /*
    * Reference count
diff --git a/dlls/oleaut32/dispatch.c b/dlls/oleaut32/dispatch.c
index e867b65..187a9f4 100644
--- a/dlls/oleaut32/dispatch.c
+++ b/dlls/oleaut32/dispatch.c
@@ -239,7 +239,7 @@
 
 typedef struct
 {
-    ICOM_VFIELD(IDispatch);
+    IDispatchVtbl *lpVtbl;
     void * pvThis;
     ITypeInfo * pTypeInfo;
     ULONG ref;
diff --git a/dlls/oleaut32/olefont.c b/dlls/oleaut32/olefont.c
index 7f8498d..8aaeff9 100644
--- a/dlls/oleaut32/olefont.c
+++ b/dlls/oleaut32/olefont.c
@@ -1955,7 +1955,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c
index c4fa0e8..a28877d 100644
--- a/dlls/oleaut32/olepicture.c
+++ b/dlls/oleaut32/olepicture.c
@@ -1638,7 +1638,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
 } IClassFactoryImpl;
 
diff --git a/dlls/oleaut32/tests/vartype.c b/dlls/oleaut32/tests/vartype.c
index 0129047..ce5429e 100644
--- a/dlls/oleaut32/tests/vartype.c
+++ b/dlls/oleaut32/tests/vartype.c
@@ -483,7 +483,7 @@
 
 typedef struct
 {
-  ICOM_VFIELD(IDispatch);
+  IDispatchVtbl *lpVtbl;
   ULONG ref;
   VARTYPE vt;
   BOOL bFailInvoke;
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index 781626a..853d289 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -853,8 +853,8 @@
 /* internal ITypeLib data */
 typedef struct tagITypeLibImpl
 {
-    ICOM_VFIELD(ITypeLib2);
-    ICOM_VTABLE(ITypeComp) * lpVtblTypeComp;
+    ITypeLib2Vtbl *lpVtbl;
+    ITypeCompVtbl *lpVtblTypeComp;
     UINT ref;
     TLIBATTR LibAttr;            /* guid,lcid,syskind,version,flags */
 
@@ -964,8 +964,8 @@
 /* internal TypeInfo data */
 typedef struct tagITypeInfoImpl
 {
-    ICOM_VFIELD(ITypeInfo2);
-    ICOM_VTABLE(ITypeComp) * lpVtblTypeComp;
+    ITypeInfo2Vtbl *lpVtbl;
+    ITypeCompVtbl  *lpVtblTypeComp;
     UINT ref;
     TYPEATTR TypeAttr ;         /* _lots_ of type information. */
     ITypeLibImpl * pTypeLib;        /* back pointer to typelib */
diff --git a/dlls/oleaut32/typelib2.c b/dlls/oleaut32/typelib2.c
index d756476..4171ab0 100644
--- a/dlls/oleaut32/typelib2.c
+++ b/dlls/oleaut32/typelib2.c
@@ -146,8 +146,8 @@
 
 typedef struct tagICreateTypeLib2Impl
 {
-    ICOM_VFIELD(ICreateTypeLib2);
-    ICOM_VTABLE(ITypeLib2) *lpVtblTypeLib2;
+    ICreateTypeLib2Vtbl *lpVtbl;
+    ITypeLib2Vtbl       *lpVtblTypeLib2;
 
     UINT ref;
 
@@ -172,8 +172,8 @@
 
 typedef struct tagICreateTypeInfo2Impl
 {
-    ICOM_VFIELD(ICreateTypeInfo2);
-    ICOM_VTABLE(ITypeInfo2) *lpVtblTypeInfo2;
+    ICreateTypeInfo2Vtbl *lpVtbl;
+    ITypeInfo2Vtbl       *lpVtblTypeInfo2;
 
     UINT ref;
 
diff --git a/dlls/quartz/enummoniker.c b/dlls/quartz/enummoniker.c
index 80f26cd..ec3fbe7 100644
--- a/dlls/quartz/enummoniker.c
+++ b/dlls/quartz/enummoniker.c
@@ -36,7 +36,7 @@
 
 typedef struct EnumMonikerImpl
 {
-    ICOM_VFIELD(IEnumMoniker);
+    IEnumMonikerVtbl *lpVtbl;
     ULONG ref;
     IMoniker ** ppMoniker;
     ULONG nMonikerCount;
diff --git a/dlls/quartz/filtermapper.c b/dlls/quartz/filtermapper.c
index a102b86..965f19d 100644
--- a/dlls/quartz/filtermapper.c
+++ b/dlls/quartz/filtermapper.c
@@ -44,8 +44,8 @@
 
 typedef struct FilterMapper2Impl
 {
-    ICOM_VFIELD(IFilterMapper2);
-    ICOM_VTABLE(IFilterMapper) * lpVtblFilterMapper;
+    IFilterMapper2Vtbl *lpVtbl;
+    IFilterMapperVtbl  *lpVtblFilterMapper;
     ULONG refCount;
 } FilterMapper2Impl;
 
diff --git a/dlls/quartz/systemclock.c b/dlls/quartz/systemclock.c
index 2d5e764..7325ab2 100644
--- a/dlls/quartz/systemclock.c
+++ b/dlls/quartz/systemclock.c
@@ -39,7 +39,7 @@
 };
 
 typedef struct SystemClockImpl {
-  ICOM_VFIELD(IReferenceClock);
+  IReferenceClockVtbl *lpVtbl;
   ULONG ref;
 
   /** IReferenceClock */
diff --git a/dlls/rpcrt4/ndr_ole.c b/dlls/rpcrt4/ndr_ole.c
index 26ddb25..e7d9ed2 100644
--- a/dlls/rpcrt4/ndr_ole.c
+++ b/dlls/rpcrt4/ndr_ole.c
@@ -77,7 +77,7 @@
  * (which also implements the MInterfacePointer structure) */
 typedef struct RpcStreamImpl
 {
-  ICOM_VFIELD(IStream);
+  IStreamVtbl *lpVtbl;
   DWORD RefCount;
   PMIDL_STUB_MESSAGE pMsg;
   LPDWORD size;
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index 82133f5..9139f49 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -41,7 +41,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl *lpVtbl;
     DWORD ref;
 } IClassFactoryImpl;
 
@@ -54,7 +54,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IOleObject);
+    IOleObjectVtbl *lpVtbl;
     DWORD ref;
 } IOleObjectImpl;
 
@@ -67,7 +67,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IOleInPlaceObject);
+    IOleInPlaceObjectVtbl *lpVtbl;
     DWORD ref;
 } IOleInPlaceObjectImpl;
 
@@ -80,7 +80,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IOleControl);
+    IOleControlVtbl *lpVtbl;
     DWORD ref;
 } IOleControlImpl;
 
@@ -93,7 +93,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IWebBrowser);
+    IWebBrowserVtbl *lpVtbl;
     DWORD ref;
 } IWebBrowserImpl;
 
@@ -106,7 +106,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IProvideClassInfo);
+    IProvideClassInfoVtbl *lpVtbl;
     DWORD ref;
 } IProvideClassInfoImpl;
 
@@ -119,7 +119,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IProvideClassInfo2);
+    IProvideClassInfo2Vtbl *lpVtbl;
     DWORD ref;
 } IProvideClassInfo2Impl;
 
@@ -132,7 +132,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IPersistStorage);
+    IPersistStorageVtbl *lpVtbl;
     DWORD ref;
 } IPersistStorageImpl;
 
@@ -145,7 +145,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IPersistStreamInit);
+    IPersistStreamInitVtbl *lpVtbl;
     DWORD ref;
 } IPersistStreamInitImpl;
 
@@ -158,7 +158,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IQuickActivate);
+    IQuickActivateVtbl *lpVtbl;
     DWORD ref;
 } IQuickActivateImpl;
 
@@ -171,7 +171,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IConnectionPointContainer);
+    IConnectionPointContainerVtbl *lpVtbl;
     DWORD ref;
 } IConnectionPointContainerImpl;
 
@@ -184,7 +184,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IConnectionPoint);
+    IConnectionPointVtbl *lpVtbl;
     DWORD ref;
 } IConnectionPointImpl;
 
diff --git a/dlls/shell32/autocomplete.c b/dlls/shell32/autocomplete.c
index ebc2bfc..8747b1e 100644
--- a/dlls/shell32/autocomplete.c
+++ b/dlls/shell32/autocomplete.c
@@ -59,8 +59,8 @@
 
 typedef struct
 {
-    ICOM_VFIELD(IAutoComplete);
-    ICOM_VTABLE (IAutoComplete2) * lpvtblAutoComplete2;
+    IAutoCompleteVtbl  *lpVtbl;
+    IAutoComplete2Vtbl *lpvtblAutoComplete2;
     DWORD ref;
     BOOL  enabled;
     HWND hwndEdit;
diff --git a/dlls/shell32/cpanelfolder.c b/dlls/shell32/cpanelfolder.c
index 6cc7f05..bb2961b 100644
--- a/dlls/shell32/cpanelfolder.c
+++ b/dlls/shell32/cpanelfolder.c
@@ -57,12 +57,11 @@
 */
 
 typedef struct {
-    ICOM_VFIELD(IShellFolder2);
-    DWORD ref;
-
-    ICOM_VTABLE(IPersistFolder2)* lpVtblPersistFolder2;
-    ICOM_VTABLE(IShellExecuteHookW)* lpVtblShellExecuteHookW;
-    ICOM_VTABLE(IShellExecuteHookA)* lpVtblShellExecuteHookA;
+    IShellFolder2Vtbl      *lpVtbl;
+    DWORD                   ref;
+    IPersistFolder2Vtbl    *lpVtblPersistFolder2;
+    IShellExecuteHookWVtbl *lpVtblShellExecuteHookW;
+    IShellExecuteHookAVtbl *lpVtblShellExecuteHookA;
 
     IUnknown *pUnkOuter;	/* used for aggregation */
 
diff --git a/dlls/shell32/dataobject.c b/dlls/shell32/dataobject.c
index b4ab270..2f5592d 100644
--- a/dlls/shell32/dataobject.c
+++ b/dlls/shell32/dataobject.c
@@ -40,7 +40,7 @@
 typedef struct
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IEnumFORMATETC);
+    IEnumFORMATETCVtbl *lpVtbl;
     DWORD                        ref;
     /* IEnumFORMATETC fields */
     UINT        posFmt;
@@ -208,7 +208,7 @@
 typedef struct
 {
 	/* IUnknown fields */
-	ICOM_VFIELD(IDataObject);
+	IDataObjectVtbl *lpVtbl;
 	DWORD		ref;
 
 	/* IDataObject fields */
diff --git a/dlls/shell32/dragdrophelper.c b/dlls/shell32/dragdrophelper.c
index 7e47535..63319f9 100644
--- a/dlls/shell32/dragdrophelper.c
+++ b/dlls/shell32/dragdrophelper.c
@@ -46,7 +46,7 @@
 */
 
 typedef struct {
-    ICOM_VFIELD (IDropTargetHelper);
+    IDropTargetHelperVtbl *lpVtbl;
     DWORD ref;
 } IDropTargetHelperImpl;
 
diff --git a/dlls/shell32/enumidlist.c b/dlls/shell32/enumidlist.c
index 0712201..1e6b3d5 100644
--- a/dlls/shell32/enumidlist.c
+++ b/dlls/shell32/enumidlist.c
@@ -45,7 +45,7 @@
 
 typedef struct
 {
-	ICOM_VFIELD(IEnumIDList);
+	IEnumIDListVtbl                *lpVtbl;
 	DWORD				ref;
 	LPENUMLIST			mpFirst;
 	LPENUMLIST			mpLast;
diff --git a/dlls/shell32/folders.c b/dlls/shell32/folders.c
index 2cb6673..b9f0d36 100644
--- a/dlls/shell32/folders.c
+++ b/dlls/shell32/folders.c
@@ -46,11 +46,11 @@
 */
 typedef struct
 {
-	ICOM_VFIELD(IExtractIconW);
-	DWORD	ref;
-	ICOM_VTABLE(IPersistFile)*	lpvtblPersistFile;
-	ICOM_VTABLE(IExtractIconA)*	lpvtblExtractIconA;
-	LPITEMIDLIST	pidl;
+	IExtractIconWVtbl *lpVtbl;
+	DWORD              ref;
+	IPersistFileVtbl  *lpvtblPersistFile;
+	IExtractIconAVtbl *lpvtblExtractIconA;
+	LPITEMIDLIST       pidl;
 } IExtractIconWImpl;
 
 static struct ICOM_VTABLE(IExtractIconA) eiavt;
diff --git a/dlls/shell32/shelllink.c b/dlls/shell32/shelllink.c
index 832a830..7560294 100644
--- a/dlls/shell32/shelllink.c
+++ b/dlls/shell32/shelllink.c
@@ -121,12 +121,12 @@
 
 typedef struct
 {
-	ICOM_VFIELD(IShellLinkA);
-	DWORD				ref;
+	IShellLinkAVtbl    *lpVtbl;
+	DWORD               ref;
 
-	ICOM_VTABLE(IShellLinkW)*	lpvtblw;
-	ICOM_VTABLE(IPersistFile)*	lpvtblPersistFile;
-	ICOM_VTABLE(IPersistStream)*	lpvtblPersistStream;
+	IShellLinkWVtbl    *lpvtblw;
+	IPersistFileVtbl   *lpvtblPersistFile;
+	IPersistStreamVtbl *lpvtblPersistStream;
 
 	/* data structures according to the informations in the link */
 	LPITEMIDLIST	pPidl;
diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c
index 85b482d..07c11ce 100644
--- a/dlls/shell32/shellole.c
+++ b/dlls/shell32/shellole.c
@@ -278,7 +278,7 @@
 
 /* this is the static object instance */
 typedef struct {
-	ICOM_VFIELD(IMalloc);
+	IMallocVtbl *lpVtbl;
 	DWORD dummy;
 } _ShellMalloc;
 
@@ -498,7 +498,7 @@
 
 typedef struct
 {
-    ICOM_VFIELD(IClassFactory);
+    IClassFactoryVtbl          *lpVtbl;
     DWORD                       ref;
     CLSID			*rclsid;
     LPFNCREATEINSTANCE		lpfnCI;
diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c
index ebfb1ba..eb0fc4a 100644
--- a/dlls/shell32/shfldr_desktop.c
+++ b/dlls/shell32/shfldr_desktop.c
@@ -58,7 +58,7 @@
 */
 
 typedef struct {
-    ICOM_VFIELD (IShellFolder2);
+    IShellFolder2Vtbl *lpVtbl;
     DWORD ref;
 
     CLSID *pclsid;
diff --git a/dlls/shell32/shfldr_fs.c b/dlls/shell32/shfldr_fs.c
index d0f9ed1..9244d48 100644
--- a/dlls/shell32/shfldr_fs.c
+++ b/dlls/shell32/shfldr_fs.c
@@ -58,12 +58,12 @@
 */
 
 typedef struct {
-    ICOM_VFIELD (IUnknown);
-    DWORD ref;
-    ICOM_VTABLE (IShellFolder2) * lpvtblShellFolder;
-    ICOM_VTABLE (IPersistFolder3) * lpvtblPersistFolder3;
-    ICOM_VTABLE (IDropTarget) * lpvtblDropTarget;
-    ICOM_VTABLE (ISFHelper) * lpvtblSFHelper;
+    IUnknownVtbl        *lpVtbl;
+    DWORD                ref;
+    IShellFolder2Vtbl   *lpvtblShellFolder;
+    IPersistFolder3Vtbl *lpvtblPersistFolder3;
+    IDropTargetVtbl     *lpvtblDropTarget;
+    ISFHelperVtbl       *lpvtblSFHelper;
 
     IUnknown *pUnkOuter;	/* used for aggregation */
 
diff --git a/dlls/shell32/shfldr_mycomp.c b/dlls/shell32/shfldr_mycomp.c
index 28699c8..a55bb7f 100644
--- a/dlls/shell32/shfldr_mycomp.c
+++ b/dlls/shell32/shfldr_mycomp.c
@@ -55,9 +55,9 @@
 */
 
 typedef struct {
-    ICOM_VFIELD (IShellFolder2);
-    DWORD ref;
-      ICOM_VTABLE (IPersistFolder2) * lpVtblPersistFolder2;
+    IShellFolder2Vtbl   *lpVtbl;
+    DWORD                ref;
+    IPersistFolder2Vtbl *lpVtblPersistFolder2;
 
     /* both paths are parsible from the desktop */
     LPITEMIDLIST pidlRoot;	/* absolute pidl */
diff --git a/dlls/shell32/shlfsbind.c b/dlls/shell32/shlfsbind.c
index 0804b1b..69c5d49 100644
--- a/dlls/shell32/shlfsbind.c
+++ b/dlls/shell32/shlfsbind.c
@@ -41,7 +41,7 @@
  */
 typedef struct
 {
-	ICOM_VFIELD(IFileSystemBindData);
+	IFileSystemBindDataVtbl *lpVtbl;
 	DWORD              ref;
 	WIN32_FIND_DATAW findFile;
 } IFileSystemBindDataImpl;
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index 45a3154..365d41c 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -74,12 +74,13 @@
 }LISTVIEW_SORT_INFO, *LPLISTVIEW_SORT_INFO;
 
 typedef struct
-{	ICOM_VFIELD(IShellView);
-	DWORD		ref;
-	ICOM_VTABLE(IOleCommandTarget)*	lpvtblOleCommandTarget;
-	ICOM_VTABLE(IDropTarget)*	lpvtblDropTarget;
-	ICOM_VTABLE(IDropSource)*	lpvtblDropSource;
-	ICOM_VTABLE(IViewObject)*	lpvtblViewObject;
+{
+	IShellViewVtbl*		lpVtbl;
+	DWORD			ref;
+	IOleCommandTargetVtbl*	lpvtblOleCommandTarget;
+	IDropTargetVtbl*	lpvtblDropTarget;
+	IDropSourceVtbl*	lpvtblDropSource;
+	IViewObjectVtbl*	lpvtblViewObject;
 	IShellFolder*	pSFParent;
 	IShellFolder2*	pSF2Parent;
 	IShellBrowser*	pShellBrowser;
diff --git a/dlls/shell32/shv_bg_cmenu.c b/dlls/shell32/shv_bg_cmenu.c
index c4174fa..b7e6b59 100644
--- a/dlls/shell32/shv_bg_cmenu.c
+++ b/dlls/shell32/shv_bg_cmenu.c
@@ -41,7 +41,7 @@
 */
 typedef struct
 {
-	ICOM_VFIELD(IContextMenu2);
+	IContextMenu2Vtbl *lpVtbl;
 	IShellFolder*	pSFParent;
 	DWORD		ref;
 } BgCmImpl;
diff --git a/dlls/shell32/shv_item_cmenu.c b/dlls/shell32/shv_item_cmenu.c
index 2937644..e41f972 100644
--- a/dlls/shell32/shv_item_cmenu.c
+++ b/dlls/shell32/shv_item_cmenu.c
@@ -41,7 +41,7 @@
 *  IContextMenu Implementation
 */
 typedef struct
-{	ICOM_VFIELD(IContextMenu2);
+{	IContextMenu2Vtbl *lpVtbl;
 	DWORD		ref;
 	IShellFolder*	pSFParent;
 	LPITEMIDLIST	pidl;		/* root pidl */
diff --git a/dlls/shlwapi/assoc.c b/dlls/shlwapi/assoc.c
index 4f6e403..97b173d 100644
--- a/dlls/shlwapi/assoc.c
+++ b/dlls/shlwapi/assoc.c
@@ -58,7 +58,7 @@
 
 typedef struct
 {
-  ICOM_VFIELD(IQueryAssociations);
+  IQueryAssociationsVtbl *lpVtbl;
   LONG ref;
   HKEY hkeySource;
   HKEY hkeyProgID;
diff --git a/dlls/shlwapi/istream.c b/dlls/shlwapi/istream.c
index a669ca1..2f8c3ed 100644
--- a/dlls/shlwapi/istream.c
+++ b/dlls/shlwapi/istream.c
@@ -36,7 +36,7 @@
 /* Layout of ISHFileStream object */
 typedef struct
 {
-  ICOM_VFIELD(IStream);
+  IStreamVtbl *lpVtbl;
   ULONG    ref;
   HANDLE   hFile;
   DWORD    dwMode;
diff --git a/dlls/shlwapi/regstream.c b/dlls/shlwapi/regstream.c
index be8db33..033e942 100644
--- a/dlls/shlwapi/regstream.c
+++ b/dlls/shlwapi/regstream.c
@@ -33,7 +33,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(shell);
 
 typedef struct
-{	ICOM_VFIELD(IStream);
+{	IStreamVtbl *lpVtbl;
 	DWORD  ref;
 	HKEY   hKey;
 	LPBYTE pbBuffer;
diff --git a/dlls/winmm/winealsa/audio.c b/dlls/winmm/winealsa/audio.c
index 6af4811..5bbcd66 100644
--- a/dlls/winmm/winealsa/audio.c
+++ b/dlls/winmm/winealsa/audio.c
@@ -2095,7 +2095,7 @@
 struct IDsDriverImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriver);
+    IDsDriverVtbl      *lpVtbl;
     DWORD		ref;
     /* IDsDriverImpl fields */
     UINT		wDevID;
@@ -2105,7 +2105,7 @@
 struct IDsDriverBufferImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverBuffer);
+    IDsDriverBufferVtbl      *lpVtbl;
     DWORD		      ref;
     /* IDsDriverBufferImpl fields */
     IDsDriverImpl*	      drv;
diff --git a/dlls/winmm/winealsa/audio_05.c b/dlls/winmm/winealsa/audio_05.c
index f4da52c..7b62bdd 100644
--- a/dlls/winmm/winealsa/audio_05.c
+++ b/dlls/winmm/winealsa/audio_05.c
@@ -1359,7 +1359,7 @@
 struct IDsDriverImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriver);
+    IDsDriverVtbl      *lpVtbl;
     DWORD		ref;
     /* IDsDriverImpl fields */
     UINT		wDevID;
@@ -1369,7 +1369,7 @@
 struct IDsDriverBufferImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverBuffer);
+    IDsDriverBufferVtbl *lpVtbl;
     DWORD		ref;
     /* IDsDriverBufferImpl fields */
     IDsDriverImpl*	drv;
diff --git a/dlls/winmm/wineaudioio/audio.c b/dlls/winmm/wineaudioio/audio.c
index e4d2199..a1002cf 100644
--- a/dlls/winmm/wineaudioio/audio.c
+++ b/dlls/winmm/wineaudioio/audio.c
@@ -1285,7 +1285,7 @@
 struct IDsDriverImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriver);
+    IDsDriverVtbl      *lpVtbl;
     DWORD		ref;
     /* IDsDriverImpl fields */
     UINT		wDevID;
@@ -1295,7 +1295,7 @@
 struct IDsDriverBufferImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverBuffer);
+    IDsDriverBufferVtbl *lpVtbl;
     DWORD		ref;
     /* IDsDriverBufferImpl fields */
     IDsDriverImpl*	drv;
diff --git a/dlls/winmm/winejack/audio.c b/dlls/winmm/winejack/audio.c
index 52e4779..ffe35f1 100644
--- a/dlls/winmm/winejack/audio.c
+++ b/dlls/winmm/winejack/audio.c
@@ -1784,7 +1784,7 @@
 struct IDsDriverImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriver);
+    IDsDriverVtbl      *lpVtbl;
     DWORD		ref;
     /* IDsDriverImpl fields */
     UINT		wDevID;
@@ -1794,7 +1794,7 @@
 struct IDsDriverBufferImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverBuffer);
+    IDsDriverBufferVtbl *lpVtbl;
     DWORD ref;
     /* IDsDriverBufferImpl fields */
     IDsDriverImpl* drv;
diff --git a/dlls/winmm/wineoss/audio.c b/dlls/winmm/wineoss/audio.c
index e65f68f..5828f97 100644
--- a/dlls/winmm/wineoss/audio.c
+++ b/dlls/winmm/wineoss/audio.c
@@ -2306,7 +2306,7 @@
 struct IDsDriverPropertySetImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverPropertySet);
+    IDsDriverPropertySetVtbl   *lpVtbl;
     DWORD                       ref;
 
     IDsDriverBufferImpl*        buffer;
@@ -2315,7 +2315,7 @@
 struct IDsDriverNotifyImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverNotify);
+    IDsDriverNotifyVtbl        *lpVtbl;
     DWORD                       ref;
 
     /* IDsDriverNotifyImpl fields */
@@ -2328,7 +2328,7 @@
 struct IDsDriverImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriver);
+    IDsDriverVtbl              *lpVtbl;
     DWORD                       ref;
 
     /* IDsDriverImpl fields */
@@ -2342,7 +2342,7 @@
 struct IDsDriverBufferImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverBuffer);
+    IDsDriverBufferVtbl        *lpVtbl;
     DWORD                       ref;
 
     /* IDsDriverBufferImpl fields */
@@ -3950,7 +3950,7 @@
 struct IDsCaptureDriverPropertySetImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverPropertySet);
+    IDsDriverPropertySetVtbl           *lpVtbl;
     DWORD                               ref;
 
     IDsCaptureDriverBufferImpl*         capture_buffer;
@@ -3959,7 +3959,7 @@
 struct IDsCaptureDriverNotifyImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsDriverNotify);
+    IDsDriverNotifyVtbl                *lpVtbl;
     DWORD                               ref;
 
     IDsCaptureDriverBufferImpl*         capture_buffer;
@@ -3968,7 +3968,7 @@
 struct IDsCaptureDriverImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsCaptureDriver);
+    IDsCaptureDriverVtbl               *lpVtbl;
     DWORD                               ref;
 
     /* IDsCaptureDriverImpl fields */
@@ -3979,7 +3979,7 @@
 struct IDsCaptureDriverBufferImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD(IDsCaptureDriverBuffer);
+    IDsCaptureDriverBufferVtbl         *lpVtbl;
     DWORD                               ref;
 
     /* IDsCaptureDriverBufferImpl fields */