Use a more compatible technique to declare COM interfaces methods,
using Microsoft's STDMETHOD macros instead of the Wine-specific
ICOM_METHOD ones.

diff --git a/include/dmusicc.h b/include/dmusicc.h
index 7fd802a..f477bb2 100644
--- a/include/dmusicc.h
+++ b/include/dmusicc.h
@@ -285,26 +285,26 @@
 /*****************************************************************************
  * IDirectMusic interface
  */
-#undef ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusic
+#undef INTERFACE
+#define INTERFACE IDirectMusic
 #define IDirectMusic_METHODS \
     /*** IDirectMusic methods ***/ \
-    ICOM_METHOD2(HRESULT, EnumPort, DWORD,dwIndex, LPDMUS_PORTCAPS,pPortCaps) \
-    ICOM_METHOD3(HRESULT, CreateMusicBuffer, LPDMUS_BUFFERDESC,pBufferDesc, LPDIRECTMUSICBUFFER**,ppBuffer, LPUNKNOWN,pUnkOuter) \
-    ICOM_METHOD4(HRESULT, CreatePort, REFCLSID,rclsidPort, LPDMUS_PORTPARAMS,pPortParams, LPDIRECTMUSICPORT*,ppPort, LPUNKNOWN,pUnkOuter) \
-    ICOM_METHOD2(HRESULT, EnumMasterClock, DWORD,dwIndex, LPDMUS_CLOCKINFO,lpClockInfo) \
-    ICOM_METHOD2(HRESULT, GetMasterClock, LPGUID,pguidClock, IReferenceClock**,ppReferenceClock) \
-    ICOM_METHOD1(HRESULT, SetMasterClock,  REFGUID,rguidClock) \
-    ICOM_METHOD1(HRESULT, Activate, BOOL,fEnable) \
-    ICOM_METHOD1(HRESULT, GetDefaultPort, LPGUID,pguidPort) \
-    ICOM_METHOD2(HRESULT, SetDirectSound, LPDIRECTSOUND,pDirectSound, HWND,hWnd)
+    STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE; \
+    STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE; \
+    STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE; \
+    STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE; \
+    STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, IReferenceClock **ppReferenceClock) PURE; \
+    STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE; \
+    STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE; \
+    STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE; \
+    STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
 
     /*** IDirectMusic methods ***/
 #define IDirectMusic_IMETHODS \
     IUnknown_IMETHODS \
     IDirectMusic_METHODS
 ICOM_DEFINE(IDirectMusic,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusic_QueryInterface(p,a,b)			ICOM_CALL2(QueryInterface,p,a,b)
@@ -325,11 +325,11 @@
 /*****************************************************************************
  * IDirectMusic8 interface
  */
-#undef ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusic8
+#undef INTERFACE
+#define INTERFACE IDirectMusic8
 #define IDirectMusic8_METHODS \
     /*** IDirectMusic8 methods ***/ \
-    ICOM_METHOD1(HRESULT, SetExternalMasterClock,  IReferenceClock*,pClock)
+    STDMETHOD(SetExternalMasterClock)(THIS_ IReferenceClock *pClock) PURE;
 
     /*** IDirectMusic8 methods ***/
 #define IDirectMusic8_IMETHODS \
@@ -337,7 +337,7 @@
     IDirectMusic_METHODS \
 	IDirectMusic8_METHODS
 ICOM_DEFINE(IDirectMusic8,IDirectMusic)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusic8_QueryInterface(p,a,b)			ICOM_CALL2(QueryInterface,p,a,b)
@@ -360,30 +360,30 @@
 /*****************************************************************************
  * IDirectMusicBuffer interface
  */
-#undef ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusicBuffer
+#undef INTERFACE
+#define INTERFACE IDirectMusicBuffer
 #define IDirectMusicBuffer_METHODS \
     /*** IDirectMusicBuffer methods ***/ \
-    ICOM_METHOD (HRESULT, Flush) \
-	ICOM_METHOD1(HRESULT, TotalTime, LPREFERENCE_TIME,prtTime) \
-	ICOM_METHOD3(HRESULT, PackStructured, REFERENCE_TIME,rt, DWORD,dwChannelGroup, DWORD,dwChannelMessage) \
-	ICOM_METHOD4(HRESULT, PackUnstructured, REFERENCE_TIME,rt, DWORD,dwChannelGroup, DWORD,cb, LPBYTE,lpb) \
-    ICOM_METHOD (HRESULT, ResetReadPtr) \
-    ICOM_METHOD4(HRESULT, GetNextEvent, LPREFERENCE_TIME,prt, LPDWORD,pdwChannelGroup, LPDWORD,pdwLength, LPBYTE*,ppData) \
-	ICOM_METHOD1(HRESULT, GetRawBufferPtr, LPBYTE*,ppData) \
-	ICOM_METHOD1(HRESULT, GetStartTime, LPREFERENCE_TIME,prt) \
-	ICOM_METHOD1(HRESULT, GetUsedBytes, LPDWORD,pcb) \
-	ICOM_METHOD1(HRESULT, GetMaxBytes, LPDWORD,pcb) \
-	ICOM_METHOD1(HRESULT, GetBufferFormat, LPGUID,pGuidFormat) \
-	ICOM_METHOD1(HRESULT, SetStartTime, REFERENCE_TIME,rt) \
-	ICOM_METHOD1(HRESULT, SetUsedBytes, DWORD,cb)
-	
-	/*** IDirectMusicBuffer methods ***/
+    STDMETHOD(Flush)(THIS) PURE; \
+    STDMETHOD(TotalTime)(THIS_ LPREFERENCE_TIME prtTime) PURE; \
+    STDMETHOD(PackStructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD dwChannelMessage) PURE; \
+    STDMETHOD(PackUnstructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD cb, LPBYTE lpb) PURE; \
+    STDMETHOD(ResetReadPtr)(THIS) PURE; \
+    STDMETHOD(GetNextEvent)(THIS_ LPREFERENCE_TIME prt, LPDWORD pdwChannelGroup, LPDWORD pdwLength, LPBYTE *ppData) PURE; \
+    STDMETHOD(GetRawBufferPtr)(THIS_ LPBYTE *ppData) PURE; \
+    STDMETHOD(GetStartTime)(THIS_ LPREFERENCE_TIME prt) PURE; \
+    STDMETHOD(GetUsedBytes)(THIS_ LPDWORD pcb) PURE; \
+    STDMETHOD(GetMaxBytes)(THIS_ LPDWORD pcb) PURE; \
+    STDMETHOD(GetBufferFormat)(THIS_ LPGUID pGuidFormat) PURE; \
+    STDMETHOD(SetStartTime)(THIS_ REFERENCE_TIME rt) PURE; \
+    STDMETHOD(SetUsedBytes)(THIS_ DWORD cb) PURE;
+
+    /*** IDirectMusicBuffer methods ***/
 #define IDirectMusicBuffer_IMETHODS \
     IUnknown_IMETHODS \
     IDirectMusicBuffer_METHODS
 ICOM_DEFINE(IDirectMusicBuffer,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusicBuffer_QueryInterface(p,a,b)			ICOM_CALL2(QueryInterface,p,a,b)
@@ -407,19 +407,19 @@
 /*****************************************************************************
  * IDirectMusicInstrument interface
  */
-#undef  ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusicInstrument
+#undef  INTERFACE
+#define INTERFACE IDirectMusicInstrument
 #define IDirectMusicInstrument_METHODS \
     /*** IDirectMusicInstrument methods ***/ \
-    ICOM_METHOD1(HRESULT, GetPatch, DWORD*,pdwPatch) \
-	ICOM_METHOD1(HRESULT, SetPatch, DWORD,dwPatch)
-	
-	/*** IDirectMusicInstrument methods ***/
+    STDMETHOD(GetPatch)(THIS_ DWORD *pdwPatch) PURE; \
+    STDMETHOD(SetPatch)(THIS_ DWORD dwPatch) PURE;
+
+    /*** IDirectMusicInstrument methods ***/
 #define IDirectMusicInstrument_IMETHODS \
     IUnknown_IMETHODS \
     IDirectMusicInstrument_METHODS
 ICOM_DEFINE(IDirectMusicInstrument,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusicInstrument_QueryInterface(p,a,b)			ICOM_CALL2(QueryInterface,p,a,b)
@@ -433,8 +433,8 @@
 /*****************************************************************************
  * IDirectMusicDownloadedInstrument interface
  */
-#undef  ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusicDownloadedInstrument
+#undef  INTERFACE
+#define INTERFACE IDirectMusicDownloadedInstrument
 #define IDirectMusicDownloadedInstrument_METHODS \
     /*** IDirectMusicDownloadedInstrument methods ***/ \
     /* none at this time */
@@ -444,7 +444,7 @@
     IUnknown_IMETHODS \
     IDirectMusicDownloadedInstrument_METHODS
 ICOM_DEFINE(IDirectMusicDownloadedInstrument,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b)			ICOM_CALL2(QueryInterface,p,a,b)
@@ -457,19 +457,19 @@
 /*****************************************************************************
  * IDirectMusicCollection interface
  */
-#undef  ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusicCollection
+#undef  INTERFACE
+#define INTERFACE IDirectMusicCollection
 #define IDirectMusicCollection_METHODS \
     /*** IDirectMusicCollection methods ***/ \
-    ICOM_METHOD2(HRESULT, GetInstrument, DWORD,dwPatch, IDirectMusicInstrument**,ppInstrument) \
-    ICOM_METHOD4(HRESULT, EnumInstrument, DWORD,dwIndex, DWORD*,pdwPatch, LPWSTR,pwszName, DWORD,dwNameLen)
-	
-	/*** IDirectMusicCollection methods ***/
+    STDMETHOD(GetInstrument)(THIS_ DWORD dwPatch, IDirectMusicInstrument **ppInstrument) PURE; \
+    STDMETHOD(EnumInstrument)(THIS_ DWORD dwIndex, DWORD *pdwPatch, LPWSTR pwszName, DWORD dwNameLen) PURE;
+
+    /*** IDirectMusicCollection methods ***/
 #define IDirectMusicCollection_IMETHODS \
     IUnknown_IMETHODS \
     IDirectMusicCollection_METHODS
 ICOM_DEFINE(IDirectMusicCollection,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusicCollection_QueryInterface(p,a,b)			ICOM_CALL2(QueryInterface,p,a,b)
@@ -483,18 +483,18 @@
 /*****************************************************************************
  * IDirectMusicDownload interface
  */
-#undef  ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusicDownload
+#undef  INTERFACE
+#define INTERFACE IDirectMusicDownload
 #define IDirectMusicDownload_METHODS \
     /*** IDirectMusicDownload methods ***/ \
-    ICOM_METHOD2(HRESULT, GetBuffer, void**,ppvBuffer, DWORD*,pdwSize)
+    STDMETHOD(GetBuffer)(THIS_ void **ppvBuffer, DWORD *pdwSize) PURE;
 
-	/*** IDirectMusicDownload methods ***/
+    /*** IDirectMusicDownload methods ***/
 #define IDirectMusicDownload_IMETHODS \
     IUnknown_IMETHODS \
     IDirectMusicDownload_METHODS
 ICOM_DEFINE(IDirectMusicDownload,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusicDownload_QueryInterface(p,a,b)			ICOM_CALL2(QueryInterface,p,a,b)
@@ -507,23 +507,23 @@
 /*****************************************************************************
  * IDirectMusicPortDownload interface
  */
-#undef  ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusicPortDownload
+#undef  INTERFACE
+#define INTERFACE IDirectMusicPortDownload
 #define IDirectMusicPortDownload_METHODS \
     /*** IDirectMusicPortDownload methods ***/ \
-    ICOM_METHOD2(HRESULT, GetBuffer, DWORD,dwDLId, IDirectMusicDownload**,ppIDMDownload) \
-    ICOM_METHOD2(HRESULT, AllocateBuffer, DWORD,dwSize, IDirectMusicDownload**,ppIDMDownload) \
-    ICOM_METHOD2(HRESULT, GetDLId, DWORD*,pdwStartDLId, DWORD,dwCount) \
-    ICOM_METHOD1(HRESULT, GetAppend, DWORD*,pdwAppend) \
-    ICOM_METHOD1(HRESULT, Download, IDirectMusicDownload*,pIDMDownload) \
-    ICOM_METHOD1(HRESULT, Unload, IDirectMusicDownload*,pIDMDownload)
+    STDMETHOD(GetBuffer)(THIS_ DWORD dwDLId, IDirectMusicDownload **ppIDMDownload) PURE; \
+    STDMETHOD(AllocateBuffer)(THIS_ DWORD dwSize, IDirectMusicDownload **ppIDMDownload) PURE; \
+    STDMETHOD(GetDLId)(THIS_ DWORD *pdwStartDLId, DWORD dwCount) PURE; \
+    STDMETHOD(GetAppend)(THIS_ DWORD *pdwAppend) PURE; \
+    STDMETHOD(Download)(THIS_ IDirectMusicDownload *pIDMDownload) PURE; \
+    STDMETHOD(Unload)(THIS_ IDirectMusicDownload *pIDMDownload) PURE;
 
 	/*** IDirectMusicPortDownload methods ***/
 #define IDirectMusicPortDownload_IMETHODS \
     IUnknown_IMETHODS \
     IDirectMusicPortDownload_METHODS
 ICOM_DEFINE(IDirectMusicPortDownload,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusicPortDownload_QueryInterface(p,a,b)			ICOM_CALL2(QueryInterface,p,a,b)
@@ -587,33 +587,33 @@
 /*****************************************************************************
  * IDirectMusicPort interface
  */
-#undef  ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusicPort
+#undef  INTERFACE
+#define INTERFACE IDirectMusicPort
 #define IDirectMusicPort_METHODS \
     /*** IDirectMusicPort methods ***/ \
-    ICOM_METHOD1(HRESULT, PlayBuffer, LPDIRECTMUSICBUFFER,pBuffer) \
-    ICOM_METHOD1(HRESULT, SetReadNotificationHandle, HANDLE,hEvent) \
-    ICOM_METHOD1(HRESULT, Read, LPDIRECTMUSICBUFFER,pBuffer) \
-    ICOM_METHOD4(HRESULT, DownloadInstrument, IDirectMusicInstrument*,pInstrument, IDirectMusicDownloadedInstrument**,ppDownloadedInstrument, DMUS_NOTERANGE*,pNoteRanges, DWORD,dwNumNoteRanges) \
-    ICOM_METHOD1(HRESULT, UnloadInstrument, IDirectMusicDownloadedInstrument*,pDownloadedInstrument) \
-    ICOM_METHOD1(HRESULT, GetLatencyClock, IReferenceClock**,ppClock) \
-    ICOM_METHOD1(HRESULT, GetRunningStats, LPDMUS_SYNTHSTATS,pStats) \
-    ICOM_METHOD1(HRESULT, GetCaps, LPDMUS_PORTCAPS,pPortCaps) \
-    ICOM_METHOD7(HRESULT, DeviceIoControl, DWORD,dwIoControlCode, LPVOID,lpInBuffer, DWORD,nInBufferSize, LPVOID,lpOutBuffer, DWORD,nOutBufferSize, LPDWORD,lpBytesReturned, LPOVERLAPPED,lpOverlapped) \
-    ICOM_METHOD1(HRESULT, SetNumChannelGroups, DWORD,dwChannelGroups) \
-    ICOM_METHOD1(HRESULT, GetNumChannelGroups, LPDWORD,pdwChannelGroups) \
-    ICOM_METHOD1(HRESULT, Activate, BOOL,fActive) \
-    ICOM_METHOD3(HRESULT, SetChannelPriority, DWORD,dwChannelGroup, DWORD,dwChannel, DWORD,dwPriority) \
-    ICOM_METHOD3(HRESULT, GetChannelPriority, DWORD,dwChannelGroup, DWORD,dwChannel, LPDWORD,pdwPriority) \
-    ICOM_METHOD2(HRESULT, SetDirectSound, LPDIRECTSOUND,pDirectSound, LPDIRECTSOUNDBUFFER,pDirectSoundBuffer) \
-    ICOM_METHOD3(HRESULT, GetFormat, LPWAVEFORMATEX,pWaveFormatEx, LPDWORD,pdwWaveFormatExSize, LPDWORD,pdwBufferSize)
+    STDMETHOD(PlayBuffer)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE; \
+    STDMETHOD(SetReadNotificationHandle)(THIS_ HANDLE hEvent) PURE; \
+    STDMETHOD(Read)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE; \
+    STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInstrument, IDirectMusicDownloadedInstrument **ppDownloadedInstrument, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges) PURE; \
+    STDMETHOD(UnloadInstrument)(THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE; \
+    STDMETHOD(GetLatencyClock)(THIS_ IReferenceClock **ppClock) PURE; \
+    STDMETHOD(GetRunningStats)(THIS_ LPDMUS_SYNTHSTATS pStats) PURE; \
+    STDMETHOD(GetCaps)(THIS_ LPDMUS_PORTCAPS pPortCaps) PURE; \
+    STDMETHOD(DeviceIoControl)(THIS_ DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped) PURE; \
+    STDMETHOD(SetNumChannelGroups)(THIS_ DWORD dwChannelGroups) PURE; \
+    STDMETHOD(GetNumChannelGroups)(THIS_ LPDWORD pdwChannelGroups) PURE; \
+    STDMETHOD(Activate)(THIS_ BOOL fActive) PURE; \
+    STDMETHOD(SetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE; \
+    STDMETHOD(GetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE; \
+    STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE; \
+    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) PURE;
 
 /*** IDirectMusicPort methods ***/
 #define IDirectMusicPort_IMETHODS \
     IUnknown_IMETHODS \
     IDirectMusicPort_METHODS
 ICOM_DEFINE(IDirectMusicPort,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusicPort_QueryInterface(p,a,b)					ICOM_CALL2(QueryInterface,p,a,b)
@@ -641,18 +641,18 @@
 /*****************************************************************************
  * IDirectMusicThru interface
  */
-#undef  ICOM_INTERFACE
-#define ICOM_INTERFACE IDirectMusicThru
+#undef  INTERFACE
+#define INTERFACE IDirectMusicThru
 #define IDirectMusicThru_METHODS \
     /*** IDirectMusicThru methods ***/ \
-    ICOM_METHOD5(HRESULT, ThruChannel, DWORD,dwSourceChannelGroup, DWORD,dwSourceChannel, DWORD,dwDestinationChannelGroup, DWORD,dwDestinationChannel, LPDIRECTMUSICPORT,pDestinationPort)
+    STDMETHOD(ThruChannel)(THIS_ DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort) PURE;
 
 /*** IDirectMusicThru methods ***/
 #define IDirectMusicThru_IMETHODS \
     IUnknown_IMETHODS \
     IDirectMusicThru_METHODS
 ICOM_DEFINE(IDirectMusicThru,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IDirectMusicThru_QueryInterface(p,a,b)					ICOM_CALL2(QueryInterface,p,a,b)
@@ -669,21 +669,21 @@
 /*****************************************************************************
  * IReferenceClock interface
  */
-#undef  ICOM_INTERFACE
-#define ICOM_INTERFACE IReferenceClock
+#undef  INTERFACE
+#define INTERFACE IReferenceClock
 #define IReferenceClock_METHODS \
     /*** IReferenceClock methods ***/ \
-    ICOM_METHOD1(HRESULT, GetTime, REFERENCE_TIME*,pTime) \
-    ICOM_METHOD4(HRESULT, AdviseTime, REFERENCE_TIME,baseTime, REFERENCE_TIME,streamTime, HANDLE,hEvent, DWORD*,pdwAdviseCookie) \
-    ICOM_METHOD4(HRESULT, AdvisePeriodic, REFERENCE_TIME,startTime, REFERENCE_TIME,periodTime, HANDLE,hSemaphore, DWORD*,pdwAdviseCookie) \
-    ICOM_METHOD1(HRESULT, Unadvise, DWORD,dwAdviseCookie)
+    STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *pTime) PURE; \
+    STDMETHOD(AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD *pdwAdviseCookie) PURE; \
+    STDMETHOD(AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD *pdwAdviseCookie) PURE; \
+    STDMETHOD(Unadvise)(THIS_ DWORD dwAdviseCookie) PURE;
 
 	/*** IReferenceClock methods ***/
 #define IReferenceClock_IMETHODS \
     IUnknown_IMETHODS \
     IReferenceClock_METHODS
 ICOM_DEFINE(IReferenceClock,IUnknown)
-#undef ICOM_INTERFACE
+#undef INTERFACE
 
 /*** IUnknown methods ***/
 #define IReferenceClock_QueryInterface(p,a,b)					ICOM_CALL2(QueryInterface,p,a,b)