headers: Import wmp.idl from wine.

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am
index c764699..dedf305 100644
--- a/mingw-w64-headers/Makefile.am
+++ b/mingw-w64-headers/Makefile.am
@@ -229,6 +229,7 @@
   include/wincodec.idl \
   include/wincodecsdk.idl \
   include/wmcontainer.idl \
+  include/wmp.idl \
   include/wmsbuffer.idl \
   include/wmsdkidl.idl \
   include/wsdattachment.idl \
diff --git a/mingw-w64-headers/Makefile.in b/mingw-w64-headers/Makefile.in
index 4c89db7..7221351 100644
--- a/mingw-w64-headers/Makefile.in
+++ b/mingw-w64-headers/Makefile.in
@@ -531,6 +531,7 @@
 @HAVE_WIDL_TRUE@  include/wincodec.idl \
 @HAVE_WIDL_TRUE@  include/wincodecsdk.idl \
 @HAVE_WIDL_TRUE@  include/wmcontainer.idl \
+@HAVE_WIDL_TRUE@  include/wmp.idl \
 @HAVE_WIDL_TRUE@  include/wmsbuffer.idl \
 @HAVE_WIDL_TRUE@  include/wmsdkidl.idl \
 @HAVE_WIDL_TRUE@  include/wsdattachment.idl \
diff --git a/mingw-w64-headers/include/wmp.h b/mingw-w64-headers/include/wmp.h
new file mode 100644
index 0000000..460ca37
--- /dev/null
+++ b/mingw-w64-headers/include/wmp.h
@@ -0,0 +1,10255 @@
+/*** Autogenerated by WIDL 6.1 from include/wmp.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __wmp_h__
+#define __wmp_h__
+
+/* Forward declarations */
+
+#ifndef __IWMPPlaylist_FWD_DEFINED__
+#define __IWMPPlaylist_FWD_DEFINED__
+typedef interface IWMPPlaylist IWMPPlaylist;
+#ifdef __cplusplus
+interface IWMPPlaylist;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPMedia_FWD_DEFINED__
+#define __IWMPMedia_FWD_DEFINED__
+typedef interface IWMPMedia IWMPMedia;
+#ifdef __cplusplus
+interface IWMPMedia;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPControls_FWD_DEFINED__
+#define __IWMPControls_FWD_DEFINED__
+typedef interface IWMPControls IWMPControls;
+#ifdef __cplusplus
+interface IWMPControls;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPControls2_FWD_DEFINED__
+#define __IWMPControls2_FWD_DEFINED__
+typedef interface IWMPControls2 IWMPControls2;
+#ifdef __cplusplus
+interface IWMPControls2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPRemoteMediaServices_FWD_DEFINED__
+#define __IWMPRemoteMediaServices_FWD_DEFINED__
+typedef interface IWMPRemoteMediaServices IWMPRemoteMediaServices;
+#ifdef __cplusplus
+interface IWMPRemoteMediaServices;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPSettings_FWD_DEFINED__
+#define __IWMPSettings_FWD_DEFINED__
+typedef interface IWMPSettings IWMPSettings;
+#ifdef __cplusplus
+interface IWMPSettings;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPStringCollection_FWD_DEFINED__
+#define __IWMPStringCollection_FWD_DEFINED__
+typedef interface IWMPStringCollection IWMPStringCollection;
+#ifdef __cplusplus
+interface IWMPStringCollection;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPMediaCollection_FWD_DEFINED__
+#define __IWMPMediaCollection_FWD_DEFINED__
+typedef interface IWMPMediaCollection IWMPMediaCollection;
+#ifdef __cplusplus
+interface IWMPMediaCollection;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPPlaylistArray_FWD_DEFINED__
+#define __IWMPPlaylistArray_FWD_DEFINED__
+typedef interface IWMPPlaylistArray IWMPPlaylistArray;
+#ifdef __cplusplus
+interface IWMPPlaylistArray;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPPlaylistCollection_FWD_DEFINED__
+#define __IWMPPlaylistCollection_FWD_DEFINED__
+typedef interface IWMPPlaylistCollection IWMPPlaylistCollection;
+#ifdef __cplusplus
+interface IWMPPlaylistCollection;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPNetwork_FWD_DEFINED__
+#define __IWMPNetwork_FWD_DEFINED__
+typedef interface IWMPNetwork IWMPNetwork;
+#ifdef __cplusplus
+interface IWMPNetwork;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPCdrom_FWD_DEFINED__
+#define __IWMPCdrom_FWD_DEFINED__
+typedef interface IWMPCdrom IWMPCdrom;
+#ifdef __cplusplus
+interface IWMPCdrom;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPCdromCollection_FWD_DEFINED__
+#define __IWMPCdromCollection_FWD_DEFINED__
+typedef interface IWMPCdromCollection IWMPCdromCollection;
+#ifdef __cplusplus
+interface IWMPCdromCollection;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPDVD_FWD_DEFINED__
+#define __IWMPDVD_FWD_DEFINED__
+typedef interface IWMPDVD IWMPDVD;
+#ifdef __cplusplus
+interface IWMPDVD;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPClosedCaption_FWD_DEFINED__
+#define __IWMPClosedCaption_FWD_DEFINED__
+typedef interface IWMPClosedCaption IWMPClosedCaption;
+#ifdef __cplusplus
+interface IWMPClosedCaption;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPErrorItem_FWD_DEFINED__
+#define __IWMPErrorItem_FWD_DEFINED__
+typedef interface IWMPErrorItem IWMPErrorItem;
+#ifdef __cplusplus
+interface IWMPErrorItem;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPMedia2_FWD_DEFINED__
+#define __IWMPMedia2_FWD_DEFINED__
+typedef interface IWMPMedia2 IWMPMedia2;
+#ifdef __cplusplus
+interface IWMPMedia2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPMedia3_FWD_DEFINED__
+#define __IWMPMedia3_FWD_DEFINED__
+typedef interface IWMPMedia3 IWMPMedia3;
+#ifdef __cplusplus
+interface IWMPMedia3;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPError_FWD_DEFINED__
+#define __IWMPError_FWD_DEFINED__
+typedef interface IWMPError IWMPError;
+#ifdef __cplusplus
+interface IWMPError;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPPlayerApplication_FWD_DEFINED__
+#define __IWMPPlayerApplication_FWD_DEFINED__
+typedef interface IWMPPlayerApplication IWMPPlayerApplication;
+#ifdef __cplusplus
+interface IWMPPlayerApplication;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPCore_FWD_DEFINED__
+#define __IWMPCore_FWD_DEFINED__
+typedef interface IWMPCore IWMPCore;
+#ifdef __cplusplus
+interface IWMPCore;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPCore2_FWD_DEFINED__
+#define __IWMPCore2_FWD_DEFINED__
+typedef interface IWMPCore2 IWMPCore2;
+#ifdef __cplusplus
+interface IWMPCore2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPCore3_FWD_DEFINED__
+#define __IWMPCore3_FWD_DEFINED__
+typedef interface IWMPCore3 IWMPCore3;
+#ifdef __cplusplus
+interface IWMPCore3;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPPlayer4_FWD_DEFINED__
+#define __IWMPPlayer4_FWD_DEFINED__
+typedef interface IWMPPlayer4 IWMPPlayer4;
+#ifdef __cplusplus
+interface IWMPPlayer4;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPPlayer_FWD_DEFINED__
+#define __IWMPPlayer_FWD_DEFINED__
+typedef interface IWMPPlayer IWMPPlayer;
+#ifdef __cplusplus
+interface IWMPPlayer;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPSyncDevice_FWD_DEFINED__
+#define __IWMPSyncDevice_FWD_DEFINED__
+typedef interface IWMPSyncDevice IWMPSyncDevice;
+#ifdef __cplusplus
+interface IWMPSyncDevice;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPSyncDevice2_FWD_DEFINED__
+#define __IWMPSyncDevice2_FWD_DEFINED__
+typedef interface IWMPSyncDevice2 IWMPSyncDevice2;
+#ifdef __cplusplus
+interface IWMPSyncDevice2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPCdromRip_FWD_DEFINED__
+#define __IWMPCdromRip_FWD_DEFINED__
+typedef interface IWMPCdromRip IWMPCdromRip;
+#ifdef __cplusplus
+interface IWMPCdromRip;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPCdromBurn_FWD_DEFINED__
+#define __IWMPCdromBurn_FWD_DEFINED__
+typedef interface IWMPCdromBurn IWMPCdromBurn;
+#ifdef __cplusplus
+interface IWMPCdromBurn;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPLibrary_FWD_DEFINED__
+#define __IWMPLibrary_FWD_DEFINED__
+typedef interface IWMPLibrary IWMPLibrary;
+#ifdef __cplusplus
+interface IWMPLibrary;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPEvents_FWD_DEFINED__
+#define __IWMPEvents_FWD_DEFINED__
+typedef interface IWMPEvents IWMPEvents;
+#ifdef __cplusplus
+interface IWMPEvents;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPEvents2_FWD_DEFINED__
+#define __IWMPEvents2_FWD_DEFINED__
+typedef interface IWMPEvents2 IWMPEvents2;
+#ifdef __cplusplus
+interface IWMPEvents2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPEvents3_FWD_DEFINED__
+#define __IWMPEvents3_FWD_DEFINED__
+typedef interface IWMPEvents3 IWMPEvents3;
+#ifdef __cplusplus
+interface IWMPEvents3;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMPEvents4_FWD_DEFINED__
+#define __IWMPEvents4_FWD_DEFINED__
+typedef interface IWMPEvents4 IWMPEvents4;
+#ifdef __cplusplus
+interface IWMPEvents4;
+#endif /* __cplusplus */
+#endif
+
+#ifndef ___WMPOCXEvents_FWD_DEFINED__
+#define ___WMPOCXEvents_FWD_DEFINED__
+typedef interface _WMPOCXEvents _WMPOCXEvents;
+#ifdef __cplusplus
+interface _WMPOCXEvents;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __WindowsMediaPlayer_FWD_DEFINED__
+#define __WindowsMediaPlayer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class WindowsMediaPlayer WindowsMediaPlayer;
+#else
+typedef struct WindowsMediaPlayer WindowsMediaPlayer;
+#endif /* defined __cplusplus */
+#endif /* defined __WindowsMediaPlayer_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __WMPLib_LIBRARY_DEFINED__
+#define __WMPLib_LIBRARY_DEFINED__
+
+DEFINE_GUID(LIBID_WMPLib, 0x6bf52a50, 0x394a, 0x11d3, 0xb1,0x53, 0x00,0xc0,0x4f,0x79,0xfa,0xa6);
+
+typedef enum __WIDL_wmp_generated_name_00000020 {
+    wmposUndefined = 0,
+    wmposPlaylistChanging = 1,
+    wmposPlaylistLocating = 2,
+    wmposPlaylistConnecting = 3,
+    wmposPlaylistLoading = 4,
+    wmposPlaylistOpening = 5,
+    wmposPlaylistOpenNoMedia = 6,
+    wmposPlaylistChanged = 7,
+    wmposMediaChanging = 8,
+    wmposMediaLocating = 9,
+    wmposMediaConnecting = 10,
+    wmposMediaLoading = 11,
+    wmposMediaOpening = 12,
+    wmposMediaOpen = 13,
+    wmposBeginCodecAcquisition = 14,
+    wmposEndCodecAcquisition = 15,
+    wmposBeginLicenseAcquisition = 16,
+    wmposEndLicenseAcquisition = 17,
+    wmposBeginIndividualization = 18,
+    wmposEndIndividualization = 19,
+    wmposMediaWaiting = 20,
+    wmposOpeningUnknownURL = 21
+} WMPOpenState;
+typedef enum __WIDL_wmp_generated_name_00000021 {
+    wmppsUndefined = 0,
+    wmppsStopped = 1,
+    wmppsPaused = 2,
+    wmppsPlaying = 3,
+    wmppsScanForward = 4,
+    wmppsScanReverse = 5,
+    wmppsBuffering = 6,
+    wmppsWaiting = 7,
+    wmppsMediaEnded = 8,
+    wmppsTransitioning = 9,
+    wmppsReady = 10,
+    wmppsReconnecting = 11,
+    wmppsLast = 12
+} WMPPlayState;
+typedef enum __WIDL_wmp_generated_name_00000022 {
+    wmplcUnknown = 0,
+    wmplcClear = 1,
+    wmplcInfoChange = 2,
+    wmplcMove = 3,
+    wmplcDelete = 4,
+    wmplcInsert = 5,
+    wmplcAppend = 6,
+    wmplcPrivate = 7,
+    wmplcNameChange = 8,
+    wmplcMorph = 9,
+    wmplcSort = 10,
+    wmplcLast = 11
+} WMPPlaylistChangeEventType;
+typedef enum __WIDL_wmp_generated_name_00000023 {
+    wmpdsUnknown = 0,
+    wmpdsPartnershipExists = 1,
+    wmpdsPartnershipDeclined = 2,
+    wmpdsPartnershipAnother = 3,
+    wmpdsManualDevice = 4,
+    wmpdsNewDevice = 5,
+    wmpdsLast = 6
+} WMPDeviceStatus;
+typedef enum __WIDL_wmp_generated_name_00000024 {
+    wmpssUnknown = 0,
+    wmpssSynchronizing = 1,
+    wmpssStopped = 2,
+    wmpssEstimating = 3,
+    wmpssLast = 4
+} WMPSyncState;
+typedef enum __WIDL_wmp_generated_name_00000025 {
+    wmprsUnknown = 0,
+    wmprsRipping = 1,
+    wmprsStopped = 2
+} WMPRipState;
+typedef enum __WIDL_wmp_generated_name_00000026 {
+    wmpbfAudioCD = 0,
+    wmpbfDataCD = 1
+} WMPBurnFormat;
+typedef enum __WIDL_wmp_generated_name_00000027 {
+    wmpbsUnknown = 0,
+    wmpbsBusy = 1,
+    wmpbsReady = 2,
+    wmpbsWaitingForDisc = 3,
+    wmpbsRefreshStatusPending = 4,
+    wmpbsPreparingToBurn = 5,
+    wmpbsBurning = 6,
+    wmpbsStopped = 7,
+    wmpbsErasing = 8,
+    wmpbsDownloading = 9
+} WMPBurnState;
+typedef enum __WIDL_wmp_generated_name_00000028 {
+    wmpltUnknown = 0,
+    wmpltAll = 1,
+    wmpltLocal = 2,
+    wmpltRemote = 3,
+    wmpltDisc = 4,
+    wmpltPortableDevice = 5
+} WMPLibraryType;
+typedef enum __WIDL_wmp_generated_name_00000029 {
+    wmpfssUnknown = 0,
+    wmpfssScanning = 1,
+    wmpfssUpdating = 2,
+    wmpfssStopped = 3
+} WMPFolderScanState;
+typedef enum __WIDL_wmp_generated_name_0000002A {
+    wmpsccetUnknown = 0,
+    wmpsccetInsert = 1,
+    wmpsccetChange = 2,
+    wmpsccetDelete = 3,
+    wmpsccetClear = 4,
+    wmpsccetBeginUpdates = 5,
+    wmpsccetEndUpdates = 6
+} WMPStringCollectionChangeEventType;
+#ifndef __IWMPMedia_FWD_DEFINED__
+#define __IWMPMedia_FWD_DEFINED__
+typedef interface IWMPMedia IWMPMedia;
+#ifdef __cplusplus
+interface IWMPMedia;
+#endif /* __cplusplus */
+#endif
+
+/*****************************************************************************
+ * IWMPPlaylist interface
+ */
+#ifndef __IWMPPlaylist_INTERFACE_DEFINED__
+#define __IWMPPlaylist_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPPlaylist, 0xd5f0f4f1, 0x130c, 0x11d3, 0xb1,0x4e, 0x00,0xc0,0x4f,0x79,0xfa,0xa6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d5f0f4f1-130c-11d3-b14e-00c04f79faa6")
+IWMPPlaylist : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_count(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_name(
+        BSTR *pbstrName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_name(
+        BSTR pbstrName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_attributeCount(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_attributeName(
+        LONG lIndex,
+        BSTR *pbstrAttributeName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Item(
+        LONG lIndex,
+        IWMPMedia **ppIWMPMedia) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getItemInfo(
+        BSTR bstrName,
+        BSTR *pbstrVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setItemInfo(
+        BSTR bstrName,
+        BSTR bstrValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_isIdentical(
+        IWMPPlaylist *pIWMPPlaylist,
+        VARIANT_BOOL *pvbool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE clear(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE insertItem(
+        LONG lIndex,
+        IWMPMedia *pIWMPMedia) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE appendItem(
+        IWMPMedia *pIWMPMedia) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE removeItem(
+        IWMPMedia *pIWMPMedia) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE moveItem(
+        LONG lIndexOld,
+        LONG lIndexNew) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPPlaylist, 0xd5f0f4f1, 0x130c, 0x11d3, 0xb1,0x4e, 0x00,0xc0,0x4f,0x79,0xfa,0xa6)
+#endif
+#else
+typedef struct IWMPPlaylistVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPPlaylist *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPPlaylist *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPPlaylist *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPPlaylist *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPPlaylist *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPPlaylist *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPPlaylist *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPPlaylist methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_count)(
+        IWMPPlaylist *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *get_name)(
+        IWMPPlaylist *This,
+        BSTR *pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *put_name)(
+        IWMPPlaylist *This,
+        BSTR pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *get_attributeCount)(
+        IWMPPlaylist *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *get_attributeName)(
+        IWMPPlaylist *This,
+        LONG lIndex,
+        BSTR *pbstrAttributeName);
+
+    HRESULT (STDMETHODCALLTYPE *get_Item)(
+        IWMPPlaylist *This,
+        LONG lIndex,
+        IWMPMedia **ppIWMPMedia);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfo)(
+        IWMPPlaylist *This,
+        BSTR bstrName,
+        BSTR *pbstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *setItemInfo)(
+        IWMPPlaylist *This,
+        BSTR bstrName,
+        BSTR bstrValue);
+
+    HRESULT (STDMETHODCALLTYPE *get_isIdentical)(
+        IWMPPlaylist *This,
+        IWMPPlaylist *pIWMPPlaylist,
+        VARIANT_BOOL *pvbool);
+
+    HRESULT (STDMETHODCALLTYPE *clear)(
+        IWMPPlaylist *This);
+
+    HRESULT (STDMETHODCALLTYPE *insertItem)(
+        IWMPPlaylist *This,
+        LONG lIndex,
+        IWMPMedia *pIWMPMedia);
+
+    HRESULT (STDMETHODCALLTYPE *appendItem)(
+        IWMPPlaylist *This,
+        IWMPMedia *pIWMPMedia);
+
+    HRESULT (STDMETHODCALLTYPE *removeItem)(
+        IWMPPlaylist *This,
+        IWMPMedia *pIWMPMedia);
+
+    HRESULT (STDMETHODCALLTYPE *moveItem)(
+        IWMPPlaylist *This,
+        LONG lIndexOld,
+        LONG lIndexNew);
+
+    END_INTERFACE
+} IWMPPlaylistVtbl;
+
+interface IWMPPlaylist {
+    CONST_VTBL IWMPPlaylistVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPPlaylist_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPPlaylist_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPPlaylist_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPPlaylist_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPPlaylist_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPPlaylist_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPPlaylist_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPPlaylist methods ***/
+#define IWMPPlaylist_get_count(This,plCount) (This)->lpVtbl->get_count(This,plCount)
+#define IWMPPlaylist_get_name(This,pbstrName) (This)->lpVtbl->get_name(This,pbstrName)
+#define IWMPPlaylist_put_name(This,pbstrName) (This)->lpVtbl->put_name(This,pbstrName)
+#define IWMPPlaylist_get_attributeCount(This,plCount) (This)->lpVtbl->get_attributeCount(This,plCount)
+#define IWMPPlaylist_get_attributeName(This,lIndex,pbstrAttributeName) (This)->lpVtbl->get_attributeName(This,lIndex,pbstrAttributeName)
+#define IWMPPlaylist_get_Item(This,lIndex,ppIWMPMedia) (This)->lpVtbl->get_Item(This,lIndex,ppIWMPMedia)
+#define IWMPPlaylist_getItemInfo(This,bstrName,pbstrVal) (This)->lpVtbl->getItemInfo(This,bstrName,pbstrVal)
+#define IWMPPlaylist_setItemInfo(This,bstrName,bstrValue) (This)->lpVtbl->setItemInfo(This,bstrName,bstrValue)
+#define IWMPPlaylist_get_isIdentical(This,pIWMPPlaylist,pvbool) (This)->lpVtbl->get_isIdentical(This,pIWMPPlaylist,pvbool)
+#define IWMPPlaylist_clear(This) (This)->lpVtbl->clear(This)
+#define IWMPPlaylist_insertItem(This,lIndex,pIWMPMedia) (This)->lpVtbl->insertItem(This,lIndex,pIWMPMedia)
+#define IWMPPlaylist_appendItem(This,pIWMPMedia) (This)->lpVtbl->appendItem(This,pIWMPMedia)
+#define IWMPPlaylist_removeItem(This,pIWMPMedia) (This)->lpVtbl->removeItem(This,pIWMPMedia)
+#define IWMPPlaylist_moveItem(This,lIndexOld,lIndexNew) (This)->lpVtbl->moveItem(This,lIndexOld,lIndexNew)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPPlaylist_QueryInterface(IWMPPlaylist* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPPlaylist_AddRef(IWMPPlaylist* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPPlaylist_Release(IWMPPlaylist* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPPlaylist_GetTypeInfoCount(IWMPPlaylist* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_GetTypeInfo(IWMPPlaylist* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_GetIDsOfNames(IWMPPlaylist* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_Invoke(IWMPPlaylist* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPPlaylist methods ***/
+static FORCEINLINE HRESULT IWMPPlaylist_get_count(IWMPPlaylist* This,LONG *plCount) {
+    return This->lpVtbl->get_count(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_get_name(IWMPPlaylist* This,BSTR *pbstrName) {
+    return This->lpVtbl->get_name(This,pbstrName);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_put_name(IWMPPlaylist* This,BSTR pbstrName) {
+    return This->lpVtbl->put_name(This,pbstrName);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_get_attributeCount(IWMPPlaylist* This,LONG *plCount) {
+    return This->lpVtbl->get_attributeCount(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_get_attributeName(IWMPPlaylist* This,LONG lIndex,BSTR *pbstrAttributeName) {
+    return This->lpVtbl->get_attributeName(This,lIndex,pbstrAttributeName);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_get_Item(IWMPPlaylist* This,LONG lIndex,IWMPMedia **ppIWMPMedia) {
+    return This->lpVtbl->get_Item(This,lIndex,ppIWMPMedia);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_getItemInfo(IWMPPlaylist* This,BSTR bstrName,BSTR *pbstrVal) {
+    return This->lpVtbl->getItemInfo(This,bstrName,pbstrVal);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_setItemInfo(IWMPPlaylist* This,BSTR bstrName,BSTR bstrValue) {
+    return This->lpVtbl->setItemInfo(This,bstrName,bstrValue);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_get_isIdentical(IWMPPlaylist* This,IWMPPlaylist *pIWMPPlaylist,VARIANT_BOOL *pvbool) {
+    return This->lpVtbl->get_isIdentical(This,pIWMPPlaylist,pvbool);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_clear(IWMPPlaylist* This) {
+    return This->lpVtbl->clear(This);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_insertItem(IWMPPlaylist* This,LONG lIndex,IWMPMedia *pIWMPMedia) {
+    return This->lpVtbl->insertItem(This,lIndex,pIWMPMedia);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_appendItem(IWMPPlaylist* This,IWMPMedia *pIWMPMedia) {
+    return This->lpVtbl->appendItem(This,pIWMPMedia);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_removeItem(IWMPPlaylist* This,IWMPMedia *pIWMPMedia) {
+    return This->lpVtbl->removeItem(This,pIWMPMedia);
+}
+static FORCEINLINE HRESULT IWMPPlaylist_moveItem(IWMPPlaylist* This,LONG lIndexOld,LONG lIndexNew) {
+    return This->lpVtbl->moveItem(This,lIndexOld,lIndexNew);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPPlaylist_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPMedia interface
+ */
+#ifndef __IWMPMedia_INTERFACE_DEFINED__
+#define __IWMPMedia_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPMedia, 0x94d55e95, 0x3fac, 0x11d3, 0xb1,0x55, 0x00,0xc0,0x4f,0x79,0xfa,0xa6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("94d55e95-3fac-11d3-b155-00c04f79faa6")
+IWMPMedia : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_isIdentical(
+        IWMPMedia *pIWMPMedia,
+        VARIANT_BOOL *pvbool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_sourceURL(
+        BSTR *pbstrSourceURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_name(
+        BSTR *pbstrName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_name(
+        BSTR pbstrName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_imageSourceWidth(
+        LONG *pWidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_imageSourceHeight(
+        LONG *pHeight) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_markerCount(
+        LONG *pMarkerCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getMarkerTime(
+        LONG MarkerNum,
+        double *pMarkerTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getMarkerName(
+        LONG MarkerNum,
+        BSTR *pbstrMarkerName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_duration(
+        double *pDuration) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_durationString(
+        BSTR *pbstrDuration) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_attributeCount(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getAttributeName(
+        LONG lIndex,
+        BSTR *pbstrItemName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getItemInfo(
+        BSTR bstrItemName,
+        BSTR *pbstrVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setItemInfo(
+        BSTR bstrItemName,
+        BSTR bstrVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getItemInfoByAtom(
+        LONG lAtom,
+        BSTR *pbstrVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE isMemberOf(
+        IWMPPlaylist *pPlaylist,
+        VARIANT_BOOL *pvarfIsMemberOf) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE isReadOnlyItem(
+        BSTR bstrItemName,
+        VARIANT_BOOL *pvarfIsReadOnly) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPMedia, 0x94d55e95, 0x3fac, 0x11d3, 0xb1,0x55, 0x00,0xc0,0x4f,0x79,0xfa,0xa6)
+#endif
+#else
+typedef struct IWMPMediaVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPMedia *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPMedia *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPMedia *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPMedia *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPMedia *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPMedia *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPMedia *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPMedia methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_isIdentical)(
+        IWMPMedia *This,
+        IWMPMedia *pIWMPMedia,
+        VARIANT_BOOL *pvbool);
+
+    HRESULT (STDMETHODCALLTYPE *get_sourceURL)(
+        IWMPMedia *This,
+        BSTR *pbstrSourceURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_name)(
+        IWMPMedia *This,
+        BSTR *pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *put_name)(
+        IWMPMedia *This,
+        BSTR pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *get_imageSourceWidth)(
+        IWMPMedia *This,
+        LONG *pWidth);
+
+    HRESULT (STDMETHODCALLTYPE *get_imageSourceHeight)(
+        IWMPMedia *This,
+        LONG *pHeight);
+
+    HRESULT (STDMETHODCALLTYPE *get_markerCount)(
+        IWMPMedia *This,
+        LONG *pMarkerCount);
+
+    HRESULT (STDMETHODCALLTYPE *getMarkerTime)(
+        IWMPMedia *This,
+        LONG MarkerNum,
+        double *pMarkerTime);
+
+    HRESULT (STDMETHODCALLTYPE *getMarkerName)(
+        IWMPMedia *This,
+        LONG MarkerNum,
+        BSTR *pbstrMarkerName);
+
+    HRESULT (STDMETHODCALLTYPE *get_duration)(
+        IWMPMedia *This,
+        double *pDuration);
+
+    HRESULT (STDMETHODCALLTYPE *get_durationString)(
+        IWMPMedia *This,
+        BSTR *pbstrDuration);
+
+    HRESULT (STDMETHODCALLTYPE *get_attributeCount)(
+        IWMPMedia *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *getAttributeName)(
+        IWMPMedia *This,
+        LONG lIndex,
+        BSTR *pbstrItemName);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfo)(
+        IWMPMedia *This,
+        BSTR bstrItemName,
+        BSTR *pbstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *setItemInfo)(
+        IWMPMedia *This,
+        BSTR bstrItemName,
+        BSTR bstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfoByAtom)(
+        IWMPMedia *This,
+        LONG lAtom,
+        BSTR *pbstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *isMemberOf)(
+        IWMPMedia *This,
+        IWMPPlaylist *pPlaylist,
+        VARIANT_BOOL *pvarfIsMemberOf);
+
+    HRESULT (STDMETHODCALLTYPE *isReadOnlyItem)(
+        IWMPMedia *This,
+        BSTR bstrItemName,
+        VARIANT_BOOL *pvarfIsReadOnly);
+
+    END_INTERFACE
+} IWMPMediaVtbl;
+
+interface IWMPMedia {
+    CONST_VTBL IWMPMediaVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPMedia_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPMedia_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPMedia_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPMedia_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPMedia_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPMedia_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPMedia_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPMedia methods ***/
+#define IWMPMedia_get_isIdentical(This,pIWMPMedia,pvbool) (This)->lpVtbl->get_isIdentical(This,pIWMPMedia,pvbool)
+#define IWMPMedia_get_sourceURL(This,pbstrSourceURL) (This)->lpVtbl->get_sourceURL(This,pbstrSourceURL)
+#define IWMPMedia_get_name(This,pbstrName) (This)->lpVtbl->get_name(This,pbstrName)
+#define IWMPMedia_put_name(This,pbstrName) (This)->lpVtbl->put_name(This,pbstrName)
+#define IWMPMedia_get_imageSourceWidth(This,pWidth) (This)->lpVtbl->get_imageSourceWidth(This,pWidth)
+#define IWMPMedia_get_imageSourceHeight(This,pHeight) (This)->lpVtbl->get_imageSourceHeight(This,pHeight)
+#define IWMPMedia_get_markerCount(This,pMarkerCount) (This)->lpVtbl->get_markerCount(This,pMarkerCount)
+#define IWMPMedia_getMarkerTime(This,MarkerNum,pMarkerTime) (This)->lpVtbl->getMarkerTime(This,MarkerNum,pMarkerTime)
+#define IWMPMedia_getMarkerName(This,MarkerNum,pbstrMarkerName) (This)->lpVtbl->getMarkerName(This,MarkerNum,pbstrMarkerName)
+#define IWMPMedia_get_duration(This,pDuration) (This)->lpVtbl->get_duration(This,pDuration)
+#define IWMPMedia_get_durationString(This,pbstrDuration) (This)->lpVtbl->get_durationString(This,pbstrDuration)
+#define IWMPMedia_get_attributeCount(This,plCount) (This)->lpVtbl->get_attributeCount(This,plCount)
+#define IWMPMedia_getAttributeName(This,lIndex,pbstrItemName) (This)->lpVtbl->getAttributeName(This,lIndex,pbstrItemName)
+#define IWMPMedia_getItemInfo(This,bstrItemName,pbstrVal) (This)->lpVtbl->getItemInfo(This,bstrItemName,pbstrVal)
+#define IWMPMedia_setItemInfo(This,bstrItemName,bstrVal) (This)->lpVtbl->setItemInfo(This,bstrItemName,bstrVal)
+#define IWMPMedia_getItemInfoByAtom(This,lAtom,pbstrVal) (This)->lpVtbl->getItemInfoByAtom(This,lAtom,pbstrVal)
+#define IWMPMedia_isMemberOf(This,pPlaylist,pvarfIsMemberOf) (This)->lpVtbl->isMemberOf(This,pPlaylist,pvarfIsMemberOf)
+#define IWMPMedia_isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly) (This)->lpVtbl->isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPMedia_QueryInterface(IWMPMedia* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPMedia_AddRef(IWMPMedia* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPMedia_Release(IWMPMedia* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPMedia_GetTypeInfoCount(IWMPMedia* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPMedia_GetTypeInfo(IWMPMedia* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPMedia_GetIDsOfNames(IWMPMedia* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPMedia_Invoke(IWMPMedia* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPMedia methods ***/
+static FORCEINLINE HRESULT IWMPMedia_get_isIdentical(IWMPMedia* This,IWMPMedia *pIWMPMedia,VARIANT_BOOL *pvbool) {
+    return This->lpVtbl->get_isIdentical(This,pIWMPMedia,pvbool);
+}
+static FORCEINLINE HRESULT IWMPMedia_get_sourceURL(IWMPMedia* This,BSTR *pbstrSourceURL) {
+    return This->lpVtbl->get_sourceURL(This,pbstrSourceURL);
+}
+static FORCEINLINE HRESULT IWMPMedia_get_name(IWMPMedia* This,BSTR *pbstrName) {
+    return This->lpVtbl->get_name(This,pbstrName);
+}
+static FORCEINLINE HRESULT IWMPMedia_put_name(IWMPMedia* This,BSTR pbstrName) {
+    return This->lpVtbl->put_name(This,pbstrName);
+}
+static FORCEINLINE HRESULT IWMPMedia_get_imageSourceWidth(IWMPMedia* This,LONG *pWidth) {
+    return This->lpVtbl->get_imageSourceWidth(This,pWidth);
+}
+static FORCEINLINE HRESULT IWMPMedia_get_imageSourceHeight(IWMPMedia* This,LONG *pHeight) {
+    return This->lpVtbl->get_imageSourceHeight(This,pHeight);
+}
+static FORCEINLINE HRESULT IWMPMedia_get_markerCount(IWMPMedia* This,LONG *pMarkerCount) {
+    return This->lpVtbl->get_markerCount(This,pMarkerCount);
+}
+static FORCEINLINE HRESULT IWMPMedia_getMarkerTime(IWMPMedia* This,LONG MarkerNum,double *pMarkerTime) {
+    return This->lpVtbl->getMarkerTime(This,MarkerNum,pMarkerTime);
+}
+static FORCEINLINE HRESULT IWMPMedia_getMarkerName(IWMPMedia* This,LONG MarkerNum,BSTR *pbstrMarkerName) {
+    return This->lpVtbl->getMarkerName(This,MarkerNum,pbstrMarkerName);
+}
+static FORCEINLINE HRESULT IWMPMedia_get_duration(IWMPMedia* This,double *pDuration) {
+    return This->lpVtbl->get_duration(This,pDuration);
+}
+static FORCEINLINE HRESULT IWMPMedia_get_durationString(IWMPMedia* This,BSTR *pbstrDuration) {
+    return This->lpVtbl->get_durationString(This,pbstrDuration);
+}
+static FORCEINLINE HRESULT IWMPMedia_get_attributeCount(IWMPMedia* This,LONG *plCount) {
+    return This->lpVtbl->get_attributeCount(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPMedia_getAttributeName(IWMPMedia* This,LONG lIndex,BSTR *pbstrItemName) {
+    return This->lpVtbl->getAttributeName(This,lIndex,pbstrItemName);
+}
+static FORCEINLINE HRESULT IWMPMedia_getItemInfo(IWMPMedia* This,BSTR bstrItemName,BSTR *pbstrVal) {
+    return This->lpVtbl->getItemInfo(This,bstrItemName,pbstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia_setItemInfo(IWMPMedia* This,BSTR bstrItemName,BSTR bstrVal) {
+    return This->lpVtbl->setItemInfo(This,bstrItemName,bstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia_getItemInfoByAtom(IWMPMedia* This,LONG lAtom,BSTR *pbstrVal) {
+    return This->lpVtbl->getItemInfoByAtom(This,lAtom,pbstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia_isMemberOf(IWMPMedia* This,IWMPPlaylist *pPlaylist,VARIANT_BOOL *pvarfIsMemberOf) {
+    return This->lpVtbl->isMemberOf(This,pPlaylist,pvarfIsMemberOf);
+}
+static FORCEINLINE HRESULT IWMPMedia_isReadOnlyItem(IWMPMedia* This,BSTR bstrItemName,VARIANT_BOOL *pvarfIsReadOnly) {
+    return This->lpVtbl->isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPMedia_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPControls interface
+ */
+#ifndef __IWMPControls_INTERFACE_DEFINED__
+#define __IWMPControls_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPControls, 0x74c09e02, 0xf828, 0x11d2, 0xa7,0x4b, 0x00,0xa0,0xc9,0x05,0xf3,0x6e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("74c09e02-f828-11d2-a74b-00a0c905f36e")
+IWMPControls : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_isAvailable(
+        BSTR bstrItem,
+        VARIANT_BOOL *pIsAvailable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE play(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE stop(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE pause(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE fastForward(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE fastReverse(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_currentPosition(
+        double *pdCurrentPosition) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_currentPosition(
+        double pdCurrentPosition) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_currentPositionString(
+        BSTR *pbstrCurrentPosition) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE next(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE previous(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE currentItem(
+        IWMPMedia **ppIWMPMedia) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_currentItem(
+        IWMPMedia *ppIWMPMedia) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_currentMarker(
+        LONG *plMarker) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_currentMarker(
+        LONG plMarker) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE playItem(
+        IWMPMedia *pIWMPMedia) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPControls, 0x74c09e02, 0xf828, 0x11d2, 0xa7,0x4b, 0x00,0xa0,0xc9,0x05,0xf3,0x6e)
+#endif
+#else
+typedef struct IWMPControlsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPControls *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPControls *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPControls *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPControls *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPControls *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPControls *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPControls *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPControls methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_isAvailable)(
+        IWMPControls *This,
+        BSTR bstrItem,
+        VARIANT_BOOL *pIsAvailable);
+
+    HRESULT (STDMETHODCALLTYPE *play)(
+        IWMPControls *This);
+
+    HRESULT (STDMETHODCALLTYPE *stop)(
+        IWMPControls *This);
+
+    HRESULT (STDMETHODCALLTYPE *pause)(
+        IWMPControls *This);
+
+    HRESULT (STDMETHODCALLTYPE *fastForward)(
+        IWMPControls *This);
+
+    HRESULT (STDMETHODCALLTYPE *fastReverse)(
+        IWMPControls *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPosition)(
+        IWMPControls *This,
+        double *pdCurrentPosition);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentPosition)(
+        IWMPControls *This,
+        double pdCurrentPosition);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPositionString)(
+        IWMPControls *This,
+        BSTR *pbstrCurrentPosition);
+
+    HRESULT (STDMETHODCALLTYPE *next)(
+        IWMPControls *This);
+
+    HRESULT (STDMETHODCALLTYPE *previous)(
+        IWMPControls *This);
+
+    HRESULT (STDMETHODCALLTYPE *currentItem)(
+        IWMPControls *This,
+        IWMPMedia **ppIWMPMedia);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentItem)(
+        IWMPControls *This,
+        IWMPMedia *ppIWMPMedia);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentMarker)(
+        IWMPControls *This,
+        LONG *plMarker);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentMarker)(
+        IWMPControls *This,
+        LONG plMarker);
+
+    HRESULT (STDMETHODCALLTYPE *playItem)(
+        IWMPControls *This,
+        IWMPMedia *pIWMPMedia);
+
+    END_INTERFACE
+} IWMPControlsVtbl;
+
+interface IWMPControls {
+    CONST_VTBL IWMPControlsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPControls_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPControls_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPControls_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPControls_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPControls_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPControls_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPControls_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPControls methods ***/
+#define IWMPControls_get_isAvailable(This,bstrItem,pIsAvailable) (This)->lpVtbl->get_isAvailable(This,bstrItem,pIsAvailable)
+#define IWMPControls_play(This) (This)->lpVtbl->play(This)
+#define IWMPControls_stop(This) (This)->lpVtbl->stop(This)
+#define IWMPControls_pause(This) (This)->lpVtbl->pause(This)
+#define IWMPControls_fastForward(This) (This)->lpVtbl->fastForward(This)
+#define IWMPControls_fastReverse(This) (This)->lpVtbl->fastReverse(This)
+#define IWMPControls_get_currentPosition(This,pdCurrentPosition) (This)->lpVtbl->get_currentPosition(This,pdCurrentPosition)
+#define IWMPControls_put_currentPosition(This,pdCurrentPosition) (This)->lpVtbl->put_currentPosition(This,pdCurrentPosition)
+#define IWMPControls_get_currentPositionString(This,pbstrCurrentPosition) (This)->lpVtbl->get_currentPositionString(This,pbstrCurrentPosition)
+#define IWMPControls_next(This) (This)->lpVtbl->next(This)
+#define IWMPControls_previous(This) (This)->lpVtbl->previous(This)
+#define IWMPControls_currentItem(This,ppIWMPMedia) (This)->lpVtbl->currentItem(This,ppIWMPMedia)
+#define IWMPControls_put_currentItem(This,ppIWMPMedia) (This)->lpVtbl->put_currentItem(This,ppIWMPMedia)
+#define IWMPControls_get_currentMarker(This,plMarker) (This)->lpVtbl->get_currentMarker(This,plMarker)
+#define IWMPControls_put_currentMarker(This,plMarker) (This)->lpVtbl->put_currentMarker(This,plMarker)
+#define IWMPControls_playItem(This,pIWMPMedia) (This)->lpVtbl->playItem(This,pIWMPMedia)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPControls_QueryInterface(IWMPControls* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPControls_AddRef(IWMPControls* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPControls_Release(IWMPControls* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPControls_GetTypeInfoCount(IWMPControls* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPControls_GetTypeInfo(IWMPControls* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPControls_GetIDsOfNames(IWMPControls* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPControls_Invoke(IWMPControls* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPControls methods ***/
+static FORCEINLINE HRESULT IWMPControls_get_isAvailable(IWMPControls* This,BSTR bstrItem,VARIANT_BOOL *pIsAvailable) {
+    return This->lpVtbl->get_isAvailable(This,bstrItem,pIsAvailable);
+}
+static FORCEINLINE HRESULT IWMPControls_play(IWMPControls* This) {
+    return This->lpVtbl->play(This);
+}
+static FORCEINLINE HRESULT IWMPControls_stop(IWMPControls* This) {
+    return This->lpVtbl->stop(This);
+}
+static FORCEINLINE HRESULT IWMPControls_pause(IWMPControls* This) {
+    return This->lpVtbl->pause(This);
+}
+static FORCEINLINE HRESULT IWMPControls_fastForward(IWMPControls* This) {
+    return This->lpVtbl->fastForward(This);
+}
+static FORCEINLINE HRESULT IWMPControls_fastReverse(IWMPControls* This) {
+    return This->lpVtbl->fastReverse(This);
+}
+static FORCEINLINE HRESULT IWMPControls_get_currentPosition(IWMPControls* This,double *pdCurrentPosition) {
+    return This->lpVtbl->get_currentPosition(This,pdCurrentPosition);
+}
+static FORCEINLINE HRESULT IWMPControls_put_currentPosition(IWMPControls* This,double pdCurrentPosition) {
+    return This->lpVtbl->put_currentPosition(This,pdCurrentPosition);
+}
+static FORCEINLINE HRESULT IWMPControls_get_currentPositionString(IWMPControls* This,BSTR *pbstrCurrentPosition) {
+    return This->lpVtbl->get_currentPositionString(This,pbstrCurrentPosition);
+}
+static FORCEINLINE HRESULT IWMPControls_next(IWMPControls* This) {
+    return This->lpVtbl->next(This);
+}
+static FORCEINLINE HRESULT IWMPControls_previous(IWMPControls* This) {
+    return This->lpVtbl->previous(This);
+}
+static FORCEINLINE HRESULT IWMPControls_currentItem(IWMPControls* This,IWMPMedia **ppIWMPMedia) {
+    return This->lpVtbl->currentItem(This,ppIWMPMedia);
+}
+static FORCEINLINE HRESULT IWMPControls_put_currentItem(IWMPControls* This,IWMPMedia *ppIWMPMedia) {
+    return This->lpVtbl->put_currentItem(This,ppIWMPMedia);
+}
+static FORCEINLINE HRESULT IWMPControls_get_currentMarker(IWMPControls* This,LONG *plMarker) {
+    return This->lpVtbl->get_currentMarker(This,plMarker);
+}
+static FORCEINLINE HRESULT IWMPControls_put_currentMarker(IWMPControls* This,LONG plMarker) {
+    return This->lpVtbl->put_currentMarker(This,plMarker);
+}
+static FORCEINLINE HRESULT IWMPControls_playItem(IWMPControls* This,IWMPMedia *pIWMPMedia) {
+    return This->lpVtbl->playItem(This,pIWMPMedia);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPControls_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPControls2 interface
+ */
+#ifndef __IWMPControls2_INTERFACE_DEFINED__
+#define __IWMPControls2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPControls2, 0x6f030d25, 0x0890, 0x480f, 0x97,0x75, 0x1f,0x7e,0x40,0xab,0x5b,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6f030d25-0890-480f-9775-1f7e40ab5b8e")
+IWMPControls2 : public IWMPControls
+{
+    virtual HRESULT STDMETHODCALLTYPE step(
+        LONG lStep) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPControls2, 0x6f030d25, 0x0890, 0x480f, 0x97,0x75, 0x1f,0x7e,0x40,0xab,0x5b,0x8e)
+#endif
+#else
+typedef struct IWMPControls2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPControls2 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPControls2 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPControls2 *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPControls2 *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPControls2 *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPControls2 *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPControls2 *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPControls methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_isAvailable)(
+        IWMPControls2 *This,
+        BSTR bstrItem,
+        VARIANT_BOOL *pIsAvailable);
+
+    HRESULT (STDMETHODCALLTYPE *play)(
+        IWMPControls2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *stop)(
+        IWMPControls2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *pause)(
+        IWMPControls2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *fastForward)(
+        IWMPControls2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *fastReverse)(
+        IWMPControls2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPosition)(
+        IWMPControls2 *This,
+        double *pdCurrentPosition);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentPosition)(
+        IWMPControls2 *This,
+        double pdCurrentPosition);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPositionString)(
+        IWMPControls2 *This,
+        BSTR *pbstrCurrentPosition);
+
+    HRESULT (STDMETHODCALLTYPE *next)(
+        IWMPControls2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *previous)(
+        IWMPControls2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *currentItem)(
+        IWMPControls2 *This,
+        IWMPMedia **ppIWMPMedia);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentItem)(
+        IWMPControls2 *This,
+        IWMPMedia *ppIWMPMedia);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentMarker)(
+        IWMPControls2 *This,
+        LONG *plMarker);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentMarker)(
+        IWMPControls2 *This,
+        LONG plMarker);
+
+    HRESULT (STDMETHODCALLTYPE *playItem)(
+        IWMPControls2 *This,
+        IWMPMedia *pIWMPMedia);
+
+    /*** IWMPControls2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *step)(
+        IWMPControls2 *This,
+        LONG lStep);
+
+    END_INTERFACE
+} IWMPControls2Vtbl;
+
+interface IWMPControls2 {
+    CONST_VTBL IWMPControls2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPControls2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPControls2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPControls2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPControls2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPControls2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPControls2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPControls2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPControls methods ***/
+#define IWMPControls2_get_isAvailable(This,bstrItem,pIsAvailable) (This)->lpVtbl->get_isAvailable(This,bstrItem,pIsAvailable)
+#define IWMPControls2_play(This) (This)->lpVtbl->play(This)
+#define IWMPControls2_stop(This) (This)->lpVtbl->stop(This)
+#define IWMPControls2_pause(This) (This)->lpVtbl->pause(This)
+#define IWMPControls2_fastForward(This) (This)->lpVtbl->fastForward(This)
+#define IWMPControls2_fastReverse(This) (This)->lpVtbl->fastReverse(This)
+#define IWMPControls2_get_currentPosition(This,pdCurrentPosition) (This)->lpVtbl->get_currentPosition(This,pdCurrentPosition)
+#define IWMPControls2_put_currentPosition(This,pdCurrentPosition) (This)->lpVtbl->put_currentPosition(This,pdCurrentPosition)
+#define IWMPControls2_get_currentPositionString(This,pbstrCurrentPosition) (This)->lpVtbl->get_currentPositionString(This,pbstrCurrentPosition)
+#define IWMPControls2_next(This) (This)->lpVtbl->next(This)
+#define IWMPControls2_previous(This) (This)->lpVtbl->previous(This)
+#define IWMPControls2_currentItem(This,ppIWMPMedia) (This)->lpVtbl->currentItem(This,ppIWMPMedia)
+#define IWMPControls2_put_currentItem(This,ppIWMPMedia) (This)->lpVtbl->put_currentItem(This,ppIWMPMedia)
+#define IWMPControls2_get_currentMarker(This,plMarker) (This)->lpVtbl->get_currentMarker(This,plMarker)
+#define IWMPControls2_put_currentMarker(This,plMarker) (This)->lpVtbl->put_currentMarker(This,plMarker)
+#define IWMPControls2_playItem(This,pIWMPMedia) (This)->lpVtbl->playItem(This,pIWMPMedia)
+/*** IWMPControls2 methods ***/
+#define IWMPControls2_step(This,lStep) (This)->lpVtbl->step(This,lStep)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPControls2_QueryInterface(IWMPControls2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPControls2_AddRef(IWMPControls2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPControls2_Release(IWMPControls2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPControls2_GetTypeInfoCount(IWMPControls2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPControls2_GetTypeInfo(IWMPControls2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPControls2_GetIDsOfNames(IWMPControls2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPControls2_Invoke(IWMPControls2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPControls methods ***/
+static FORCEINLINE HRESULT IWMPControls2_get_isAvailable(IWMPControls2* This,BSTR bstrItem,VARIANT_BOOL *pIsAvailable) {
+    return This->lpVtbl->get_isAvailable(This,bstrItem,pIsAvailable);
+}
+static FORCEINLINE HRESULT IWMPControls2_play(IWMPControls2* This) {
+    return This->lpVtbl->play(This);
+}
+static FORCEINLINE HRESULT IWMPControls2_stop(IWMPControls2* This) {
+    return This->lpVtbl->stop(This);
+}
+static FORCEINLINE HRESULT IWMPControls2_pause(IWMPControls2* This) {
+    return This->lpVtbl->pause(This);
+}
+static FORCEINLINE HRESULT IWMPControls2_fastForward(IWMPControls2* This) {
+    return This->lpVtbl->fastForward(This);
+}
+static FORCEINLINE HRESULT IWMPControls2_fastReverse(IWMPControls2* This) {
+    return This->lpVtbl->fastReverse(This);
+}
+static FORCEINLINE HRESULT IWMPControls2_get_currentPosition(IWMPControls2* This,double *pdCurrentPosition) {
+    return This->lpVtbl->get_currentPosition(This,pdCurrentPosition);
+}
+static FORCEINLINE HRESULT IWMPControls2_put_currentPosition(IWMPControls2* This,double pdCurrentPosition) {
+    return This->lpVtbl->put_currentPosition(This,pdCurrentPosition);
+}
+static FORCEINLINE HRESULT IWMPControls2_get_currentPositionString(IWMPControls2* This,BSTR *pbstrCurrentPosition) {
+    return This->lpVtbl->get_currentPositionString(This,pbstrCurrentPosition);
+}
+static FORCEINLINE HRESULT IWMPControls2_next(IWMPControls2* This) {
+    return This->lpVtbl->next(This);
+}
+static FORCEINLINE HRESULT IWMPControls2_previous(IWMPControls2* This) {
+    return This->lpVtbl->previous(This);
+}
+static FORCEINLINE HRESULT IWMPControls2_currentItem(IWMPControls2* This,IWMPMedia **ppIWMPMedia) {
+    return This->lpVtbl->currentItem(This,ppIWMPMedia);
+}
+static FORCEINLINE HRESULT IWMPControls2_put_currentItem(IWMPControls2* This,IWMPMedia *ppIWMPMedia) {
+    return This->lpVtbl->put_currentItem(This,ppIWMPMedia);
+}
+static FORCEINLINE HRESULT IWMPControls2_get_currentMarker(IWMPControls2* This,LONG *plMarker) {
+    return This->lpVtbl->get_currentMarker(This,plMarker);
+}
+static FORCEINLINE HRESULT IWMPControls2_put_currentMarker(IWMPControls2* This,LONG plMarker) {
+    return This->lpVtbl->put_currentMarker(This,plMarker);
+}
+static FORCEINLINE HRESULT IWMPControls2_playItem(IWMPControls2* This,IWMPMedia *pIWMPMedia) {
+    return This->lpVtbl->playItem(This,pIWMPMedia);
+}
+/*** IWMPControls2 methods ***/
+static FORCEINLINE HRESULT IWMPControls2_step(IWMPControls2* This,LONG lStep) {
+    return This->lpVtbl->step(This,lStep);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPControls2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPRemoteMediaServices interface
+ */
+#ifndef __IWMPRemoteMediaServices_INTERFACE_DEFINED__
+#define __IWMPRemoteMediaServices_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPRemoteMediaServices, 0xcbb92747, 0x741f, 0x44fe, 0xab,0x5b, 0xf1,0xa4,0x8f,0x3b,0x2a,0x59);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("cbb92747-741f-44fe-ab5b-f1a48f3b2a59")
+IWMPRemoteMediaServices : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetServiceType(
+        BSTR *type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetApplicationName(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetScriptableObject(
+        BSTR *name,
+        IDispatch **out) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCustomUIMode(
+        BSTR *file) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPRemoteMediaServices, 0xcbb92747, 0x741f, 0x44fe, 0xab,0x5b, 0xf1,0xa4,0x8f,0x3b,0x2a,0x59)
+#endif
+#else
+typedef struct IWMPRemoteMediaServicesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPRemoteMediaServices *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPRemoteMediaServices *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPRemoteMediaServices *This);
+
+    /*** IWMPRemoteMediaServices methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetServiceType)(
+        IWMPRemoteMediaServices *This,
+        BSTR *type);
+
+    HRESULT (STDMETHODCALLTYPE *GetApplicationName)(
+        IWMPRemoteMediaServices *This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *GetScriptableObject)(
+        IWMPRemoteMediaServices *This,
+        BSTR *name,
+        IDispatch **out);
+
+    HRESULT (STDMETHODCALLTYPE *GetCustomUIMode)(
+        IWMPRemoteMediaServices *This,
+        BSTR *file);
+
+    END_INTERFACE
+} IWMPRemoteMediaServicesVtbl;
+
+interface IWMPRemoteMediaServices {
+    CONST_VTBL IWMPRemoteMediaServicesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPRemoteMediaServices_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPRemoteMediaServices_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPRemoteMediaServices_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPRemoteMediaServices methods ***/
+#define IWMPRemoteMediaServices_GetServiceType(This,type) (This)->lpVtbl->GetServiceType(This,type)
+#define IWMPRemoteMediaServices_GetApplicationName(This,name) (This)->lpVtbl->GetApplicationName(This,name)
+#define IWMPRemoteMediaServices_GetScriptableObject(This,name,out) (This)->lpVtbl->GetScriptableObject(This,name,out)
+#define IWMPRemoteMediaServices_GetCustomUIMode(This,file) (This)->lpVtbl->GetCustomUIMode(This,file)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPRemoteMediaServices_QueryInterface(IWMPRemoteMediaServices* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPRemoteMediaServices_AddRef(IWMPRemoteMediaServices* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPRemoteMediaServices_Release(IWMPRemoteMediaServices* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPRemoteMediaServices methods ***/
+static FORCEINLINE HRESULT IWMPRemoteMediaServices_GetServiceType(IWMPRemoteMediaServices* This,BSTR *type) {
+    return This->lpVtbl->GetServiceType(This,type);
+}
+static FORCEINLINE HRESULT IWMPRemoteMediaServices_GetApplicationName(IWMPRemoteMediaServices* This,BSTR *name) {
+    return This->lpVtbl->GetApplicationName(This,name);
+}
+static FORCEINLINE HRESULT IWMPRemoteMediaServices_GetScriptableObject(IWMPRemoteMediaServices* This,BSTR *name,IDispatch **out) {
+    return This->lpVtbl->GetScriptableObject(This,name,out);
+}
+static FORCEINLINE HRESULT IWMPRemoteMediaServices_GetCustomUIMode(IWMPRemoteMediaServices* This,BSTR *file) {
+    return This->lpVtbl->GetCustomUIMode(This,file);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPRemoteMediaServices_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPSettings interface
+ */
+#ifndef __IWMPSettings_INTERFACE_DEFINED__
+#define __IWMPSettings_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPSettings, 0x9104d1ab, 0x80c9, 0x4fed, 0xab,0xf0, 0x2e,0x64,0x17,0xa6,0xdf,0x14);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9104d1ab-80c9-4fed-abf0-2e6417a6df14")
+IWMPSettings : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_isAvailable(
+        BSTR bstrItem,
+        VARIANT_BOOL *pIsAvailable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_autoStart(
+        VARIANT_BOOL *pfAutoStart) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_autoStart(
+        VARIANT_BOOL pfAutoStart) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_baseURL(
+        BSTR *pbstrBaseURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_baseURL(
+        BSTR pbstrBaseURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_defaultFrame(
+        BSTR *pbstrDefaultFrame) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_defaultFrame(
+        BSTR pbstrDefaultFrame) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_invokeURLs(
+        VARIANT_BOOL *pfInvokeURLs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_invokeURLs(
+        VARIANT_BOOL pfInvokeURLs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_mute(
+        VARIANT_BOOL *pfMute) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_mute(
+        VARIANT_BOOL pfMute) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_playCount(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_playCount(
+        LONG plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_rate(
+        double *pdRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_rate(
+        double pdRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_balance(
+        LONG *plBalance) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_balance(
+        LONG plBalance) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_volume(
+        LONG *plVolume) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_volume(
+        LONG plVolume) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getMode(
+        BSTR bstrMode,
+        VARIANT_BOOL *pvarfMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setMode(
+        BSTR bstrMode,
+        VARIANT_BOOL varfMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_enableErrorDialogs(
+        VARIANT_BOOL *pfEnableErrorDialogs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_enableErrorDialogs(
+        VARIANT_BOOL pfEnableErrorDialogs) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPSettings, 0x9104d1ab, 0x80c9, 0x4fed, 0xab,0xf0, 0x2e,0x64,0x17,0xa6,0xdf,0x14)
+#endif
+#else
+typedef struct IWMPSettingsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPSettings *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPSettings *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPSettings *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPSettings *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPSettings *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPSettings *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPSettings *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPSettings methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_isAvailable)(
+        IWMPSettings *This,
+        BSTR bstrItem,
+        VARIANT_BOOL *pIsAvailable);
+
+    HRESULT (STDMETHODCALLTYPE *get_autoStart)(
+        IWMPSettings *This,
+        VARIANT_BOOL *pfAutoStart);
+
+    HRESULT (STDMETHODCALLTYPE *put_autoStart)(
+        IWMPSettings *This,
+        VARIANT_BOOL pfAutoStart);
+
+    HRESULT (STDMETHODCALLTYPE *get_baseURL)(
+        IWMPSettings *This,
+        BSTR *pbstrBaseURL);
+
+    HRESULT (STDMETHODCALLTYPE *put_baseURL)(
+        IWMPSettings *This,
+        BSTR pbstrBaseURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_defaultFrame)(
+        IWMPSettings *This,
+        BSTR *pbstrDefaultFrame);
+
+    HRESULT (STDMETHODCALLTYPE *put_defaultFrame)(
+        IWMPSettings *This,
+        BSTR pbstrDefaultFrame);
+
+    HRESULT (STDMETHODCALLTYPE *get_invokeURLs)(
+        IWMPSettings *This,
+        VARIANT_BOOL *pfInvokeURLs);
+
+    HRESULT (STDMETHODCALLTYPE *put_invokeURLs)(
+        IWMPSettings *This,
+        VARIANT_BOOL pfInvokeURLs);
+
+    HRESULT (STDMETHODCALLTYPE *get_mute)(
+        IWMPSettings *This,
+        VARIANT_BOOL *pfMute);
+
+    HRESULT (STDMETHODCALLTYPE *put_mute)(
+        IWMPSettings *This,
+        VARIANT_BOOL pfMute);
+
+    HRESULT (STDMETHODCALLTYPE *get_playCount)(
+        IWMPSettings *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *put_playCount)(
+        IWMPSettings *This,
+        LONG plCount);
+
+    HRESULT (STDMETHODCALLTYPE *get_rate)(
+        IWMPSettings *This,
+        double *pdRate);
+
+    HRESULT (STDMETHODCALLTYPE *put_rate)(
+        IWMPSettings *This,
+        double pdRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_balance)(
+        IWMPSettings *This,
+        LONG *plBalance);
+
+    HRESULT (STDMETHODCALLTYPE *put_balance)(
+        IWMPSettings *This,
+        LONG plBalance);
+
+    HRESULT (STDMETHODCALLTYPE *get_volume)(
+        IWMPSettings *This,
+        LONG *plVolume);
+
+    HRESULT (STDMETHODCALLTYPE *put_volume)(
+        IWMPSettings *This,
+        LONG plVolume);
+
+    HRESULT (STDMETHODCALLTYPE *getMode)(
+        IWMPSettings *This,
+        BSTR bstrMode,
+        VARIANT_BOOL *pvarfMode);
+
+    HRESULT (STDMETHODCALLTYPE *setMode)(
+        IWMPSettings *This,
+        BSTR bstrMode,
+        VARIANT_BOOL varfMode);
+
+    HRESULT (STDMETHODCALLTYPE *get_enableErrorDialogs)(
+        IWMPSettings *This,
+        VARIANT_BOOL *pfEnableErrorDialogs);
+
+    HRESULT (STDMETHODCALLTYPE *put_enableErrorDialogs)(
+        IWMPSettings *This,
+        VARIANT_BOOL pfEnableErrorDialogs);
+
+    END_INTERFACE
+} IWMPSettingsVtbl;
+
+interface IWMPSettings {
+    CONST_VTBL IWMPSettingsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPSettings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPSettings_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPSettings_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPSettings_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPSettings methods ***/
+#define IWMPSettings_get_isAvailable(This,bstrItem,pIsAvailable) (This)->lpVtbl->get_isAvailable(This,bstrItem,pIsAvailable)
+#define IWMPSettings_get_autoStart(This,pfAutoStart) (This)->lpVtbl->get_autoStart(This,pfAutoStart)
+#define IWMPSettings_put_autoStart(This,pfAutoStart) (This)->lpVtbl->put_autoStart(This,pfAutoStart)
+#define IWMPSettings_get_baseURL(This,pbstrBaseURL) (This)->lpVtbl->get_baseURL(This,pbstrBaseURL)
+#define IWMPSettings_put_baseURL(This,pbstrBaseURL) (This)->lpVtbl->put_baseURL(This,pbstrBaseURL)
+#define IWMPSettings_get_defaultFrame(This,pbstrDefaultFrame) (This)->lpVtbl->get_defaultFrame(This,pbstrDefaultFrame)
+#define IWMPSettings_put_defaultFrame(This,pbstrDefaultFrame) (This)->lpVtbl->put_defaultFrame(This,pbstrDefaultFrame)
+#define IWMPSettings_get_invokeURLs(This,pfInvokeURLs) (This)->lpVtbl->get_invokeURLs(This,pfInvokeURLs)
+#define IWMPSettings_put_invokeURLs(This,pfInvokeURLs) (This)->lpVtbl->put_invokeURLs(This,pfInvokeURLs)
+#define IWMPSettings_get_mute(This,pfMute) (This)->lpVtbl->get_mute(This,pfMute)
+#define IWMPSettings_put_mute(This,pfMute) (This)->lpVtbl->put_mute(This,pfMute)
+#define IWMPSettings_get_playCount(This,plCount) (This)->lpVtbl->get_playCount(This,plCount)
+#define IWMPSettings_put_playCount(This,plCount) (This)->lpVtbl->put_playCount(This,plCount)
+#define IWMPSettings_get_rate(This,pdRate) (This)->lpVtbl->get_rate(This,pdRate)
+#define IWMPSettings_put_rate(This,pdRate) (This)->lpVtbl->put_rate(This,pdRate)
+#define IWMPSettings_get_balance(This,plBalance) (This)->lpVtbl->get_balance(This,plBalance)
+#define IWMPSettings_put_balance(This,plBalance) (This)->lpVtbl->put_balance(This,plBalance)
+#define IWMPSettings_get_volume(This,plVolume) (This)->lpVtbl->get_volume(This,plVolume)
+#define IWMPSettings_put_volume(This,plVolume) (This)->lpVtbl->put_volume(This,plVolume)
+#define IWMPSettings_getMode(This,bstrMode,pvarfMode) (This)->lpVtbl->getMode(This,bstrMode,pvarfMode)
+#define IWMPSettings_setMode(This,bstrMode,varfMode) (This)->lpVtbl->setMode(This,bstrMode,varfMode)
+#define IWMPSettings_get_enableErrorDialogs(This,pfEnableErrorDialogs) (This)->lpVtbl->get_enableErrorDialogs(This,pfEnableErrorDialogs)
+#define IWMPSettings_put_enableErrorDialogs(This,pfEnableErrorDialogs) (This)->lpVtbl->put_enableErrorDialogs(This,pfEnableErrorDialogs)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPSettings_QueryInterface(IWMPSettings* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPSettings_AddRef(IWMPSettings* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPSettings_Release(IWMPSettings* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPSettings_GetTypeInfoCount(IWMPSettings* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPSettings_GetTypeInfo(IWMPSettings* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPSettings_GetIDsOfNames(IWMPSettings* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPSettings_Invoke(IWMPSettings* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPSettings methods ***/
+static FORCEINLINE HRESULT IWMPSettings_get_isAvailable(IWMPSettings* This,BSTR bstrItem,VARIANT_BOOL *pIsAvailable) {
+    return This->lpVtbl->get_isAvailable(This,bstrItem,pIsAvailable);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_autoStart(IWMPSettings* This,VARIANT_BOOL *pfAutoStart) {
+    return This->lpVtbl->get_autoStart(This,pfAutoStart);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_autoStart(IWMPSettings* This,VARIANT_BOOL pfAutoStart) {
+    return This->lpVtbl->put_autoStart(This,pfAutoStart);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_baseURL(IWMPSettings* This,BSTR *pbstrBaseURL) {
+    return This->lpVtbl->get_baseURL(This,pbstrBaseURL);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_baseURL(IWMPSettings* This,BSTR pbstrBaseURL) {
+    return This->lpVtbl->put_baseURL(This,pbstrBaseURL);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_defaultFrame(IWMPSettings* This,BSTR *pbstrDefaultFrame) {
+    return This->lpVtbl->get_defaultFrame(This,pbstrDefaultFrame);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_defaultFrame(IWMPSettings* This,BSTR pbstrDefaultFrame) {
+    return This->lpVtbl->put_defaultFrame(This,pbstrDefaultFrame);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_invokeURLs(IWMPSettings* This,VARIANT_BOOL *pfInvokeURLs) {
+    return This->lpVtbl->get_invokeURLs(This,pfInvokeURLs);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_invokeURLs(IWMPSettings* This,VARIANT_BOOL pfInvokeURLs) {
+    return This->lpVtbl->put_invokeURLs(This,pfInvokeURLs);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_mute(IWMPSettings* This,VARIANT_BOOL *pfMute) {
+    return This->lpVtbl->get_mute(This,pfMute);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_mute(IWMPSettings* This,VARIANT_BOOL pfMute) {
+    return This->lpVtbl->put_mute(This,pfMute);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_playCount(IWMPSettings* This,LONG *plCount) {
+    return This->lpVtbl->get_playCount(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_playCount(IWMPSettings* This,LONG plCount) {
+    return This->lpVtbl->put_playCount(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_rate(IWMPSettings* This,double *pdRate) {
+    return This->lpVtbl->get_rate(This,pdRate);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_rate(IWMPSettings* This,double pdRate) {
+    return This->lpVtbl->put_rate(This,pdRate);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_balance(IWMPSettings* This,LONG *plBalance) {
+    return This->lpVtbl->get_balance(This,plBalance);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_balance(IWMPSettings* This,LONG plBalance) {
+    return This->lpVtbl->put_balance(This,plBalance);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_volume(IWMPSettings* This,LONG *plVolume) {
+    return This->lpVtbl->get_volume(This,plVolume);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_volume(IWMPSettings* This,LONG plVolume) {
+    return This->lpVtbl->put_volume(This,plVolume);
+}
+static FORCEINLINE HRESULT IWMPSettings_getMode(IWMPSettings* This,BSTR bstrMode,VARIANT_BOOL *pvarfMode) {
+    return This->lpVtbl->getMode(This,bstrMode,pvarfMode);
+}
+static FORCEINLINE HRESULT IWMPSettings_setMode(IWMPSettings* This,BSTR bstrMode,VARIANT_BOOL varfMode) {
+    return This->lpVtbl->setMode(This,bstrMode,varfMode);
+}
+static FORCEINLINE HRESULT IWMPSettings_get_enableErrorDialogs(IWMPSettings* This,VARIANT_BOOL *pfEnableErrorDialogs) {
+    return This->lpVtbl->get_enableErrorDialogs(This,pfEnableErrorDialogs);
+}
+static FORCEINLINE HRESULT IWMPSettings_put_enableErrorDialogs(IWMPSettings* This,VARIANT_BOOL pfEnableErrorDialogs) {
+    return This->lpVtbl->put_enableErrorDialogs(This,pfEnableErrorDialogs);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPSettings_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPStringCollection interface
+ */
+#ifndef __IWMPStringCollection_INTERFACE_DEFINED__
+#define __IWMPStringCollection_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPStringCollection, 0x4a976298, 0x8c0d, 0x11d3, 0xb3,0x89, 0x00,0xc0,0x4f,0x68,0x57,0x4b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("4a976298-8c0d-11d3-b389-00c04f68574b")
+IWMPStringCollection : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_count(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG lIndex,
+        BSTR *pbstrString) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPStringCollection, 0x4a976298, 0x8c0d, 0x11d3, 0xb3,0x89, 0x00,0xc0,0x4f,0x68,0x57,0x4b)
+#endif
+#else
+typedef struct IWMPStringCollectionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPStringCollection *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPStringCollection *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPStringCollection *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPStringCollection *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPStringCollection *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPStringCollection *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPStringCollection *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPStringCollection methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_count)(
+        IWMPStringCollection *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IWMPStringCollection *This,
+        LONG lIndex,
+        BSTR *pbstrString);
+
+    END_INTERFACE
+} IWMPStringCollectionVtbl;
+
+interface IWMPStringCollection {
+    CONST_VTBL IWMPStringCollectionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPStringCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPStringCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPStringCollection_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPStringCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPStringCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPStringCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPStringCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPStringCollection methods ***/
+#define IWMPStringCollection_get_count(This,plCount) (This)->lpVtbl->get_count(This,plCount)
+#define IWMPStringCollection_Item(This,lIndex,pbstrString) (This)->lpVtbl->Item(This,lIndex,pbstrString)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPStringCollection_QueryInterface(IWMPStringCollection* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPStringCollection_AddRef(IWMPStringCollection* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPStringCollection_Release(IWMPStringCollection* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPStringCollection_GetTypeInfoCount(IWMPStringCollection* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPStringCollection_GetTypeInfo(IWMPStringCollection* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPStringCollection_GetIDsOfNames(IWMPStringCollection* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPStringCollection_Invoke(IWMPStringCollection* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPStringCollection methods ***/
+static FORCEINLINE HRESULT IWMPStringCollection_get_count(IWMPStringCollection* This,LONG *plCount) {
+    return This->lpVtbl->get_count(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPStringCollection_Item(IWMPStringCollection* This,LONG lIndex,BSTR *pbstrString) {
+    return This->lpVtbl->Item(This,lIndex,pbstrString);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPStringCollection_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPMediaCollection interface
+ */
+#ifndef __IWMPMediaCollection_INTERFACE_DEFINED__
+#define __IWMPMediaCollection_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPMediaCollection, 0x8363bc22, 0xb4b4, 0x4b19, 0x98,0x9d, 0x1c,0xd7,0x65,0x74,0x9d,0xd1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8363bc22-b4b4-4b19-989d-1cd765749dd1")
+IWMPMediaCollection : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE add(
+        BSTR bstrURL,
+        IWMPMedia **ppItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getAll(
+        IWMPPlaylist **ppMediaItems) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getByName(
+        BSTR bstrName,
+        IWMPPlaylist **ppMediaItems) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getByGenre(
+        BSTR bstrGenre,
+        IWMPPlaylist **ppMediaItems) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getByAuthor(
+        BSTR bstrAuthor,
+        IWMPPlaylist **ppMediaItems) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getByAlbum(
+        BSTR bstrAlbum,
+        IWMPPlaylist **ppMediaItems) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getByAttribute(
+        BSTR bstrAttribute,
+        BSTR bstrValue,
+        IWMPPlaylist **ppMediaItems) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE remove(
+        IWMPMedia *pItem,
+        VARIANT_BOOL varfDeleteFile) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getAttributeStringCollection(
+        BSTR bstrAttribute,
+        BSTR bstrMediaType,
+        IWMPStringCollection **ppStringCollection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getMediaAtom(
+        BSTR bstrItemName,
+        LONG *plAtom) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setDeleted(
+        IWMPMedia *pItem,
+        VARIANT_BOOL varfIsDeleted) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE isDeleted(
+        IWMPMedia *pItem,
+        VARIANT_BOOL *pvarfIsDeleted) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPMediaCollection, 0x8363bc22, 0xb4b4, 0x4b19, 0x98,0x9d, 0x1c,0xd7,0x65,0x74,0x9d,0xd1)
+#endif
+#else
+typedef struct IWMPMediaCollectionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPMediaCollection *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPMediaCollection *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPMediaCollection *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPMediaCollection *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPMediaCollection *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPMediaCollection *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPMediaCollection *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPMediaCollection methods ***/
+    HRESULT (STDMETHODCALLTYPE *add)(
+        IWMPMediaCollection *This,
+        BSTR bstrURL,
+        IWMPMedia **ppItem);
+
+    HRESULT (STDMETHODCALLTYPE *getAll)(
+        IWMPMediaCollection *This,
+        IWMPPlaylist **ppMediaItems);
+
+    HRESULT (STDMETHODCALLTYPE *getByName)(
+        IWMPMediaCollection *This,
+        BSTR bstrName,
+        IWMPPlaylist **ppMediaItems);
+
+    HRESULT (STDMETHODCALLTYPE *getByGenre)(
+        IWMPMediaCollection *This,
+        BSTR bstrGenre,
+        IWMPPlaylist **ppMediaItems);
+
+    HRESULT (STDMETHODCALLTYPE *getByAuthor)(
+        IWMPMediaCollection *This,
+        BSTR bstrAuthor,
+        IWMPPlaylist **ppMediaItems);
+
+    HRESULT (STDMETHODCALLTYPE *getByAlbum)(
+        IWMPMediaCollection *This,
+        BSTR bstrAlbum,
+        IWMPPlaylist **ppMediaItems);
+
+    HRESULT (STDMETHODCALLTYPE *getByAttribute)(
+        IWMPMediaCollection *This,
+        BSTR bstrAttribute,
+        BSTR bstrValue,
+        IWMPPlaylist **ppMediaItems);
+
+    HRESULT (STDMETHODCALLTYPE *remove)(
+        IWMPMediaCollection *This,
+        IWMPMedia *pItem,
+        VARIANT_BOOL varfDeleteFile);
+
+    HRESULT (STDMETHODCALLTYPE *getAttributeStringCollection)(
+        IWMPMediaCollection *This,
+        BSTR bstrAttribute,
+        BSTR bstrMediaType,
+        IWMPStringCollection **ppStringCollection);
+
+    HRESULT (STDMETHODCALLTYPE *getMediaAtom)(
+        IWMPMediaCollection *This,
+        BSTR bstrItemName,
+        LONG *plAtom);
+
+    HRESULT (STDMETHODCALLTYPE *setDeleted)(
+        IWMPMediaCollection *This,
+        IWMPMedia *pItem,
+        VARIANT_BOOL varfIsDeleted);
+
+    HRESULT (STDMETHODCALLTYPE *isDeleted)(
+        IWMPMediaCollection *This,
+        IWMPMedia *pItem,
+        VARIANT_BOOL *pvarfIsDeleted);
+
+    END_INTERFACE
+} IWMPMediaCollectionVtbl;
+
+interface IWMPMediaCollection {
+    CONST_VTBL IWMPMediaCollectionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPMediaCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPMediaCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPMediaCollection_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPMediaCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPMediaCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPMediaCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPMediaCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPMediaCollection methods ***/
+#define IWMPMediaCollection_add(This,bstrURL,ppItem) (This)->lpVtbl->add(This,bstrURL,ppItem)
+#define IWMPMediaCollection_getAll(This,ppMediaItems) (This)->lpVtbl->getAll(This,ppMediaItems)
+#define IWMPMediaCollection_getByName(This,bstrName,ppMediaItems) (This)->lpVtbl->getByName(This,bstrName,ppMediaItems)
+#define IWMPMediaCollection_getByGenre(This,bstrGenre,ppMediaItems) (This)->lpVtbl->getByGenre(This,bstrGenre,ppMediaItems)
+#define IWMPMediaCollection_getByAuthor(This,bstrAuthor,ppMediaItems) (This)->lpVtbl->getByAuthor(This,bstrAuthor,ppMediaItems)
+#define IWMPMediaCollection_getByAlbum(This,bstrAlbum,ppMediaItems) (This)->lpVtbl->getByAlbum(This,bstrAlbum,ppMediaItems)
+#define IWMPMediaCollection_getByAttribute(This,bstrAttribute,bstrValue,ppMediaItems) (This)->lpVtbl->getByAttribute(This,bstrAttribute,bstrValue,ppMediaItems)
+#define IWMPMediaCollection_remove(This,pItem,varfDeleteFile) (This)->lpVtbl->remove(This,pItem,varfDeleteFile)
+#define IWMPMediaCollection_getAttributeStringCollection(This,bstrAttribute,bstrMediaType,ppStringCollection) (This)->lpVtbl->getAttributeStringCollection(This,bstrAttribute,bstrMediaType,ppStringCollection)
+#define IWMPMediaCollection_getMediaAtom(This,bstrItemName,plAtom) (This)->lpVtbl->getMediaAtom(This,bstrItemName,plAtom)
+#define IWMPMediaCollection_setDeleted(This,pItem,varfIsDeleted) (This)->lpVtbl->setDeleted(This,pItem,varfIsDeleted)
+#define IWMPMediaCollection_isDeleted(This,pItem,pvarfIsDeleted) (This)->lpVtbl->isDeleted(This,pItem,pvarfIsDeleted)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPMediaCollection_QueryInterface(IWMPMediaCollection* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPMediaCollection_AddRef(IWMPMediaCollection* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPMediaCollection_Release(IWMPMediaCollection* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPMediaCollection_GetTypeInfoCount(IWMPMediaCollection* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_GetTypeInfo(IWMPMediaCollection* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_GetIDsOfNames(IWMPMediaCollection* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_Invoke(IWMPMediaCollection* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPMediaCollection methods ***/
+static FORCEINLINE HRESULT IWMPMediaCollection_add(IWMPMediaCollection* This,BSTR bstrURL,IWMPMedia **ppItem) {
+    return This->lpVtbl->add(This,bstrURL,ppItem);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_getAll(IWMPMediaCollection* This,IWMPPlaylist **ppMediaItems) {
+    return This->lpVtbl->getAll(This,ppMediaItems);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_getByName(IWMPMediaCollection* This,BSTR bstrName,IWMPPlaylist **ppMediaItems) {
+    return This->lpVtbl->getByName(This,bstrName,ppMediaItems);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_getByGenre(IWMPMediaCollection* This,BSTR bstrGenre,IWMPPlaylist **ppMediaItems) {
+    return This->lpVtbl->getByGenre(This,bstrGenre,ppMediaItems);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_getByAuthor(IWMPMediaCollection* This,BSTR bstrAuthor,IWMPPlaylist **ppMediaItems) {
+    return This->lpVtbl->getByAuthor(This,bstrAuthor,ppMediaItems);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_getByAlbum(IWMPMediaCollection* This,BSTR bstrAlbum,IWMPPlaylist **ppMediaItems) {
+    return This->lpVtbl->getByAlbum(This,bstrAlbum,ppMediaItems);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_getByAttribute(IWMPMediaCollection* This,BSTR bstrAttribute,BSTR bstrValue,IWMPPlaylist **ppMediaItems) {
+    return This->lpVtbl->getByAttribute(This,bstrAttribute,bstrValue,ppMediaItems);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_remove(IWMPMediaCollection* This,IWMPMedia *pItem,VARIANT_BOOL varfDeleteFile) {
+    return This->lpVtbl->remove(This,pItem,varfDeleteFile);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_getAttributeStringCollection(IWMPMediaCollection* This,BSTR bstrAttribute,BSTR bstrMediaType,IWMPStringCollection **ppStringCollection) {
+    return This->lpVtbl->getAttributeStringCollection(This,bstrAttribute,bstrMediaType,ppStringCollection);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_getMediaAtom(IWMPMediaCollection* This,BSTR bstrItemName,LONG *plAtom) {
+    return This->lpVtbl->getMediaAtom(This,bstrItemName,plAtom);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_setDeleted(IWMPMediaCollection* This,IWMPMedia *pItem,VARIANT_BOOL varfIsDeleted) {
+    return This->lpVtbl->setDeleted(This,pItem,varfIsDeleted);
+}
+static FORCEINLINE HRESULT IWMPMediaCollection_isDeleted(IWMPMediaCollection* This,IWMPMedia *pItem,VARIANT_BOOL *pvarfIsDeleted) {
+    return This->lpVtbl->isDeleted(This,pItem,pvarfIsDeleted);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPMediaCollection_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPPlaylistArray interface
+ */
+#ifndef __IWMPPlaylistArray_INTERFACE_DEFINED__
+#define __IWMPPlaylistArray_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPPlaylistArray, 0x679409c0, 0x99f7, 0x11d3, 0x9f,0xb7, 0x00,0x10,0x5a,0xa6,0x20,0xbb);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("679409c0-99f7-11d3-9fb7-00105aa620bb")
+IWMPPlaylistArray : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_count(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG lIndex,
+        IWMPPlaylist **ppItem) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPPlaylistArray, 0x679409c0, 0x99f7, 0x11d3, 0x9f,0xb7, 0x00,0x10,0x5a,0xa6,0x20,0xbb)
+#endif
+#else
+typedef struct IWMPPlaylistArrayVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPPlaylistArray *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPPlaylistArray *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPPlaylistArray *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPPlaylistArray *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPPlaylistArray *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPPlaylistArray *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPPlaylistArray *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPPlaylistArray methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_count)(
+        IWMPPlaylistArray *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IWMPPlaylistArray *This,
+        LONG lIndex,
+        IWMPPlaylist **ppItem);
+
+    END_INTERFACE
+} IWMPPlaylistArrayVtbl;
+
+interface IWMPPlaylistArray {
+    CONST_VTBL IWMPPlaylistArrayVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPPlaylistArray_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPPlaylistArray_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPPlaylistArray_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPPlaylistArray_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPPlaylistArray_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPPlaylistArray_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPPlaylistArray_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPPlaylistArray methods ***/
+#define IWMPPlaylistArray_get_count(This,plCount) (This)->lpVtbl->get_count(This,plCount)
+#define IWMPPlaylistArray_Item(This,lIndex,ppItem) (This)->lpVtbl->Item(This,lIndex,ppItem)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPPlaylistArray_QueryInterface(IWMPPlaylistArray* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPPlaylistArray_AddRef(IWMPPlaylistArray* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPPlaylistArray_Release(IWMPPlaylistArray* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPPlaylistArray_GetTypeInfoCount(IWMPPlaylistArray* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPPlaylistArray_GetTypeInfo(IWMPPlaylistArray* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPPlaylistArray_GetIDsOfNames(IWMPPlaylistArray* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPPlaylistArray_Invoke(IWMPPlaylistArray* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPPlaylistArray methods ***/
+static FORCEINLINE HRESULT IWMPPlaylistArray_get_count(IWMPPlaylistArray* This,LONG *plCount) {
+    return This->lpVtbl->get_count(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPPlaylistArray_Item(IWMPPlaylistArray* This,LONG lIndex,IWMPPlaylist **ppItem) {
+    return This->lpVtbl->Item(This,lIndex,ppItem);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPPlaylistArray_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPPlaylistCollection interface
+ */
+#ifndef __IWMPPlaylistCollection_INTERFACE_DEFINED__
+#define __IWMPPlaylistCollection_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPPlaylistCollection, 0x10a13217, 0x23a7, 0x439b, 0xb1,0xc0, 0xd8,0x47,0xc7,0x9b,0x77,0x74);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("10a13217-23a7-439b-b1c0-d847c79b7774")
+IWMPPlaylistCollection : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE newPlaylist(
+        BSTR bstrName,
+        IWMPPlaylist **ppItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getAll(
+        IWMPPlaylistArray **ppPlaylistArray) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getByName(
+        BSTR bstrName,
+        IWMPPlaylistArray **ppPlaylistArray) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE remove(
+        IWMPPlaylist *pItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setDeleted(
+        IWMPPlaylist *pItem,
+        VARIANT_BOOL varfIsDeleted) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE isDeleted(
+        IWMPPlaylist *pItem,
+        VARIANT_BOOL *pvarfIsDeleted) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE importPlaylist(
+        IWMPPlaylist *pItem,
+        IWMPPlaylist **ppImportedItem) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPPlaylistCollection, 0x10a13217, 0x23a7, 0x439b, 0xb1,0xc0, 0xd8,0x47,0xc7,0x9b,0x77,0x74)
+#endif
+#else
+typedef struct IWMPPlaylistCollectionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPPlaylistCollection *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPPlaylistCollection *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPPlaylistCollection *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPPlaylistCollection *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPPlaylistCollection *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPPlaylistCollection *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPPlaylistCollection *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPPlaylistCollection methods ***/
+    HRESULT (STDMETHODCALLTYPE *newPlaylist)(
+        IWMPPlaylistCollection *This,
+        BSTR bstrName,
+        IWMPPlaylist **ppItem);
+
+    HRESULT (STDMETHODCALLTYPE *getAll)(
+        IWMPPlaylistCollection *This,
+        IWMPPlaylistArray **ppPlaylistArray);
+
+    HRESULT (STDMETHODCALLTYPE *getByName)(
+        IWMPPlaylistCollection *This,
+        BSTR bstrName,
+        IWMPPlaylistArray **ppPlaylistArray);
+
+    HRESULT (STDMETHODCALLTYPE *remove)(
+        IWMPPlaylistCollection *This,
+        IWMPPlaylist *pItem);
+
+    HRESULT (STDMETHODCALLTYPE *setDeleted)(
+        IWMPPlaylistCollection *This,
+        IWMPPlaylist *pItem,
+        VARIANT_BOOL varfIsDeleted);
+
+    HRESULT (STDMETHODCALLTYPE *isDeleted)(
+        IWMPPlaylistCollection *This,
+        IWMPPlaylist *pItem,
+        VARIANT_BOOL *pvarfIsDeleted);
+
+    HRESULT (STDMETHODCALLTYPE *importPlaylist)(
+        IWMPPlaylistCollection *This,
+        IWMPPlaylist *pItem,
+        IWMPPlaylist **ppImportedItem);
+
+    END_INTERFACE
+} IWMPPlaylistCollectionVtbl;
+
+interface IWMPPlaylistCollection {
+    CONST_VTBL IWMPPlaylistCollectionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPPlaylistCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPPlaylistCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPPlaylistCollection_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPPlaylistCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPPlaylistCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPPlaylistCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPPlaylistCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPPlaylistCollection methods ***/
+#define IWMPPlaylistCollection_newPlaylist(This,bstrName,ppItem) (This)->lpVtbl->newPlaylist(This,bstrName,ppItem)
+#define IWMPPlaylistCollection_getAll(This,ppPlaylistArray) (This)->lpVtbl->getAll(This,ppPlaylistArray)
+#define IWMPPlaylistCollection_getByName(This,bstrName,ppPlaylistArray) (This)->lpVtbl->getByName(This,bstrName,ppPlaylistArray)
+#define IWMPPlaylistCollection_remove(This,pItem) (This)->lpVtbl->remove(This,pItem)
+#define IWMPPlaylistCollection_setDeleted(This,pItem,varfIsDeleted) (This)->lpVtbl->setDeleted(This,pItem,varfIsDeleted)
+#define IWMPPlaylistCollection_isDeleted(This,pItem,pvarfIsDeleted) (This)->lpVtbl->isDeleted(This,pItem,pvarfIsDeleted)
+#define IWMPPlaylistCollection_importPlaylist(This,pItem,ppImportedItem) (This)->lpVtbl->importPlaylist(This,pItem,ppImportedItem)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPPlaylistCollection_QueryInterface(IWMPPlaylistCollection* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPPlaylistCollection_AddRef(IWMPPlaylistCollection* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPPlaylistCollection_Release(IWMPPlaylistCollection* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPPlaylistCollection_GetTypeInfoCount(IWMPPlaylistCollection* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_GetTypeInfo(IWMPPlaylistCollection* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_GetIDsOfNames(IWMPPlaylistCollection* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_Invoke(IWMPPlaylistCollection* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPPlaylistCollection methods ***/
+static FORCEINLINE HRESULT IWMPPlaylistCollection_newPlaylist(IWMPPlaylistCollection* This,BSTR bstrName,IWMPPlaylist **ppItem) {
+    return This->lpVtbl->newPlaylist(This,bstrName,ppItem);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_getAll(IWMPPlaylistCollection* This,IWMPPlaylistArray **ppPlaylistArray) {
+    return This->lpVtbl->getAll(This,ppPlaylistArray);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_getByName(IWMPPlaylistCollection* This,BSTR bstrName,IWMPPlaylistArray **ppPlaylistArray) {
+    return This->lpVtbl->getByName(This,bstrName,ppPlaylistArray);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_remove(IWMPPlaylistCollection* This,IWMPPlaylist *pItem) {
+    return This->lpVtbl->remove(This,pItem);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_setDeleted(IWMPPlaylistCollection* This,IWMPPlaylist *pItem,VARIANT_BOOL varfIsDeleted) {
+    return This->lpVtbl->setDeleted(This,pItem,varfIsDeleted);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_isDeleted(IWMPPlaylistCollection* This,IWMPPlaylist *pItem,VARIANT_BOOL *pvarfIsDeleted) {
+    return This->lpVtbl->isDeleted(This,pItem,pvarfIsDeleted);
+}
+static FORCEINLINE HRESULT IWMPPlaylistCollection_importPlaylist(IWMPPlaylistCollection* This,IWMPPlaylist *pItem,IWMPPlaylist **ppImportedItem) {
+    return This->lpVtbl->importPlaylist(This,pItem,ppImportedItem);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPPlaylistCollection_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPNetwork interface
+ */
+#ifndef __IWMPNetwork_INTERFACE_DEFINED__
+#define __IWMPNetwork_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPNetwork, 0xec21b779, 0xedef, 0x462d, 0xbb,0xa4, 0xad,0x9d,0xde,0x2b,0x29,0xa7);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ec21b779-edef-462d-bba4-ad9dde2b29a7")
+IWMPNetwork : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_bandWidth(
+        LONG *plBandwidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_recoveredPackets(
+        LONG *plRecoveredPackets) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_sourceProtocol(
+        BSTR *pbstrSourceProtocol) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_receivedPackets(
+        LONG *plReceivedPackets) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_lostPackets(
+        LONG *plLostPackets) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_receptionQuality(
+        LONG *plReceptionQuality) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_bufferingCount(
+        LONG *plBufferingCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_bufferingProgress(
+        LONG *plBufferingProgress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_bufferingTime(
+        LONG *plBufferingTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_bufferingTime(
+        LONG plBufferingTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_frameRate(
+        LONG *plFrameRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_maxBitRate(
+        LONG *plBitRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_bitRate(
+        LONG *plBitRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getProxySettings(
+        BSTR bstrProtocol,
+        LONG *plProxySetting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setProxySettings(
+        BSTR bstrProtocol,
+        LONG lProxySetting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getProxyName(
+        BSTR bstrProtocol,
+        BSTR *pbstrProxyName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setProxyName(
+        BSTR bstrProtocol,
+        BSTR bstrProxyName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getProxyPort(
+        BSTR bstrProtocol,
+        LONG *lProxyPort) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setProxyPort(
+        BSTR bstrProtocol,
+        LONG lProxyPort) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getProxyExceptionList(
+        BSTR bstrProtocol,
+        BSTR *pbstrExceptionList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setProxyExceptionList(
+        BSTR bstrProtocol,
+        BSTR pbstrExceptionList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getProxyBypassForLocal(
+        BSTR bstrProtocol,
+        VARIANT_BOOL *pfBypassForLocal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE setProxyBypassForLocal(
+        BSTR bstrProtocol,
+        VARIANT_BOOL fBypassForLocal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_maxBandwidth(
+        LONG *lMaxBandwidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_maxBandwidth(
+        LONG lMaxBandwidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_downloadProgress(
+        LONG *plDownloadProgress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_encodedFrameRate(
+        LONG *plFrameRate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_framesSkipped(
+        LONG *plFrames) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPNetwork, 0xec21b779, 0xedef, 0x462d, 0xbb,0xa4, 0xad,0x9d,0xde,0x2b,0x29,0xa7)
+#endif
+#else
+typedef struct IWMPNetworkVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPNetwork *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPNetwork *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPNetwork *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPNetwork *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPNetwork *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPNetwork *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPNetwork *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPNetwork methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_bandWidth)(
+        IWMPNetwork *This,
+        LONG *plBandwidth);
+
+    HRESULT (STDMETHODCALLTYPE *get_recoveredPackets)(
+        IWMPNetwork *This,
+        LONG *plRecoveredPackets);
+
+    HRESULT (STDMETHODCALLTYPE *get_sourceProtocol)(
+        IWMPNetwork *This,
+        BSTR *pbstrSourceProtocol);
+
+    HRESULT (STDMETHODCALLTYPE *get_receivedPackets)(
+        IWMPNetwork *This,
+        LONG *plReceivedPackets);
+
+    HRESULT (STDMETHODCALLTYPE *get_lostPackets)(
+        IWMPNetwork *This,
+        LONG *plLostPackets);
+
+    HRESULT (STDMETHODCALLTYPE *get_receptionQuality)(
+        IWMPNetwork *This,
+        LONG *plReceptionQuality);
+
+    HRESULT (STDMETHODCALLTYPE *get_bufferingCount)(
+        IWMPNetwork *This,
+        LONG *plBufferingCount);
+
+    HRESULT (STDMETHODCALLTYPE *get_bufferingProgress)(
+        IWMPNetwork *This,
+        LONG *plBufferingProgress);
+
+    HRESULT (STDMETHODCALLTYPE *get_bufferingTime)(
+        IWMPNetwork *This,
+        LONG *plBufferingTime);
+
+    HRESULT (STDMETHODCALLTYPE *put_bufferingTime)(
+        IWMPNetwork *This,
+        LONG plBufferingTime);
+
+    HRESULT (STDMETHODCALLTYPE *get_frameRate)(
+        IWMPNetwork *This,
+        LONG *plFrameRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_maxBitRate)(
+        IWMPNetwork *This,
+        LONG *plBitRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_bitRate)(
+        IWMPNetwork *This,
+        LONG *plBitRate);
+
+    HRESULT (STDMETHODCALLTYPE *getProxySettings)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        LONG *plProxySetting);
+
+    HRESULT (STDMETHODCALLTYPE *setProxySettings)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        LONG lProxySetting);
+
+    HRESULT (STDMETHODCALLTYPE *getProxyName)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        BSTR *pbstrProxyName);
+
+    HRESULT (STDMETHODCALLTYPE *setProxyName)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        BSTR bstrProxyName);
+
+    HRESULT (STDMETHODCALLTYPE *getProxyPort)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        LONG *lProxyPort);
+
+    HRESULT (STDMETHODCALLTYPE *setProxyPort)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        LONG lProxyPort);
+
+    HRESULT (STDMETHODCALLTYPE *getProxyExceptionList)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        BSTR *pbstrExceptionList);
+
+    HRESULT (STDMETHODCALLTYPE *setProxyExceptionList)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        BSTR pbstrExceptionList);
+
+    HRESULT (STDMETHODCALLTYPE *getProxyBypassForLocal)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        VARIANT_BOOL *pfBypassForLocal);
+
+    HRESULT (STDMETHODCALLTYPE *setProxyBypassForLocal)(
+        IWMPNetwork *This,
+        BSTR bstrProtocol,
+        VARIANT_BOOL fBypassForLocal);
+
+    HRESULT (STDMETHODCALLTYPE *get_maxBandwidth)(
+        IWMPNetwork *This,
+        LONG *lMaxBandwidth);
+
+    HRESULT (STDMETHODCALLTYPE *put_maxBandwidth)(
+        IWMPNetwork *This,
+        LONG lMaxBandwidth);
+
+    HRESULT (STDMETHODCALLTYPE *get_downloadProgress)(
+        IWMPNetwork *This,
+        LONG *plDownloadProgress);
+
+    HRESULT (STDMETHODCALLTYPE *get_encodedFrameRate)(
+        IWMPNetwork *This,
+        LONG *plFrameRate);
+
+    HRESULT (STDMETHODCALLTYPE *get_framesSkipped)(
+        IWMPNetwork *This,
+        LONG *plFrames);
+
+    END_INTERFACE
+} IWMPNetworkVtbl;
+
+interface IWMPNetwork {
+    CONST_VTBL IWMPNetworkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPNetwork_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPNetwork_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPNetwork_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPNetwork_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPNetwork_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPNetwork_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPNetwork_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPNetwork methods ***/
+#define IWMPNetwork_get_bandWidth(This,plBandwidth) (This)->lpVtbl->get_bandWidth(This,plBandwidth)
+#define IWMPNetwork_get_recoveredPackets(This,plRecoveredPackets) (This)->lpVtbl->get_recoveredPackets(This,plRecoveredPackets)
+#define IWMPNetwork_get_sourceProtocol(This,pbstrSourceProtocol) (This)->lpVtbl->get_sourceProtocol(This,pbstrSourceProtocol)
+#define IWMPNetwork_get_receivedPackets(This,plReceivedPackets) (This)->lpVtbl->get_receivedPackets(This,plReceivedPackets)
+#define IWMPNetwork_get_lostPackets(This,plLostPackets) (This)->lpVtbl->get_lostPackets(This,plLostPackets)
+#define IWMPNetwork_get_receptionQuality(This,plReceptionQuality) (This)->lpVtbl->get_receptionQuality(This,plReceptionQuality)
+#define IWMPNetwork_get_bufferingCount(This,plBufferingCount) (This)->lpVtbl->get_bufferingCount(This,plBufferingCount)
+#define IWMPNetwork_get_bufferingProgress(This,plBufferingProgress) (This)->lpVtbl->get_bufferingProgress(This,plBufferingProgress)
+#define IWMPNetwork_get_bufferingTime(This,plBufferingTime) (This)->lpVtbl->get_bufferingTime(This,plBufferingTime)
+#define IWMPNetwork_put_bufferingTime(This,plBufferingTime) (This)->lpVtbl->put_bufferingTime(This,plBufferingTime)
+#define IWMPNetwork_get_frameRate(This,plFrameRate) (This)->lpVtbl->get_frameRate(This,plFrameRate)
+#define IWMPNetwork_get_maxBitRate(This,plBitRate) (This)->lpVtbl->get_maxBitRate(This,plBitRate)
+#define IWMPNetwork_get_bitRate(This,plBitRate) (This)->lpVtbl->get_bitRate(This,plBitRate)
+#define IWMPNetwork_getProxySettings(This,bstrProtocol,plProxySetting) (This)->lpVtbl->getProxySettings(This,bstrProtocol,plProxySetting)
+#define IWMPNetwork_setProxySettings(This,bstrProtocol,lProxySetting) (This)->lpVtbl->setProxySettings(This,bstrProtocol,lProxySetting)
+#define IWMPNetwork_getProxyName(This,bstrProtocol,pbstrProxyName) (This)->lpVtbl->getProxyName(This,bstrProtocol,pbstrProxyName)
+#define IWMPNetwork_setProxyName(This,bstrProtocol,bstrProxyName) (This)->lpVtbl->setProxyName(This,bstrProtocol,bstrProxyName)
+#define IWMPNetwork_getProxyPort(This,bstrProtocol,lProxyPort) (This)->lpVtbl->getProxyPort(This,bstrProtocol,lProxyPort)
+#define IWMPNetwork_setProxyPort(This,bstrProtocol,lProxyPort) (This)->lpVtbl->setProxyPort(This,bstrProtocol,lProxyPort)
+#define IWMPNetwork_getProxyExceptionList(This,bstrProtocol,pbstrExceptionList) (This)->lpVtbl->getProxyExceptionList(This,bstrProtocol,pbstrExceptionList)
+#define IWMPNetwork_setProxyExceptionList(This,bstrProtocol,pbstrExceptionList) (This)->lpVtbl->setProxyExceptionList(This,bstrProtocol,pbstrExceptionList)
+#define IWMPNetwork_getProxyBypassForLocal(This,bstrProtocol,pfBypassForLocal) (This)->lpVtbl->getProxyBypassForLocal(This,bstrProtocol,pfBypassForLocal)
+#define IWMPNetwork_setProxyBypassForLocal(This,bstrProtocol,fBypassForLocal) (This)->lpVtbl->setProxyBypassForLocal(This,bstrProtocol,fBypassForLocal)
+#define IWMPNetwork_get_maxBandwidth(This,lMaxBandwidth) (This)->lpVtbl->get_maxBandwidth(This,lMaxBandwidth)
+#define IWMPNetwork_put_maxBandwidth(This,lMaxBandwidth) (This)->lpVtbl->put_maxBandwidth(This,lMaxBandwidth)
+#define IWMPNetwork_get_downloadProgress(This,plDownloadProgress) (This)->lpVtbl->get_downloadProgress(This,plDownloadProgress)
+#define IWMPNetwork_get_encodedFrameRate(This,plFrameRate) (This)->lpVtbl->get_encodedFrameRate(This,plFrameRate)
+#define IWMPNetwork_get_framesSkipped(This,plFrames) (This)->lpVtbl->get_framesSkipped(This,plFrames)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPNetwork_QueryInterface(IWMPNetwork* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPNetwork_AddRef(IWMPNetwork* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPNetwork_Release(IWMPNetwork* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPNetwork_GetTypeInfoCount(IWMPNetwork* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPNetwork_GetTypeInfo(IWMPNetwork* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPNetwork_GetIDsOfNames(IWMPNetwork* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPNetwork_Invoke(IWMPNetwork* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPNetwork methods ***/
+static FORCEINLINE HRESULT IWMPNetwork_get_bandWidth(IWMPNetwork* This,LONG *plBandwidth) {
+    return This->lpVtbl->get_bandWidth(This,plBandwidth);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_recoveredPackets(IWMPNetwork* This,LONG *plRecoveredPackets) {
+    return This->lpVtbl->get_recoveredPackets(This,plRecoveredPackets);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_sourceProtocol(IWMPNetwork* This,BSTR *pbstrSourceProtocol) {
+    return This->lpVtbl->get_sourceProtocol(This,pbstrSourceProtocol);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_receivedPackets(IWMPNetwork* This,LONG *plReceivedPackets) {
+    return This->lpVtbl->get_receivedPackets(This,plReceivedPackets);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_lostPackets(IWMPNetwork* This,LONG *plLostPackets) {
+    return This->lpVtbl->get_lostPackets(This,plLostPackets);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_receptionQuality(IWMPNetwork* This,LONG *plReceptionQuality) {
+    return This->lpVtbl->get_receptionQuality(This,plReceptionQuality);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_bufferingCount(IWMPNetwork* This,LONG *plBufferingCount) {
+    return This->lpVtbl->get_bufferingCount(This,plBufferingCount);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_bufferingProgress(IWMPNetwork* This,LONG *plBufferingProgress) {
+    return This->lpVtbl->get_bufferingProgress(This,plBufferingProgress);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_bufferingTime(IWMPNetwork* This,LONG *plBufferingTime) {
+    return This->lpVtbl->get_bufferingTime(This,plBufferingTime);
+}
+static FORCEINLINE HRESULT IWMPNetwork_put_bufferingTime(IWMPNetwork* This,LONG plBufferingTime) {
+    return This->lpVtbl->put_bufferingTime(This,plBufferingTime);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_frameRate(IWMPNetwork* This,LONG *plFrameRate) {
+    return This->lpVtbl->get_frameRate(This,plFrameRate);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_maxBitRate(IWMPNetwork* This,LONG *plBitRate) {
+    return This->lpVtbl->get_maxBitRate(This,plBitRate);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_bitRate(IWMPNetwork* This,LONG *plBitRate) {
+    return This->lpVtbl->get_bitRate(This,plBitRate);
+}
+static FORCEINLINE HRESULT IWMPNetwork_getProxySettings(IWMPNetwork* This,BSTR bstrProtocol,LONG *plProxySetting) {
+    return This->lpVtbl->getProxySettings(This,bstrProtocol,plProxySetting);
+}
+static FORCEINLINE HRESULT IWMPNetwork_setProxySettings(IWMPNetwork* This,BSTR bstrProtocol,LONG lProxySetting) {
+    return This->lpVtbl->setProxySettings(This,bstrProtocol,lProxySetting);
+}
+static FORCEINLINE HRESULT IWMPNetwork_getProxyName(IWMPNetwork* This,BSTR bstrProtocol,BSTR *pbstrProxyName) {
+    return This->lpVtbl->getProxyName(This,bstrProtocol,pbstrProxyName);
+}
+static FORCEINLINE HRESULT IWMPNetwork_setProxyName(IWMPNetwork* This,BSTR bstrProtocol,BSTR bstrProxyName) {
+    return This->lpVtbl->setProxyName(This,bstrProtocol,bstrProxyName);
+}
+static FORCEINLINE HRESULT IWMPNetwork_getProxyPort(IWMPNetwork* This,BSTR bstrProtocol,LONG *lProxyPort) {
+    return This->lpVtbl->getProxyPort(This,bstrProtocol,lProxyPort);
+}
+static FORCEINLINE HRESULT IWMPNetwork_setProxyPort(IWMPNetwork* This,BSTR bstrProtocol,LONG lProxyPort) {
+    return This->lpVtbl->setProxyPort(This,bstrProtocol,lProxyPort);
+}
+static FORCEINLINE HRESULT IWMPNetwork_getProxyExceptionList(IWMPNetwork* This,BSTR bstrProtocol,BSTR *pbstrExceptionList) {
+    return This->lpVtbl->getProxyExceptionList(This,bstrProtocol,pbstrExceptionList);
+}
+static FORCEINLINE HRESULT IWMPNetwork_setProxyExceptionList(IWMPNetwork* This,BSTR bstrProtocol,BSTR pbstrExceptionList) {
+    return This->lpVtbl->setProxyExceptionList(This,bstrProtocol,pbstrExceptionList);
+}
+static FORCEINLINE HRESULT IWMPNetwork_getProxyBypassForLocal(IWMPNetwork* This,BSTR bstrProtocol,VARIANT_BOOL *pfBypassForLocal) {
+    return This->lpVtbl->getProxyBypassForLocal(This,bstrProtocol,pfBypassForLocal);
+}
+static FORCEINLINE HRESULT IWMPNetwork_setProxyBypassForLocal(IWMPNetwork* This,BSTR bstrProtocol,VARIANT_BOOL fBypassForLocal) {
+    return This->lpVtbl->setProxyBypassForLocal(This,bstrProtocol,fBypassForLocal);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_maxBandwidth(IWMPNetwork* This,LONG *lMaxBandwidth) {
+    return This->lpVtbl->get_maxBandwidth(This,lMaxBandwidth);
+}
+static FORCEINLINE HRESULT IWMPNetwork_put_maxBandwidth(IWMPNetwork* This,LONG lMaxBandwidth) {
+    return This->lpVtbl->put_maxBandwidth(This,lMaxBandwidth);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_downloadProgress(IWMPNetwork* This,LONG *plDownloadProgress) {
+    return This->lpVtbl->get_downloadProgress(This,plDownloadProgress);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_encodedFrameRate(IWMPNetwork* This,LONG *plFrameRate) {
+    return This->lpVtbl->get_encodedFrameRate(This,plFrameRate);
+}
+static FORCEINLINE HRESULT IWMPNetwork_get_framesSkipped(IWMPNetwork* This,LONG *plFrames) {
+    return This->lpVtbl->get_framesSkipped(This,plFrames);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPNetwork_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPCdrom interface
+ */
+#ifndef __IWMPCdrom_INTERFACE_DEFINED__
+#define __IWMPCdrom_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPCdrom, 0xcfab6e98, 0x8730, 0x11d3, 0xb3,0x88, 0x00,0xc0,0x4f,0x68,0x57,0x4b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("cfab6e98-8730-11d3-b388-00c04f68574b")
+IWMPCdrom : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_driveSpecifier(
+        BSTR *pbstrDrive) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Playlist(
+        IWMPPlaylist **ppPlaylist) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE eject(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPCdrom, 0xcfab6e98, 0x8730, 0x11d3, 0xb3,0x88, 0x00,0xc0,0x4f,0x68,0x57,0x4b)
+#endif
+#else
+typedef struct IWMPCdromVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPCdrom *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPCdrom *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPCdrom *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPCdrom *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPCdrom *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPCdrom *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPCdrom *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPCdrom methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_driveSpecifier)(
+        IWMPCdrom *This,
+        BSTR *pbstrDrive);
+
+    HRESULT (STDMETHODCALLTYPE *get_Playlist)(
+        IWMPCdrom *This,
+        IWMPPlaylist **ppPlaylist);
+
+    HRESULT (STDMETHODCALLTYPE *eject)(
+        IWMPCdrom *This);
+
+    END_INTERFACE
+} IWMPCdromVtbl;
+
+interface IWMPCdrom {
+    CONST_VTBL IWMPCdromVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPCdrom_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPCdrom_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPCdrom_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPCdrom_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPCdrom_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPCdrom_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPCdrom_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPCdrom methods ***/
+#define IWMPCdrom_get_driveSpecifier(This,pbstrDrive) (This)->lpVtbl->get_driveSpecifier(This,pbstrDrive)
+#define IWMPCdrom_get_Playlist(This,ppPlaylist) (This)->lpVtbl->get_Playlist(This,ppPlaylist)
+#define IWMPCdrom_eject(This) (This)->lpVtbl->eject(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPCdrom_QueryInterface(IWMPCdrom* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPCdrom_AddRef(IWMPCdrom* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPCdrom_Release(IWMPCdrom* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPCdrom_GetTypeInfoCount(IWMPCdrom* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPCdrom_GetTypeInfo(IWMPCdrom* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPCdrom_GetIDsOfNames(IWMPCdrom* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPCdrom_Invoke(IWMPCdrom* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPCdrom methods ***/
+static FORCEINLINE HRESULT IWMPCdrom_get_driveSpecifier(IWMPCdrom* This,BSTR *pbstrDrive) {
+    return This->lpVtbl->get_driveSpecifier(This,pbstrDrive);
+}
+static FORCEINLINE HRESULT IWMPCdrom_get_Playlist(IWMPCdrom* This,IWMPPlaylist **ppPlaylist) {
+    return This->lpVtbl->get_Playlist(This,ppPlaylist);
+}
+static FORCEINLINE HRESULT IWMPCdrom_eject(IWMPCdrom* This) {
+    return This->lpVtbl->eject(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPCdrom_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPCdromCollection interface
+ */
+#ifndef __IWMPCdromCollection_INTERFACE_DEFINED__
+#define __IWMPCdromCollection_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPCdromCollection, 0xee4c8fe2, 0x34b2, 0x11d3, 0xa3,0xbf, 0x00,0x60,0x97,0xc9,0xb3,0x44);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ee4c8fe2-34b2-11d3-a3bf-006097c9b344")
+IWMPCdromCollection : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_count(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG lIndex,
+        IWMPCdrom **ppItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getByDriveSpecifier(
+        BSTR bstrDriveSpecifier,
+        IWMPCdrom **ppCdrom) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPCdromCollection, 0xee4c8fe2, 0x34b2, 0x11d3, 0xa3,0xbf, 0x00,0x60,0x97,0xc9,0xb3,0x44)
+#endif
+#else
+typedef struct IWMPCdromCollectionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPCdromCollection *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPCdromCollection *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPCdromCollection *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPCdromCollection *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPCdromCollection *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPCdromCollection *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPCdromCollection *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPCdromCollection methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_count)(
+        IWMPCdromCollection *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IWMPCdromCollection *This,
+        LONG lIndex,
+        IWMPCdrom **ppItem);
+
+    HRESULT (STDMETHODCALLTYPE *getByDriveSpecifier)(
+        IWMPCdromCollection *This,
+        BSTR bstrDriveSpecifier,
+        IWMPCdrom **ppCdrom);
+
+    END_INTERFACE
+} IWMPCdromCollectionVtbl;
+
+interface IWMPCdromCollection {
+    CONST_VTBL IWMPCdromCollectionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPCdromCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPCdromCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPCdromCollection_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPCdromCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPCdromCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPCdromCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPCdromCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPCdromCollection methods ***/
+#define IWMPCdromCollection_get_count(This,plCount) (This)->lpVtbl->get_count(This,plCount)
+#define IWMPCdromCollection_Item(This,lIndex,ppItem) (This)->lpVtbl->Item(This,lIndex,ppItem)
+#define IWMPCdromCollection_getByDriveSpecifier(This,bstrDriveSpecifier,ppCdrom) (This)->lpVtbl->getByDriveSpecifier(This,bstrDriveSpecifier,ppCdrom)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPCdromCollection_QueryInterface(IWMPCdromCollection* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPCdromCollection_AddRef(IWMPCdromCollection* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPCdromCollection_Release(IWMPCdromCollection* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPCdromCollection_GetTypeInfoCount(IWMPCdromCollection* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPCdromCollection_GetTypeInfo(IWMPCdromCollection* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPCdromCollection_GetIDsOfNames(IWMPCdromCollection* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPCdromCollection_Invoke(IWMPCdromCollection* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPCdromCollection methods ***/
+static FORCEINLINE HRESULT IWMPCdromCollection_get_count(IWMPCdromCollection* This,LONG *plCount) {
+    return This->lpVtbl->get_count(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPCdromCollection_Item(IWMPCdromCollection* This,LONG lIndex,IWMPCdrom **ppItem) {
+    return This->lpVtbl->Item(This,lIndex,ppItem);
+}
+static FORCEINLINE HRESULT IWMPCdromCollection_getByDriveSpecifier(IWMPCdromCollection* This,BSTR bstrDriveSpecifier,IWMPCdrom **ppCdrom) {
+    return This->lpVtbl->getByDriveSpecifier(This,bstrDriveSpecifier,ppCdrom);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPCdromCollection_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPDVD interface
+ */
+#ifndef __IWMPDVD_INTERFACE_DEFINED__
+#define __IWMPDVD_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPDVD, 0x8da61686, 0x4668, 0x4a5c, 0xae,0x5d, 0x80,0x31,0x93,0x29,0x3d,0xbe);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8da61686-4668-4a5c-ae5d-803193293dbe")
+IWMPDVD : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_isAvailable(
+        BSTR bstrItem,
+        VARIANT_BOOL *pIsAvailable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_domain(
+        BSTR *strDomain) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE topMenu(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE titleMenu(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE back(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE resume(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPDVD, 0x8da61686, 0x4668, 0x4a5c, 0xae,0x5d, 0x80,0x31,0x93,0x29,0x3d,0xbe)
+#endif
+#else
+typedef struct IWMPDVDVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPDVD *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPDVD *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPDVD *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPDVD *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPDVD *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPDVD *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPDVD *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPDVD methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_isAvailable)(
+        IWMPDVD *This,
+        BSTR bstrItem,
+        VARIANT_BOOL *pIsAvailable);
+
+    HRESULT (STDMETHODCALLTYPE *get_domain)(
+        IWMPDVD *This,
+        BSTR *strDomain);
+
+    HRESULT (STDMETHODCALLTYPE *topMenu)(
+        IWMPDVD *This);
+
+    HRESULT (STDMETHODCALLTYPE *titleMenu)(
+        IWMPDVD *This);
+
+    HRESULT (STDMETHODCALLTYPE *back)(
+        IWMPDVD *This);
+
+    HRESULT (STDMETHODCALLTYPE *resume)(
+        IWMPDVD *This);
+
+    END_INTERFACE
+} IWMPDVDVtbl;
+
+interface IWMPDVD {
+    CONST_VTBL IWMPDVDVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPDVD_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPDVD_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPDVD_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPDVD_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPDVD_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPDVD_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPDVD_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPDVD methods ***/
+#define IWMPDVD_get_isAvailable(This,bstrItem,pIsAvailable) (This)->lpVtbl->get_isAvailable(This,bstrItem,pIsAvailable)
+#define IWMPDVD_get_domain(This,strDomain) (This)->lpVtbl->get_domain(This,strDomain)
+#define IWMPDVD_topMenu(This) (This)->lpVtbl->topMenu(This)
+#define IWMPDVD_titleMenu(This) (This)->lpVtbl->titleMenu(This)
+#define IWMPDVD_back(This) (This)->lpVtbl->back(This)
+#define IWMPDVD_resume(This) (This)->lpVtbl->resume(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPDVD_QueryInterface(IWMPDVD* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPDVD_AddRef(IWMPDVD* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPDVD_Release(IWMPDVD* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPDVD_GetTypeInfoCount(IWMPDVD* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPDVD_GetTypeInfo(IWMPDVD* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPDVD_GetIDsOfNames(IWMPDVD* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPDVD_Invoke(IWMPDVD* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPDVD methods ***/
+static FORCEINLINE HRESULT IWMPDVD_get_isAvailable(IWMPDVD* This,BSTR bstrItem,VARIANT_BOOL *pIsAvailable) {
+    return This->lpVtbl->get_isAvailable(This,bstrItem,pIsAvailable);
+}
+static FORCEINLINE HRESULT IWMPDVD_get_domain(IWMPDVD* This,BSTR *strDomain) {
+    return This->lpVtbl->get_domain(This,strDomain);
+}
+static FORCEINLINE HRESULT IWMPDVD_topMenu(IWMPDVD* This) {
+    return This->lpVtbl->topMenu(This);
+}
+static FORCEINLINE HRESULT IWMPDVD_titleMenu(IWMPDVD* This) {
+    return This->lpVtbl->titleMenu(This);
+}
+static FORCEINLINE HRESULT IWMPDVD_back(IWMPDVD* This) {
+    return This->lpVtbl->back(This);
+}
+static FORCEINLINE HRESULT IWMPDVD_resume(IWMPDVD* This) {
+    return This->lpVtbl->resume(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPDVD_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPClosedCaption interface
+ */
+#ifndef __IWMPClosedCaption_INTERFACE_DEFINED__
+#define __IWMPClosedCaption_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPClosedCaption, 0x4f2df574, 0xc588, 0x11d3, 0x9e,0xd0, 0x00,0xc0,0x4f,0xb6,0xe9,0x37);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("4f2df574-c588-11d3-9ed0-00c04fb6e937")
+IWMPClosedCaption : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_SAMIStyle(
+        BSTR *pbstrSAMIStyle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SAMIStyle(
+        BSTR pbstrSAMIStyle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SAMILang(
+        BSTR *pbstrSAMILang) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SAMILang(
+        BSTR pbstrSAMILang) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SAMIFileName(
+        BSTR *pbstrSAMIFileName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SAMIFileName(
+        BSTR pbstrSAMIFileName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_captioningId(
+        BSTR *pbstrCaptioningID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_captioningId(
+        BSTR pbstrCaptioningID) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPClosedCaption, 0x4f2df574, 0xc588, 0x11d3, 0x9e,0xd0, 0x00,0xc0,0x4f,0xb6,0xe9,0x37)
+#endif
+#else
+typedef struct IWMPClosedCaptionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPClosedCaption *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPClosedCaption *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPClosedCaption *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPClosedCaption *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPClosedCaption *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPClosedCaption *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPClosedCaption *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPClosedCaption methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_SAMIStyle)(
+        IWMPClosedCaption *This,
+        BSTR *pbstrSAMIStyle);
+
+    HRESULT (STDMETHODCALLTYPE *put_SAMIStyle)(
+        IWMPClosedCaption *This,
+        BSTR pbstrSAMIStyle);
+
+    HRESULT (STDMETHODCALLTYPE *get_SAMILang)(
+        IWMPClosedCaption *This,
+        BSTR *pbstrSAMILang);
+
+    HRESULT (STDMETHODCALLTYPE *put_SAMILang)(
+        IWMPClosedCaption *This,
+        BSTR pbstrSAMILang);
+
+    HRESULT (STDMETHODCALLTYPE *get_SAMIFileName)(
+        IWMPClosedCaption *This,
+        BSTR *pbstrSAMIFileName);
+
+    HRESULT (STDMETHODCALLTYPE *put_SAMIFileName)(
+        IWMPClosedCaption *This,
+        BSTR pbstrSAMIFileName);
+
+    HRESULT (STDMETHODCALLTYPE *get_captioningId)(
+        IWMPClosedCaption *This,
+        BSTR *pbstrCaptioningID);
+
+    HRESULT (STDMETHODCALLTYPE *put_captioningId)(
+        IWMPClosedCaption *This,
+        BSTR pbstrCaptioningID);
+
+    END_INTERFACE
+} IWMPClosedCaptionVtbl;
+
+interface IWMPClosedCaption {
+    CONST_VTBL IWMPClosedCaptionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPClosedCaption_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPClosedCaption_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPClosedCaption_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPClosedCaption_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPClosedCaption_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPClosedCaption_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPClosedCaption_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPClosedCaption methods ***/
+#define IWMPClosedCaption_get_SAMIStyle(This,pbstrSAMIStyle) (This)->lpVtbl->get_SAMIStyle(This,pbstrSAMIStyle)
+#define IWMPClosedCaption_put_SAMIStyle(This,pbstrSAMIStyle) (This)->lpVtbl->put_SAMIStyle(This,pbstrSAMIStyle)
+#define IWMPClosedCaption_get_SAMILang(This,pbstrSAMILang) (This)->lpVtbl->get_SAMILang(This,pbstrSAMILang)
+#define IWMPClosedCaption_put_SAMILang(This,pbstrSAMILang) (This)->lpVtbl->put_SAMILang(This,pbstrSAMILang)
+#define IWMPClosedCaption_get_SAMIFileName(This,pbstrSAMIFileName) (This)->lpVtbl->get_SAMIFileName(This,pbstrSAMIFileName)
+#define IWMPClosedCaption_put_SAMIFileName(This,pbstrSAMIFileName) (This)->lpVtbl->put_SAMIFileName(This,pbstrSAMIFileName)
+#define IWMPClosedCaption_get_captioningId(This,pbstrCaptioningID) (This)->lpVtbl->get_captioningId(This,pbstrCaptioningID)
+#define IWMPClosedCaption_put_captioningId(This,pbstrCaptioningID) (This)->lpVtbl->put_captioningId(This,pbstrCaptioningID)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPClosedCaption_QueryInterface(IWMPClosedCaption* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPClosedCaption_AddRef(IWMPClosedCaption* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPClosedCaption_Release(IWMPClosedCaption* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPClosedCaption_GetTypeInfoCount(IWMPClosedCaption* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_GetTypeInfo(IWMPClosedCaption* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_GetIDsOfNames(IWMPClosedCaption* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_Invoke(IWMPClosedCaption* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPClosedCaption methods ***/
+static FORCEINLINE HRESULT IWMPClosedCaption_get_SAMIStyle(IWMPClosedCaption* This,BSTR *pbstrSAMIStyle) {
+    return This->lpVtbl->get_SAMIStyle(This,pbstrSAMIStyle);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_put_SAMIStyle(IWMPClosedCaption* This,BSTR pbstrSAMIStyle) {
+    return This->lpVtbl->put_SAMIStyle(This,pbstrSAMIStyle);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_get_SAMILang(IWMPClosedCaption* This,BSTR *pbstrSAMILang) {
+    return This->lpVtbl->get_SAMILang(This,pbstrSAMILang);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_put_SAMILang(IWMPClosedCaption* This,BSTR pbstrSAMILang) {
+    return This->lpVtbl->put_SAMILang(This,pbstrSAMILang);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_get_SAMIFileName(IWMPClosedCaption* This,BSTR *pbstrSAMIFileName) {
+    return This->lpVtbl->get_SAMIFileName(This,pbstrSAMIFileName);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_put_SAMIFileName(IWMPClosedCaption* This,BSTR pbstrSAMIFileName) {
+    return This->lpVtbl->put_SAMIFileName(This,pbstrSAMIFileName);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_get_captioningId(IWMPClosedCaption* This,BSTR *pbstrCaptioningID) {
+    return This->lpVtbl->get_captioningId(This,pbstrCaptioningID);
+}
+static FORCEINLINE HRESULT IWMPClosedCaption_put_captioningId(IWMPClosedCaption* This,BSTR pbstrCaptioningID) {
+    return This->lpVtbl->put_captioningId(This,pbstrCaptioningID);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPClosedCaption_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPErrorItem interface
+ */
+#ifndef __IWMPErrorItem_INTERFACE_DEFINED__
+#define __IWMPErrorItem_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPErrorItem, 0x3614c646, 0x3b3b, 0x4de7, 0xa8,0x1e, 0x93,0x0e,0x3f,0x21,0x27,0xb3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3614c646-3b3b-4de7-a81e-930e3f2127b3")
+IWMPErrorItem : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_errorCode(
+        LONG *phr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_errorDescription(
+        BSTR *pbstrDescription) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_errorContext(
+        VARIANT *pvarContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_remedy(
+        LONG *plRemedy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_customUrl(
+        BSTR *pbstrCustomUrl) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPErrorItem, 0x3614c646, 0x3b3b, 0x4de7, 0xa8,0x1e, 0x93,0x0e,0x3f,0x21,0x27,0xb3)
+#endif
+#else
+typedef struct IWMPErrorItemVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPErrorItem *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPErrorItem *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPErrorItem *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPErrorItem *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPErrorItem *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPErrorItem *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPErrorItem *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPErrorItem methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_errorCode)(
+        IWMPErrorItem *This,
+        LONG *phr);
+
+    HRESULT (STDMETHODCALLTYPE *get_errorDescription)(
+        IWMPErrorItem *This,
+        BSTR *pbstrDescription);
+
+    HRESULT (STDMETHODCALLTYPE *get_errorContext)(
+        IWMPErrorItem *This,
+        VARIANT *pvarContext);
+
+    HRESULT (STDMETHODCALLTYPE *get_remedy)(
+        IWMPErrorItem *This,
+        LONG *plRemedy);
+
+    HRESULT (STDMETHODCALLTYPE *get_customUrl)(
+        IWMPErrorItem *This,
+        BSTR *pbstrCustomUrl);
+
+    END_INTERFACE
+} IWMPErrorItemVtbl;
+
+interface IWMPErrorItem {
+    CONST_VTBL IWMPErrorItemVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPErrorItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPErrorItem_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPErrorItem_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPErrorItem_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPErrorItem_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPErrorItem_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPErrorItem_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPErrorItem methods ***/
+#define IWMPErrorItem_get_errorCode(This,phr) (This)->lpVtbl->get_errorCode(This,phr)
+#define IWMPErrorItem_get_errorDescription(This,pbstrDescription) (This)->lpVtbl->get_errorDescription(This,pbstrDescription)
+#define IWMPErrorItem_get_errorContext(This,pvarContext) (This)->lpVtbl->get_errorContext(This,pvarContext)
+#define IWMPErrorItem_get_remedy(This,plRemedy) (This)->lpVtbl->get_remedy(This,plRemedy)
+#define IWMPErrorItem_get_customUrl(This,pbstrCustomUrl) (This)->lpVtbl->get_customUrl(This,pbstrCustomUrl)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPErrorItem_QueryInterface(IWMPErrorItem* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPErrorItem_AddRef(IWMPErrorItem* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPErrorItem_Release(IWMPErrorItem* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPErrorItem_GetTypeInfoCount(IWMPErrorItem* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPErrorItem_GetTypeInfo(IWMPErrorItem* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPErrorItem_GetIDsOfNames(IWMPErrorItem* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPErrorItem_Invoke(IWMPErrorItem* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPErrorItem methods ***/
+static FORCEINLINE HRESULT IWMPErrorItem_get_errorCode(IWMPErrorItem* This,LONG *phr) {
+    return This->lpVtbl->get_errorCode(This,phr);
+}
+static FORCEINLINE HRESULT IWMPErrorItem_get_errorDescription(IWMPErrorItem* This,BSTR *pbstrDescription) {
+    return This->lpVtbl->get_errorDescription(This,pbstrDescription);
+}
+static FORCEINLINE HRESULT IWMPErrorItem_get_errorContext(IWMPErrorItem* This,VARIANT *pvarContext) {
+    return This->lpVtbl->get_errorContext(This,pvarContext);
+}
+static FORCEINLINE HRESULT IWMPErrorItem_get_remedy(IWMPErrorItem* This,LONG *plRemedy) {
+    return This->lpVtbl->get_remedy(This,plRemedy);
+}
+static FORCEINLINE HRESULT IWMPErrorItem_get_customUrl(IWMPErrorItem* This,BSTR *pbstrCustomUrl) {
+    return This->lpVtbl->get_customUrl(This,pbstrCustomUrl);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPErrorItem_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPMedia2 interface
+ */
+#ifndef __IWMPMedia2_INTERFACE_DEFINED__
+#define __IWMPMedia2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPMedia2, 0xab7c88bb, 0x143e, 0x4ea4, 0xac,0xc3, 0xe4,0x35,0x0b,0x21,0x06,0xc3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ab7c88bb-143e-4ea4-acc3-e4350b2106c3")
+IWMPMedia2 : public IWMPMedia
+{
+    virtual HRESULT STDMETHODCALLTYPE get_error(
+        IWMPErrorItem **out) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPMedia2, 0xab7c88bb, 0x143e, 0x4ea4, 0xac,0xc3, 0xe4,0x35,0x0b,0x21,0x06,0xc3)
+#endif
+#else
+typedef struct IWMPMedia2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPMedia2 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPMedia2 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPMedia2 *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPMedia2 *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPMedia2 *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPMedia2 *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPMedia2 *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPMedia methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_isIdentical)(
+        IWMPMedia2 *This,
+        IWMPMedia *pIWMPMedia,
+        VARIANT_BOOL *pvbool);
+
+    HRESULT (STDMETHODCALLTYPE *get_sourceURL)(
+        IWMPMedia2 *This,
+        BSTR *pbstrSourceURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_name)(
+        IWMPMedia2 *This,
+        BSTR *pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *put_name)(
+        IWMPMedia2 *This,
+        BSTR pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *get_imageSourceWidth)(
+        IWMPMedia2 *This,
+        LONG *pWidth);
+
+    HRESULT (STDMETHODCALLTYPE *get_imageSourceHeight)(
+        IWMPMedia2 *This,
+        LONG *pHeight);
+
+    HRESULT (STDMETHODCALLTYPE *get_markerCount)(
+        IWMPMedia2 *This,
+        LONG *pMarkerCount);
+
+    HRESULT (STDMETHODCALLTYPE *getMarkerTime)(
+        IWMPMedia2 *This,
+        LONG MarkerNum,
+        double *pMarkerTime);
+
+    HRESULT (STDMETHODCALLTYPE *getMarkerName)(
+        IWMPMedia2 *This,
+        LONG MarkerNum,
+        BSTR *pbstrMarkerName);
+
+    HRESULT (STDMETHODCALLTYPE *get_duration)(
+        IWMPMedia2 *This,
+        double *pDuration);
+
+    HRESULT (STDMETHODCALLTYPE *get_durationString)(
+        IWMPMedia2 *This,
+        BSTR *pbstrDuration);
+
+    HRESULT (STDMETHODCALLTYPE *get_attributeCount)(
+        IWMPMedia2 *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *getAttributeName)(
+        IWMPMedia2 *This,
+        LONG lIndex,
+        BSTR *pbstrItemName);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfo)(
+        IWMPMedia2 *This,
+        BSTR bstrItemName,
+        BSTR *pbstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *setItemInfo)(
+        IWMPMedia2 *This,
+        BSTR bstrItemName,
+        BSTR bstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfoByAtom)(
+        IWMPMedia2 *This,
+        LONG lAtom,
+        BSTR *pbstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *isMemberOf)(
+        IWMPMedia2 *This,
+        IWMPPlaylist *pPlaylist,
+        VARIANT_BOOL *pvarfIsMemberOf);
+
+    HRESULT (STDMETHODCALLTYPE *isReadOnlyItem)(
+        IWMPMedia2 *This,
+        BSTR bstrItemName,
+        VARIANT_BOOL *pvarfIsReadOnly);
+
+    /*** IWMPMedia2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_error)(
+        IWMPMedia2 *This,
+        IWMPErrorItem **out);
+
+    END_INTERFACE
+} IWMPMedia2Vtbl;
+
+interface IWMPMedia2 {
+    CONST_VTBL IWMPMedia2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPMedia2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPMedia2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPMedia2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPMedia2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPMedia2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPMedia2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPMedia2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPMedia methods ***/
+#define IWMPMedia2_get_isIdentical(This,pIWMPMedia,pvbool) (This)->lpVtbl->get_isIdentical(This,pIWMPMedia,pvbool)
+#define IWMPMedia2_get_sourceURL(This,pbstrSourceURL) (This)->lpVtbl->get_sourceURL(This,pbstrSourceURL)
+#define IWMPMedia2_get_name(This,pbstrName) (This)->lpVtbl->get_name(This,pbstrName)
+#define IWMPMedia2_put_name(This,pbstrName) (This)->lpVtbl->put_name(This,pbstrName)
+#define IWMPMedia2_get_imageSourceWidth(This,pWidth) (This)->lpVtbl->get_imageSourceWidth(This,pWidth)
+#define IWMPMedia2_get_imageSourceHeight(This,pHeight) (This)->lpVtbl->get_imageSourceHeight(This,pHeight)
+#define IWMPMedia2_get_markerCount(This,pMarkerCount) (This)->lpVtbl->get_markerCount(This,pMarkerCount)
+#define IWMPMedia2_getMarkerTime(This,MarkerNum,pMarkerTime) (This)->lpVtbl->getMarkerTime(This,MarkerNum,pMarkerTime)
+#define IWMPMedia2_getMarkerName(This,MarkerNum,pbstrMarkerName) (This)->lpVtbl->getMarkerName(This,MarkerNum,pbstrMarkerName)
+#define IWMPMedia2_get_duration(This,pDuration) (This)->lpVtbl->get_duration(This,pDuration)
+#define IWMPMedia2_get_durationString(This,pbstrDuration) (This)->lpVtbl->get_durationString(This,pbstrDuration)
+#define IWMPMedia2_get_attributeCount(This,plCount) (This)->lpVtbl->get_attributeCount(This,plCount)
+#define IWMPMedia2_getAttributeName(This,lIndex,pbstrItemName) (This)->lpVtbl->getAttributeName(This,lIndex,pbstrItemName)
+#define IWMPMedia2_getItemInfo(This,bstrItemName,pbstrVal) (This)->lpVtbl->getItemInfo(This,bstrItemName,pbstrVal)
+#define IWMPMedia2_setItemInfo(This,bstrItemName,bstrVal) (This)->lpVtbl->setItemInfo(This,bstrItemName,bstrVal)
+#define IWMPMedia2_getItemInfoByAtom(This,lAtom,pbstrVal) (This)->lpVtbl->getItemInfoByAtom(This,lAtom,pbstrVal)
+#define IWMPMedia2_isMemberOf(This,pPlaylist,pvarfIsMemberOf) (This)->lpVtbl->isMemberOf(This,pPlaylist,pvarfIsMemberOf)
+#define IWMPMedia2_isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly) (This)->lpVtbl->isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly)
+/*** IWMPMedia2 methods ***/
+#define IWMPMedia2_get_error(This,out) (This)->lpVtbl->get_error(This,out)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPMedia2_QueryInterface(IWMPMedia2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPMedia2_AddRef(IWMPMedia2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPMedia2_Release(IWMPMedia2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPMedia2_GetTypeInfoCount(IWMPMedia2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPMedia2_GetTypeInfo(IWMPMedia2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPMedia2_GetIDsOfNames(IWMPMedia2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPMedia2_Invoke(IWMPMedia2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPMedia methods ***/
+static FORCEINLINE HRESULT IWMPMedia2_get_isIdentical(IWMPMedia2* This,IWMPMedia *pIWMPMedia,VARIANT_BOOL *pvbool) {
+    return This->lpVtbl->get_isIdentical(This,pIWMPMedia,pvbool);
+}
+static FORCEINLINE HRESULT IWMPMedia2_get_sourceURL(IWMPMedia2* This,BSTR *pbstrSourceURL) {
+    return This->lpVtbl->get_sourceURL(This,pbstrSourceURL);
+}
+static FORCEINLINE HRESULT IWMPMedia2_get_name(IWMPMedia2* This,BSTR *pbstrName) {
+    return This->lpVtbl->get_name(This,pbstrName);
+}
+static FORCEINLINE HRESULT IWMPMedia2_put_name(IWMPMedia2* This,BSTR pbstrName) {
+    return This->lpVtbl->put_name(This,pbstrName);
+}
+static FORCEINLINE HRESULT IWMPMedia2_get_imageSourceWidth(IWMPMedia2* This,LONG *pWidth) {
+    return This->lpVtbl->get_imageSourceWidth(This,pWidth);
+}
+static FORCEINLINE HRESULT IWMPMedia2_get_imageSourceHeight(IWMPMedia2* This,LONG *pHeight) {
+    return This->lpVtbl->get_imageSourceHeight(This,pHeight);
+}
+static FORCEINLINE HRESULT IWMPMedia2_get_markerCount(IWMPMedia2* This,LONG *pMarkerCount) {
+    return This->lpVtbl->get_markerCount(This,pMarkerCount);
+}
+static FORCEINLINE HRESULT IWMPMedia2_getMarkerTime(IWMPMedia2* This,LONG MarkerNum,double *pMarkerTime) {
+    return This->lpVtbl->getMarkerTime(This,MarkerNum,pMarkerTime);
+}
+static FORCEINLINE HRESULT IWMPMedia2_getMarkerName(IWMPMedia2* This,LONG MarkerNum,BSTR *pbstrMarkerName) {
+    return This->lpVtbl->getMarkerName(This,MarkerNum,pbstrMarkerName);
+}
+static FORCEINLINE HRESULT IWMPMedia2_get_duration(IWMPMedia2* This,double *pDuration) {
+    return This->lpVtbl->get_duration(This,pDuration);
+}
+static FORCEINLINE HRESULT IWMPMedia2_get_durationString(IWMPMedia2* This,BSTR *pbstrDuration) {
+    return This->lpVtbl->get_durationString(This,pbstrDuration);
+}
+static FORCEINLINE HRESULT IWMPMedia2_get_attributeCount(IWMPMedia2* This,LONG *plCount) {
+    return This->lpVtbl->get_attributeCount(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPMedia2_getAttributeName(IWMPMedia2* This,LONG lIndex,BSTR *pbstrItemName) {
+    return This->lpVtbl->getAttributeName(This,lIndex,pbstrItemName);
+}
+static FORCEINLINE HRESULT IWMPMedia2_getItemInfo(IWMPMedia2* This,BSTR bstrItemName,BSTR *pbstrVal) {
+    return This->lpVtbl->getItemInfo(This,bstrItemName,pbstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia2_setItemInfo(IWMPMedia2* This,BSTR bstrItemName,BSTR bstrVal) {
+    return This->lpVtbl->setItemInfo(This,bstrItemName,bstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia2_getItemInfoByAtom(IWMPMedia2* This,LONG lAtom,BSTR *pbstrVal) {
+    return This->lpVtbl->getItemInfoByAtom(This,lAtom,pbstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia2_isMemberOf(IWMPMedia2* This,IWMPPlaylist *pPlaylist,VARIANT_BOOL *pvarfIsMemberOf) {
+    return This->lpVtbl->isMemberOf(This,pPlaylist,pvarfIsMemberOf);
+}
+static FORCEINLINE HRESULT IWMPMedia2_isReadOnlyItem(IWMPMedia2* This,BSTR bstrItemName,VARIANT_BOOL *pvarfIsReadOnly) {
+    return This->lpVtbl->isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly);
+}
+/*** IWMPMedia2 methods ***/
+static FORCEINLINE HRESULT IWMPMedia2_get_error(IWMPMedia2* This,IWMPErrorItem **out) {
+    return This->lpVtbl->get_error(This,out);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPMedia2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPMedia3 interface
+ */
+#ifndef __IWMPMedia3_INTERFACE_DEFINED__
+#define __IWMPMedia3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPMedia3, 0xf118efc7, 0xf03a, 0x4fb4, 0x99,0xc9, 0x1c,0x02,0xa5,0xc1,0x06,0x5b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f118efc7-f03a-4fb4-99c9-1c02a5c1065b")
+IWMPMedia3 : public IWMPMedia2
+{
+    virtual HRESULT STDMETHODCALLTYPE getAttributeCountByType(
+        BSTR type,
+        BSTR language,
+        LONG *out) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getItemInfoByType(
+        BSTR type,
+        BSTR language,
+        LONG index,
+        VARIANT *out) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPMedia3, 0xf118efc7, 0xf03a, 0x4fb4, 0x99,0xc9, 0x1c,0x02,0xa5,0xc1,0x06,0x5b)
+#endif
+#else
+typedef struct IWMPMedia3Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPMedia3 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPMedia3 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPMedia3 *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPMedia3 *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPMedia3 *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPMedia3 *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPMedia3 *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPMedia methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_isIdentical)(
+        IWMPMedia3 *This,
+        IWMPMedia *pIWMPMedia,
+        VARIANT_BOOL *pvbool);
+
+    HRESULT (STDMETHODCALLTYPE *get_sourceURL)(
+        IWMPMedia3 *This,
+        BSTR *pbstrSourceURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_name)(
+        IWMPMedia3 *This,
+        BSTR *pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *put_name)(
+        IWMPMedia3 *This,
+        BSTR pbstrName);
+
+    HRESULT (STDMETHODCALLTYPE *get_imageSourceWidth)(
+        IWMPMedia3 *This,
+        LONG *pWidth);
+
+    HRESULT (STDMETHODCALLTYPE *get_imageSourceHeight)(
+        IWMPMedia3 *This,
+        LONG *pHeight);
+
+    HRESULT (STDMETHODCALLTYPE *get_markerCount)(
+        IWMPMedia3 *This,
+        LONG *pMarkerCount);
+
+    HRESULT (STDMETHODCALLTYPE *getMarkerTime)(
+        IWMPMedia3 *This,
+        LONG MarkerNum,
+        double *pMarkerTime);
+
+    HRESULT (STDMETHODCALLTYPE *getMarkerName)(
+        IWMPMedia3 *This,
+        LONG MarkerNum,
+        BSTR *pbstrMarkerName);
+
+    HRESULT (STDMETHODCALLTYPE *get_duration)(
+        IWMPMedia3 *This,
+        double *pDuration);
+
+    HRESULT (STDMETHODCALLTYPE *get_durationString)(
+        IWMPMedia3 *This,
+        BSTR *pbstrDuration);
+
+    HRESULT (STDMETHODCALLTYPE *get_attributeCount)(
+        IWMPMedia3 *This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *getAttributeName)(
+        IWMPMedia3 *This,
+        LONG lIndex,
+        BSTR *pbstrItemName);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfo)(
+        IWMPMedia3 *This,
+        BSTR bstrItemName,
+        BSTR *pbstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *setItemInfo)(
+        IWMPMedia3 *This,
+        BSTR bstrItemName,
+        BSTR bstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfoByAtom)(
+        IWMPMedia3 *This,
+        LONG lAtom,
+        BSTR *pbstrVal);
+
+    HRESULT (STDMETHODCALLTYPE *isMemberOf)(
+        IWMPMedia3 *This,
+        IWMPPlaylist *pPlaylist,
+        VARIANT_BOOL *pvarfIsMemberOf);
+
+    HRESULT (STDMETHODCALLTYPE *isReadOnlyItem)(
+        IWMPMedia3 *This,
+        BSTR bstrItemName,
+        VARIANT_BOOL *pvarfIsReadOnly);
+
+    /*** IWMPMedia2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_error)(
+        IWMPMedia3 *This,
+        IWMPErrorItem **out);
+
+    /*** IWMPMedia3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *getAttributeCountByType)(
+        IWMPMedia3 *This,
+        BSTR type,
+        BSTR language,
+        LONG *out);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfoByType)(
+        IWMPMedia3 *This,
+        BSTR type,
+        BSTR language,
+        LONG index,
+        VARIANT *out);
+
+    END_INTERFACE
+} IWMPMedia3Vtbl;
+
+interface IWMPMedia3 {
+    CONST_VTBL IWMPMedia3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPMedia3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPMedia3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPMedia3_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPMedia3_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPMedia3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPMedia3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPMedia3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPMedia methods ***/
+#define IWMPMedia3_get_isIdentical(This,pIWMPMedia,pvbool) (This)->lpVtbl->get_isIdentical(This,pIWMPMedia,pvbool)
+#define IWMPMedia3_get_sourceURL(This,pbstrSourceURL) (This)->lpVtbl->get_sourceURL(This,pbstrSourceURL)
+#define IWMPMedia3_get_name(This,pbstrName) (This)->lpVtbl->get_name(This,pbstrName)
+#define IWMPMedia3_put_name(This,pbstrName) (This)->lpVtbl->put_name(This,pbstrName)
+#define IWMPMedia3_get_imageSourceWidth(This,pWidth) (This)->lpVtbl->get_imageSourceWidth(This,pWidth)
+#define IWMPMedia3_get_imageSourceHeight(This,pHeight) (This)->lpVtbl->get_imageSourceHeight(This,pHeight)
+#define IWMPMedia3_get_markerCount(This,pMarkerCount) (This)->lpVtbl->get_markerCount(This,pMarkerCount)
+#define IWMPMedia3_getMarkerTime(This,MarkerNum,pMarkerTime) (This)->lpVtbl->getMarkerTime(This,MarkerNum,pMarkerTime)
+#define IWMPMedia3_getMarkerName(This,MarkerNum,pbstrMarkerName) (This)->lpVtbl->getMarkerName(This,MarkerNum,pbstrMarkerName)
+#define IWMPMedia3_get_duration(This,pDuration) (This)->lpVtbl->get_duration(This,pDuration)
+#define IWMPMedia3_get_durationString(This,pbstrDuration) (This)->lpVtbl->get_durationString(This,pbstrDuration)
+#define IWMPMedia3_get_attributeCount(This,plCount) (This)->lpVtbl->get_attributeCount(This,plCount)
+#define IWMPMedia3_getAttributeName(This,lIndex,pbstrItemName) (This)->lpVtbl->getAttributeName(This,lIndex,pbstrItemName)
+#define IWMPMedia3_getItemInfo(This,bstrItemName,pbstrVal) (This)->lpVtbl->getItemInfo(This,bstrItemName,pbstrVal)
+#define IWMPMedia3_setItemInfo(This,bstrItemName,bstrVal) (This)->lpVtbl->setItemInfo(This,bstrItemName,bstrVal)
+#define IWMPMedia3_getItemInfoByAtom(This,lAtom,pbstrVal) (This)->lpVtbl->getItemInfoByAtom(This,lAtom,pbstrVal)
+#define IWMPMedia3_isMemberOf(This,pPlaylist,pvarfIsMemberOf) (This)->lpVtbl->isMemberOf(This,pPlaylist,pvarfIsMemberOf)
+#define IWMPMedia3_isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly) (This)->lpVtbl->isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly)
+/*** IWMPMedia2 methods ***/
+#define IWMPMedia3_get_error(This,out) (This)->lpVtbl->get_error(This,out)
+/*** IWMPMedia3 methods ***/
+#define IWMPMedia3_getAttributeCountByType(This,type,language,out) (This)->lpVtbl->getAttributeCountByType(This,type,language,out)
+#define IWMPMedia3_getItemInfoByType(This,type,language,index,out) (This)->lpVtbl->getItemInfoByType(This,type,language,index,out)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPMedia3_QueryInterface(IWMPMedia3* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPMedia3_AddRef(IWMPMedia3* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPMedia3_Release(IWMPMedia3* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPMedia3_GetTypeInfoCount(IWMPMedia3* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPMedia3_GetTypeInfo(IWMPMedia3* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPMedia3_GetIDsOfNames(IWMPMedia3* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPMedia3_Invoke(IWMPMedia3* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPMedia methods ***/
+static FORCEINLINE HRESULT IWMPMedia3_get_isIdentical(IWMPMedia3* This,IWMPMedia *pIWMPMedia,VARIANT_BOOL *pvbool) {
+    return This->lpVtbl->get_isIdentical(This,pIWMPMedia,pvbool);
+}
+static FORCEINLINE HRESULT IWMPMedia3_get_sourceURL(IWMPMedia3* This,BSTR *pbstrSourceURL) {
+    return This->lpVtbl->get_sourceURL(This,pbstrSourceURL);
+}
+static FORCEINLINE HRESULT IWMPMedia3_get_name(IWMPMedia3* This,BSTR *pbstrName) {
+    return This->lpVtbl->get_name(This,pbstrName);
+}
+static FORCEINLINE HRESULT IWMPMedia3_put_name(IWMPMedia3* This,BSTR pbstrName) {
+    return This->lpVtbl->put_name(This,pbstrName);
+}
+static FORCEINLINE HRESULT IWMPMedia3_get_imageSourceWidth(IWMPMedia3* This,LONG *pWidth) {
+    return This->lpVtbl->get_imageSourceWidth(This,pWidth);
+}
+static FORCEINLINE HRESULT IWMPMedia3_get_imageSourceHeight(IWMPMedia3* This,LONG *pHeight) {
+    return This->lpVtbl->get_imageSourceHeight(This,pHeight);
+}
+static FORCEINLINE HRESULT IWMPMedia3_get_markerCount(IWMPMedia3* This,LONG *pMarkerCount) {
+    return This->lpVtbl->get_markerCount(This,pMarkerCount);
+}
+static FORCEINLINE HRESULT IWMPMedia3_getMarkerTime(IWMPMedia3* This,LONG MarkerNum,double *pMarkerTime) {
+    return This->lpVtbl->getMarkerTime(This,MarkerNum,pMarkerTime);
+}
+static FORCEINLINE HRESULT IWMPMedia3_getMarkerName(IWMPMedia3* This,LONG MarkerNum,BSTR *pbstrMarkerName) {
+    return This->lpVtbl->getMarkerName(This,MarkerNum,pbstrMarkerName);
+}
+static FORCEINLINE HRESULT IWMPMedia3_get_duration(IWMPMedia3* This,double *pDuration) {
+    return This->lpVtbl->get_duration(This,pDuration);
+}
+static FORCEINLINE HRESULT IWMPMedia3_get_durationString(IWMPMedia3* This,BSTR *pbstrDuration) {
+    return This->lpVtbl->get_durationString(This,pbstrDuration);
+}
+static FORCEINLINE HRESULT IWMPMedia3_get_attributeCount(IWMPMedia3* This,LONG *plCount) {
+    return This->lpVtbl->get_attributeCount(This,plCount);
+}
+static FORCEINLINE HRESULT IWMPMedia3_getAttributeName(IWMPMedia3* This,LONG lIndex,BSTR *pbstrItemName) {
+    return This->lpVtbl->getAttributeName(This,lIndex,pbstrItemName);
+}
+static FORCEINLINE HRESULT IWMPMedia3_getItemInfo(IWMPMedia3* This,BSTR bstrItemName,BSTR *pbstrVal) {
+    return This->lpVtbl->getItemInfo(This,bstrItemName,pbstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia3_setItemInfo(IWMPMedia3* This,BSTR bstrItemName,BSTR bstrVal) {
+    return This->lpVtbl->setItemInfo(This,bstrItemName,bstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia3_getItemInfoByAtom(IWMPMedia3* This,LONG lAtom,BSTR *pbstrVal) {
+    return This->lpVtbl->getItemInfoByAtom(This,lAtom,pbstrVal);
+}
+static FORCEINLINE HRESULT IWMPMedia3_isMemberOf(IWMPMedia3* This,IWMPPlaylist *pPlaylist,VARIANT_BOOL *pvarfIsMemberOf) {
+    return This->lpVtbl->isMemberOf(This,pPlaylist,pvarfIsMemberOf);
+}
+static FORCEINLINE HRESULT IWMPMedia3_isReadOnlyItem(IWMPMedia3* This,BSTR bstrItemName,VARIANT_BOOL *pvarfIsReadOnly) {
+    return This->lpVtbl->isReadOnlyItem(This,bstrItemName,pvarfIsReadOnly);
+}
+/*** IWMPMedia2 methods ***/
+static FORCEINLINE HRESULT IWMPMedia3_get_error(IWMPMedia3* This,IWMPErrorItem **out) {
+    return This->lpVtbl->get_error(This,out);
+}
+/*** IWMPMedia3 methods ***/
+static FORCEINLINE HRESULT IWMPMedia3_getAttributeCountByType(IWMPMedia3* This,BSTR type,BSTR language,LONG *out) {
+    return This->lpVtbl->getAttributeCountByType(This,type,language,out);
+}
+static FORCEINLINE HRESULT IWMPMedia3_getItemInfoByType(IWMPMedia3* This,BSTR type,BSTR language,LONG index,VARIANT *out) {
+    return This->lpVtbl->getItemInfoByType(This,type,language,index,out);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPMedia3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPError interface
+ */
+#ifndef __IWMPError_INTERFACE_DEFINED__
+#define __IWMPError_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPError, 0xa12dcf7d, 0x14ab, 0x4c1b, 0xa8,0xcd, 0x63,0x90,0x9f,0x06,0x02,0x5b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a12dcf7d-14ab-4c1b-a8cd-63909f06025b")
+IWMPError : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE clearErrorQueue(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_errorCount(
+        LONG *plNumErrors) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Item(
+        LONG dwIndex,
+        IWMPErrorItem **ppErrorItem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE webHelp(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPError, 0xa12dcf7d, 0x14ab, 0x4c1b, 0xa8,0xcd, 0x63,0x90,0x9f,0x06,0x02,0x5b)
+#endif
+#else
+typedef struct IWMPErrorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPError *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPError *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPError *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPError *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPError *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPError *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPError *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPError methods ***/
+    HRESULT (STDMETHODCALLTYPE *clearErrorQueue)(
+        IWMPError *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_errorCount)(
+        IWMPError *This,
+        LONG *plNumErrors);
+
+    HRESULT (STDMETHODCALLTYPE *get_Item)(
+        IWMPError *This,
+        LONG dwIndex,
+        IWMPErrorItem **ppErrorItem);
+
+    HRESULT (STDMETHODCALLTYPE *webHelp)(
+        IWMPError *This);
+
+    END_INTERFACE
+} IWMPErrorVtbl;
+
+interface IWMPError {
+    CONST_VTBL IWMPErrorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPError_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPError_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPError_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPError_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPError_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPError_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPError methods ***/
+#define IWMPError_clearErrorQueue(This) (This)->lpVtbl->clearErrorQueue(This)
+#define IWMPError_get_errorCount(This,plNumErrors) (This)->lpVtbl->get_errorCount(This,plNumErrors)
+#define IWMPError_get_Item(This,dwIndex,ppErrorItem) (This)->lpVtbl->get_Item(This,dwIndex,ppErrorItem)
+#define IWMPError_webHelp(This) (This)->lpVtbl->webHelp(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPError_QueryInterface(IWMPError* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPError_AddRef(IWMPError* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPError_Release(IWMPError* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPError_GetTypeInfoCount(IWMPError* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPError_GetTypeInfo(IWMPError* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPError_GetIDsOfNames(IWMPError* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPError_Invoke(IWMPError* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPError methods ***/
+static FORCEINLINE HRESULT IWMPError_clearErrorQueue(IWMPError* This) {
+    return This->lpVtbl->clearErrorQueue(This);
+}
+static FORCEINLINE HRESULT IWMPError_get_errorCount(IWMPError* This,LONG *plNumErrors) {
+    return This->lpVtbl->get_errorCount(This,plNumErrors);
+}
+static FORCEINLINE HRESULT IWMPError_get_Item(IWMPError* This,LONG dwIndex,IWMPErrorItem **ppErrorItem) {
+    return This->lpVtbl->get_Item(This,dwIndex,ppErrorItem);
+}
+static FORCEINLINE HRESULT IWMPError_webHelp(IWMPError* This) {
+    return This->lpVtbl->webHelp(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPError_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPPlayerApplication interface
+ */
+#ifndef __IWMPPlayerApplication_INTERFACE_DEFINED__
+#define __IWMPPlayerApplication_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPPlayerApplication, 0x40897764, 0xceab, 0x47be, 0xad,0x4a, 0x8e,0x28,0x53,0x7f,0x9b,0xbf);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("40897764-ceab-47be-ad4a-8e28537f9bbf")
+IWMPPlayerApplication : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE switchToPlayerApplication(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE switchToControl(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_playerDocked(
+        VARIANT_BOOL *pbPlayerDocked) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_hasDisplay(
+        VARIANT_BOOL *pbHasDisplay) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPPlayerApplication, 0x40897764, 0xceab, 0x47be, 0xad,0x4a, 0x8e,0x28,0x53,0x7f,0x9b,0xbf)
+#endif
+#else
+typedef struct IWMPPlayerApplicationVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPPlayerApplication *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPPlayerApplication *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPPlayerApplication *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPPlayerApplication *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPPlayerApplication *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPPlayerApplication *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPPlayerApplication *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPPlayerApplication methods ***/
+    HRESULT (STDMETHODCALLTYPE *switchToPlayerApplication)(
+        IWMPPlayerApplication *This);
+
+    HRESULT (STDMETHODCALLTYPE *switchToControl)(
+        IWMPPlayerApplication *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_playerDocked)(
+        IWMPPlayerApplication *This,
+        VARIANT_BOOL *pbPlayerDocked);
+
+    HRESULT (STDMETHODCALLTYPE *get_hasDisplay)(
+        IWMPPlayerApplication *This,
+        VARIANT_BOOL *pbHasDisplay);
+
+    END_INTERFACE
+} IWMPPlayerApplicationVtbl;
+
+interface IWMPPlayerApplication {
+    CONST_VTBL IWMPPlayerApplicationVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPPlayerApplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPPlayerApplication_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPPlayerApplication_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPPlayerApplication_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPPlayerApplication_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPPlayerApplication_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPPlayerApplication_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPPlayerApplication methods ***/
+#define IWMPPlayerApplication_switchToPlayerApplication(This) (This)->lpVtbl->switchToPlayerApplication(This)
+#define IWMPPlayerApplication_switchToControl(This) (This)->lpVtbl->switchToControl(This)
+#define IWMPPlayerApplication_get_playerDocked(This,pbPlayerDocked) (This)->lpVtbl->get_playerDocked(This,pbPlayerDocked)
+#define IWMPPlayerApplication_get_hasDisplay(This,pbHasDisplay) (This)->lpVtbl->get_hasDisplay(This,pbHasDisplay)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPPlayerApplication_QueryInterface(IWMPPlayerApplication* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPPlayerApplication_AddRef(IWMPPlayerApplication* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPPlayerApplication_Release(IWMPPlayerApplication* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPPlayerApplication_GetTypeInfoCount(IWMPPlayerApplication* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPPlayerApplication_GetTypeInfo(IWMPPlayerApplication* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPPlayerApplication_GetIDsOfNames(IWMPPlayerApplication* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPPlayerApplication_Invoke(IWMPPlayerApplication* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPPlayerApplication methods ***/
+static FORCEINLINE HRESULT IWMPPlayerApplication_switchToPlayerApplication(IWMPPlayerApplication* This) {
+    return This->lpVtbl->switchToPlayerApplication(This);
+}
+static FORCEINLINE HRESULT IWMPPlayerApplication_switchToControl(IWMPPlayerApplication* This) {
+    return This->lpVtbl->switchToControl(This);
+}
+static FORCEINLINE HRESULT IWMPPlayerApplication_get_playerDocked(IWMPPlayerApplication* This,VARIANT_BOOL *pbPlayerDocked) {
+    return This->lpVtbl->get_playerDocked(This,pbPlayerDocked);
+}
+static FORCEINLINE HRESULT IWMPPlayerApplication_get_hasDisplay(IWMPPlayerApplication* This,VARIANT_BOOL *pbHasDisplay) {
+    return This->lpVtbl->get_hasDisplay(This,pbHasDisplay);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPPlayerApplication_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPCore interface
+ */
+#ifndef __IWMPCore_INTERFACE_DEFINED__
+#define __IWMPCore_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPCore, 0xd84cca99, 0xcce2, 0x11d2, 0x9e,0xcc, 0x00,0x00,0xf8,0x08,0x59,0x81);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d84cca99-cce2-11d2-9ecc-0000f8085981")
+IWMPCore : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE close(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_URL(
+        BSTR *pbstrURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_URL(
+        BSTR pbstrURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_openState(
+        WMPOpenState *pwmpos) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_playState(
+        WMPPlayState *pwmpps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_controls(
+        IWMPControls **ppControl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_settings(
+        IWMPSettings **ppSettings) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_currentMedia(
+        IWMPMedia **ppMedia) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_currentMedia(
+        IWMPMedia *ppMedia) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_mediaCollection(
+        IWMPMediaCollection **ppMediaCollection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_playlistCollection(
+        IWMPPlaylistCollection **ppPlaylistCollection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_versionInfo(
+        BSTR *pbstrVersionInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE launchURL(
+        BSTR bstrURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_network(
+        IWMPNetwork **ppQNI) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_currentPlaylist(
+        IWMPPlaylist **ppPL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_currentPlaylist(
+        IWMPPlaylist *ppPL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_cdromCollection(
+        IWMPCdromCollection **ppCdromCollection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_closedCaption(
+        IWMPClosedCaption **ppClosedCaption) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_isOnline(
+        VARIANT_BOOL *pfOnline) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Error(
+        IWMPError **ppError) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_status(
+        BSTR *pbstrStatus) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPCore, 0xd84cca99, 0xcce2, 0x11d2, 0x9e,0xcc, 0x00,0x00,0xf8,0x08,0x59,0x81)
+#endif
+#else
+typedef struct IWMPCoreVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPCore *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPCore *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPCore *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPCore *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPCore *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPCore *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPCore *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPCore methods ***/
+    HRESULT (STDMETHODCALLTYPE *close)(
+        IWMPCore *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_URL)(
+        IWMPCore *This,
+        BSTR *pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *put_URL)(
+        IWMPCore *This,
+        BSTR pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_openState)(
+        IWMPCore *This,
+        WMPOpenState *pwmpos);
+
+    HRESULT (STDMETHODCALLTYPE *get_playState)(
+        IWMPCore *This,
+        WMPPlayState *pwmpps);
+
+    HRESULT (STDMETHODCALLTYPE *get_controls)(
+        IWMPCore *This,
+        IWMPControls **ppControl);
+
+    HRESULT (STDMETHODCALLTYPE *get_settings)(
+        IWMPCore *This,
+        IWMPSettings **ppSettings);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentMedia)(
+        IWMPCore *This,
+        IWMPMedia **ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentMedia)(
+        IWMPCore *This,
+        IWMPMedia *ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *get_mediaCollection)(
+        IWMPCore *This,
+        IWMPMediaCollection **ppMediaCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_playlistCollection)(
+        IWMPCore *This,
+        IWMPPlaylistCollection **ppPlaylistCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_versionInfo)(
+        IWMPCore *This,
+        BSTR *pbstrVersionInfo);
+
+    HRESULT (STDMETHODCALLTYPE *launchURL)(
+        IWMPCore *This,
+        BSTR bstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_network)(
+        IWMPCore *This,
+        IWMPNetwork **ppQNI);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPlaylist)(
+        IWMPCore *This,
+        IWMPPlaylist **ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentPlaylist)(
+        IWMPCore *This,
+        IWMPPlaylist *ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *get_cdromCollection)(
+        IWMPCore *This,
+        IWMPCdromCollection **ppCdromCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_closedCaption)(
+        IWMPCore *This,
+        IWMPClosedCaption **ppClosedCaption);
+
+    HRESULT (STDMETHODCALLTYPE *get_isOnline)(
+        IWMPCore *This,
+        VARIANT_BOOL *pfOnline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Error)(
+        IWMPCore *This,
+        IWMPError **ppError);
+
+    HRESULT (STDMETHODCALLTYPE *get_status)(
+        IWMPCore *This,
+        BSTR *pbstrStatus);
+
+    END_INTERFACE
+} IWMPCoreVtbl;
+
+interface IWMPCore {
+    CONST_VTBL IWMPCoreVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPCore_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPCore_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPCore_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPCore_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPCore_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPCore_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPCore_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPCore methods ***/
+#define IWMPCore_close(This) (This)->lpVtbl->close(This)
+#define IWMPCore_get_URL(This,pbstrURL) (This)->lpVtbl->get_URL(This,pbstrURL)
+#define IWMPCore_put_URL(This,pbstrURL) (This)->lpVtbl->put_URL(This,pbstrURL)
+#define IWMPCore_get_openState(This,pwmpos) (This)->lpVtbl->get_openState(This,pwmpos)
+#define IWMPCore_get_playState(This,pwmpps) (This)->lpVtbl->get_playState(This,pwmpps)
+#define IWMPCore_get_controls(This,ppControl) (This)->lpVtbl->get_controls(This,ppControl)
+#define IWMPCore_get_settings(This,ppSettings) (This)->lpVtbl->get_settings(This,ppSettings)
+#define IWMPCore_get_currentMedia(This,ppMedia) (This)->lpVtbl->get_currentMedia(This,ppMedia)
+#define IWMPCore_put_currentMedia(This,ppMedia) (This)->lpVtbl->put_currentMedia(This,ppMedia)
+#define IWMPCore_get_mediaCollection(This,ppMediaCollection) (This)->lpVtbl->get_mediaCollection(This,ppMediaCollection)
+#define IWMPCore_get_playlistCollection(This,ppPlaylistCollection) (This)->lpVtbl->get_playlistCollection(This,ppPlaylistCollection)
+#define IWMPCore_get_versionInfo(This,pbstrVersionInfo) (This)->lpVtbl->get_versionInfo(This,pbstrVersionInfo)
+#define IWMPCore_launchURL(This,bstrURL) (This)->lpVtbl->launchURL(This,bstrURL)
+#define IWMPCore_get_network(This,ppQNI) (This)->lpVtbl->get_network(This,ppQNI)
+#define IWMPCore_get_currentPlaylist(This,ppPL) (This)->lpVtbl->get_currentPlaylist(This,ppPL)
+#define IWMPCore_put_currentPlaylist(This,ppPL) (This)->lpVtbl->put_currentPlaylist(This,ppPL)
+#define IWMPCore_get_cdromCollection(This,ppCdromCollection) (This)->lpVtbl->get_cdromCollection(This,ppCdromCollection)
+#define IWMPCore_get_closedCaption(This,ppClosedCaption) (This)->lpVtbl->get_closedCaption(This,ppClosedCaption)
+#define IWMPCore_get_isOnline(This,pfOnline) (This)->lpVtbl->get_isOnline(This,pfOnline)
+#define IWMPCore_get_Error(This,ppError) (This)->lpVtbl->get_Error(This,ppError)
+#define IWMPCore_get_status(This,pbstrStatus) (This)->lpVtbl->get_status(This,pbstrStatus)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPCore_QueryInterface(IWMPCore* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPCore_AddRef(IWMPCore* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPCore_Release(IWMPCore* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPCore_GetTypeInfoCount(IWMPCore* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPCore_GetTypeInfo(IWMPCore* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPCore_GetIDsOfNames(IWMPCore* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPCore_Invoke(IWMPCore* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPCore methods ***/
+static FORCEINLINE HRESULT IWMPCore_close(IWMPCore* This) {
+    return This->lpVtbl->close(This);
+}
+static FORCEINLINE HRESULT IWMPCore_get_URL(IWMPCore* This,BSTR *pbstrURL) {
+    return This->lpVtbl->get_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore_put_URL(IWMPCore* This,BSTR pbstrURL) {
+    return This->lpVtbl->put_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore_get_openState(IWMPCore* This,WMPOpenState *pwmpos) {
+    return This->lpVtbl->get_openState(This,pwmpos);
+}
+static FORCEINLINE HRESULT IWMPCore_get_playState(IWMPCore* This,WMPPlayState *pwmpps) {
+    return This->lpVtbl->get_playState(This,pwmpps);
+}
+static FORCEINLINE HRESULT IWMPCore_get_controls(IWMPCore* This,IWMPControls **ppControl) {
+    return This->lpVtbl->get_controls(This,ppControl);
+}
+static FORCEINLINE HRESULT IWMPCore_get_settings(IWMPCore* This,IWMPSettings **ppSettings) {
+    return This->lpVtbl->get_settings(This,ppSettings);
+}
+static FORCEINLINE HRESULT IWMPCore_get_currentMedia(IWMPCore* This,IWMPMedia **ppMedia) {
+    return This->lpVtbl->get_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPCore_put_currentMedia(IWMPCore* This,IWMPMedia *ppMedia) {
+    return This->lpVtbl->put_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPCore_get_mediaCollection(IWMPCore* This,IWMPMediaCollection **ppMediaCollection) {
+    return This->lpVtbl->get_mediaCollection(This,ppMediaCollection);
+}
+static FORCEINLINE HRESULT IWMPCore_get_playlistCollection(IWMPCore* This,IWMPPlaylistCollection **ppPlaylistCollection) {
+    return This->lpVtbl->get_playlistCollection(This,ppPlaylistCollection);
+}
+static FORCEINLINE HRESULT IWMPCore_get_versionInfo(IWMPCore* This,BSTR *pbstrVersionInfo) {
+    return This->lpVtbl->get_versionInfo(This,pbstrVersionInfo);
+}
+static FORCEINLINE HRESULT IWMPCore_launchURL(IWMPCore* This,BSTR bstrURL) {
+    return This->lpVtbl->launchURL(This,bstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore_get_network(IWMPCore* This,IWMPNetwork **ppQNI) {
+    return This->lpVtbl->get_network(This,ppQNI);
+}
+static FORCEINLINE HRESULT IWMPCore_get_currentPlaylist(IWMPCore* This,IWMPPlaylist **ppPL) {
+    return This->lpVtbl->get_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPCore_put_currentPlaylist(IWMPCore* This,IWMPPlaylist *ppPL) {
+    return This->lpVtbl->put_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPCore_get_cdromCollection(IWMPCore* This,IWMPCdromCollection **ppCdromCollection) {
+    return This->lpVtbl->get_cdromCollection(This,ppCdromCollection);
+}
+static FORCEINLINE HRESULT IWMPCore_get_closedCaption(IWMPCore* This,IWMPClosedCaption **ppClosedCaption) {
+    return This->lpVtbl->get_closedCaption(This,ppClosedCaption);
+}
+static FORCEINLINE HRESULT IWMPCore_get_isOnline(IWMPCore* This,VARIANT_BOOL *pfOnline) {
+    return This->lpVtbl->get_isOnline(This,pfOnline);
+}
+static FORCEINLINE HRESULT IWMPCore_get_Error(IWMPCore* This,IWMPError **ppError) {
+    return This->lpVtbl->get_Error(This,ppError);
+}
+static FORCEINLINE HRESULT IWMPCore_get_status(IWMPCore* This,BSTR *pbstrStatus) {
+    return This->lpVtbl->get_status(This,pbstrStatus);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPCore_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPCore2 interface
+ */
+#ifndef __IWMPCore2_INTERFACE_DEFINED__
+#define __IWMPCore2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPCore2, 0xbc17e5b7, 0x7561, 0x4c18, 0xbb,0x90, 0x17,0xd4,0x85,0x77,0x56,0x59);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bc17e5b7-7561-4c18-bb90-17d485775659")
+IWMPCore2 : public IWMPCore
+{
+    virtual HRESULT STDMETHODCALLTYPE get_dvd(
+        IWMPDVD **ppDVD) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPCore2, 0xbc17e5b7, 0x7561, 0x4c18, 0xbb,0x90, 0x17,0xd4,0x85,0x77,0x56,0x59)
+#endif
+#else
+typedef struct IWMPCore2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPCore2 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPCore2 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPCore2 *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPCore2 *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPCore2 *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPCore2 *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPCore2 *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPCore methods ***/
+    HRESULT (STDMETHODCALLTYPE *close)(
+        IWMPCore2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_URL)(
+        IWMPCore2 *This,
+        BSTR *pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *put_URL)(
+        IWMPCore2 *This,
+        BSTR pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_openState)(
+        IWMPCore2 *This,
+        WMPOpenState *pwmpos);
+
+    HRESULT (STDMETHODCALLTYPE *get_playState)(
+        IWMPCore2 *This,
+        WMPPlayState *pwmpps);
+
+    HRESULT (STDMETHODCALLTYPE *get_controls)(
+        IWMPCore2 *This,
+        IWMPControls **ppControl);
+
+    HRESULT (STDMETHODCALLTYPE *get_settings)(
+        IWMPCore2 *This,
+        IWMPSettings **ppSettings);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentMedia)(
+        IWMPCore2 *This,
+        IWMPMedia **ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentMedia)(
+        IWMPCore2 *This,
+        IWMPMedia *ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *get_mediaCollection)(
+        IWMPCore2 *This,
+        IWMPMediaCollection **ppMediaCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_playlistCollection)(
+        IWMPCore2 *This,
+        IWMPPlaylistCollection **ppPlaylistCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_versionInfo)(
+        IWMPCore2 *This,
+        BSTR *pbstrVersionInfo);
+
+    HRESULT (STDMETHODCALLTYPE *launchURL)(
+        IWMPCore2 *This,
+        BSTR bstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_network)(
+        IWMPCore2 *This,
+        IWMPNetwork **ppQNI);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPlaylist)(
+        IWMPCore2 *This,
+        IWMPPlaylist **ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentPlaylist)(
+        IWMPCore2 *This,
+        IWMPPlaylist *ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *get_cdromCollection)(
+        IWMPCore2 *This,
+        IWMPCdromCollection **ppCdromCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_closedCaption)(
+        IWMPCore2 *This,
+        IWMPClosedCaption **ppClosedCaption);
+
+    HRESULT (STDMETHODCALLTYPE *get_isOnline)(
+        IWMPCore2 *This,
+        VARIANT_BOOL *pfOnline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Error)(
+        IWMPCore2 *This,
+        IWMPError **ppError);
+
+    HRESULT (STDMETHODCALLTYPE *get_status)(
+        IWMPCore2 *This,
+        BSTR *pbstrStatus);
+
+    /*** IWMPCore2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_dvd)(
+        IWMPCore2 *This,
+        IWMPDVD **ppDVD);
+
+    END_INTERFACE
+} IWMPCore2Vtbl;
+
+interface IWMPCore2 {
+    CONST_VTBL IWMPCore2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPCore2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPCore2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPCore2_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPCore2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPCore2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPCore2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPCore2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPCore methods ***/
+#define IWMPCore2_close(This) (This)->lpVtbl->close(This)
+#define IWMPCore2_get_URL(This,pbstrURL) (This)->lpVtbl->get_URL(This,pbstrURL)
+#define IWMPCore2_put_URL(This,pbstrURL) (This)->lpVtbl->put_URL(This,pbstrURL)
+#define IWMPCore2_get_openState(This,pwmpos) (This)->lpVtbl->get_openState(This,pwmpos)
+#define IWMPCore2_get_playState(This,pwmpps) (This)->lpVtbl->get_playState(This,pwmpps)
+#define IWMPCore2_get_controls(This,ppControl) (This)->lpVtbl->get_controls(This,ppControl)
+#define IWMPCore2_get_settings(This,ppSettings) (This)->lpVtbl->get_settings(This,ppSettings)
+#define IWMPCore2_get_currentMedia(This,ppMedia) (This)->lpVtbl->get_currentMedia(This,ppMedia)
+#define IWMPCore2_put_currentMedia(This,ppMedia) (This)->lpVtbl->put_currentMedia(This,ppMedia)
+#define IWMPCore2_get_mediaCollection(This,ppMediaCollection) (This)->lpVtbl->get_mediaCollection(This,ppMediaCollection)
+#define IWMPCore2_get_playlistCollection(This,ppPlaylistCollection) (This)->lpVtbl->get_playlistCollection(This,ppPlaylistCollection)
+#define IWMPCore2_get_versionInfo(This,pbstrVersionInfo) (This)->lpVtbl->get_versionInfo(This,pbstrVersionInfo)
+#define IWMPCore2_launchURL(This,bstrURL) (This)->lpVtbl->launchURL(This,bstrURL)
+#define IWMPCore2_get_network(This,ppQNI) (This)->lpVtbl->get_network(This,ppQNI)
+#define IWMPCore2_get_currentPlaylist(This,ppPL) (This)->lpVtbl->get_currentPlaylist(This,ppPL)
+#define IWMPCore2_put_currentPlaylist(This,ppPL) (This)->lpVtbl->put_currentPlaylist(This,ppPL)
+#define IWMPCore2_get_cdromCollection(This,ppCdromCollection) (This)->lpVtbl->get_cdromCollection(This,ppCdromCollection)
+#define IWMPCore2_get_closedCaption(This,ppClosedCaption) (This)->lpVtbl->get_closedCaption(This,ppClosedCaption)
+#define IWMPCore2_get_isOnline(This,pfOnline) (This)->lpVtbl->get_isOnline(This,pfOnline)
+#define IWMPCore2_get_Error(This,ppError) (This)->lpVtbl->get_Error(This,ppError)
+#define IWMPCore2_get_status(This,pbstrStatus) (This)->lpVtbl->get_status(This,pbstrStatus)
+/*** IWMPCore2 methods ***/
+#define IWMPCore2_get_dvd(This,ppDVD) (This)->lpVtbl->get_dvd(This,ppDVD)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPCore2_QueryInterface(IWMPCore2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPCore2_AddRef(IWMPCore2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPCore2_Release(IWMPCore2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPCore2_GetTypeInfoCount(IWMPCore2* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPCore2_GetTypeInfo(IWMPCore2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPCore2_GetIDsOfNames(IWMPCore2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPCore2_Invoke(IWMPCore2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPCore methods ***/
+static FORCEINLINE HRESULT IWMPCore2_close(IWMPCore2* This) {
+    return This->lpVtbl->close(This);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_URL(IWMPCore2* This,BSTR *pbstrURL) {
+    return This->lpVtbl->get_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore2_put_URL(IWMPCore2* This,BSTR pbstrURL) {
+    return This->lpVtbl->put_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_openState(IWMPCore2* This,WMPOpenState *pwmpos) {
+    return This->lpVtbl->get_openState(This,pwmpos);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_playState(IWMPCore2* This,WMPPlayState *pwmpps) {
+    return This->lpVtbl->get_playState(This,pwmpps);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_controls(IWMPCore2* This,IWMPControls **ppControl) {
+    return This->lpVtbl->get_controls(This,ppControl);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_settings(IWMPCore2* This,IWMPSettings **ppSettings) {
+    return This->lpVtbl->get_settings(This,ppSettings);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_currentMedia(IWMPCore2* This,IWMPMedia **ppMedia) {
+    return This->lpVtbl->get_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPCore2_put_currentMedia(IWMPCore2* This,IWMPMedia *ppMedia) {
+    return This->lpVtbl->put_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_mediaCollection(IWMPCore2* This,IWMPMediaCollection **ppMediaCollection) {
+    return This->lpVtbl->get_mediaCollection(This,ppMediaCollection);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_playlistCollection(IWMPCore2* This,IWMPPlaylistCollection **ppPlaylistCollection) {
+    return This->lpVtbl->get_playlistCollection(This,ppPlaylistCollection);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_versionInfo(IWMPCore2* This,BSTR *pbstrVersionInfo) {
+    return This->lpVtbl->get_versionInfo(This,pbstrVersionInfo);
+}
+static FORCEINLINE HRESULT IWMPCore2_launchURL(IWMPCore2* This,BSTR bstrURL) {
+    return This->lpVtbl->launchURL(This,bstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_network(IWMPCore2* This,IWMPNetwork **ppQNI) {
+    return This->lpVtbl->get_network(This,ppQNI);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_currentPlaylist(IWMPCore2* This,IWMPPlaylist **ppPL) {
+    return This->lpVtbl->get_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPCore2_put_currentPlaylist(IWMPCore2* This,IWMPPlaylist *ppPL) {
+    return This->lpVtbl->put_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_cdromCollection(IWMPCore2* This,IWMPCdromCollection **ppCdromCollection) {
+    return This->lpVtbl->get_cdromCollection(This,ppCdromCollection);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_closedCaption(IWMPCore2* This,IWMPClosedCaption **ppClosedCaption) {
+    return This->lpVtbl->get_closedCaption(This,ppClosedCaption);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_isOnline(IWMPCore2* This,VARIANT_BOOL *pfOnline) {
+    return This->lpVtbl->get_isOnline(This,pfOnline);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_Error(IWMPCore2* This,IWMPError **ppError) {
+    return This->lpVtbl->get_Error(This,ppError);
+}
+static FORCEINLINE HRESULT IWMPCore2_get_status(IWMPCore2* This,BSTR *pbstrStatus) {
+    return This->lpVtbl->get_status(This,pbstrStatus);
+}
+/*** IWMPCore2 methods ***/
+static FORCEINLINE HRESULT IWMPCore2_get_dvd(IWMPCore2* This,IWMPDVD **ppDVD) {
+    return This->lpVtbl->get_dvd(This,ppDVD);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPCore2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPCore3 interface
+ */
+#ifndef __IWMPCore3_INTERFACE_DEFINED__
+#define __IWMPCore3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPCore3, 0x7587c667, 0x628f, 0x499f, 0x88,0xe7, 0x6a,0x6f,0x4e,0x88,0x84,0x64);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("7587c667-628f-499f-88e7-6a6f4e888464")
+IWMPCore3 : public IWMPCore2
+{
+    virtual HRESULT STDMETHODCALLTYPE newPlaylist(
+        BSTR bstrName,
+        BSTR bstrURL,
+        IWMPPlaylist **ppPlaylist) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE newMedia(
+        BSTR bstrURL,
+        IWMPMedia **ppMedia) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPCore3, 0x7587c667, 0x628f, 0x499f, 0x88,0xe7, 0x6a,0x6f,0x4e,0x88,0x84,0x64)
+#endif
+#else
+typedef struct IWMPCore3Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPCore3 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPCore3 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPCore3 *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPCore3 *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPCore3 *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPCore3 *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPCore3 *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPCore methods ***/
+    HRESULT (STDMETHODCALLTYPE *close)(
+        IWMPCore3 *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_URL)(
+        IWMPCore3 *This,
+        BSTR *pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *put_URL)(
+        IWMPCore3 *This,
+        BSTR pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_openState)(
+        IWMPCore3 *This,
+        WMPOpenState *pwmpos);
+
+    HRESULT (STDMETHODCALLTYPE *get_playState)(
+        IWMPCore3 *This,
+        WMPPlayState *pwmpps);
+
+    HRESULT (STDMETHODCALLTYPE *get_controls)(
+        IWMPCore3 *This,
+        IWMPControls **ppControl);
+
+    HRESULT (STDMETHODCALLTYPE *get_settings)(
+        IWMPCore3 *This,
+        IWMPSettings **ppSettings);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentMedia)(
+        IWMPCore3 *This,
+        IWMPMedia **ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentMedia)(
+        IWMPCore3 *This,
+        IWMPMedia *ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *get_mediaCollection)(
+        IWMPCore3 *This,
+        IWMPMediaCollection **ppMediaCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_playlistCollection)(
+        IWMPCore3 *This,
+        IWMPPlaylistCollection **ppPlaylistCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_versionInfo)(
+        IWMPCore3 *This,
+        BSTR *pbstrVersionInfo);
+
+    HRESULT (STDMETHODCALLTYPE *launchURL)(
+        IWMPCore3 *This,
+        BSTR bstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_network)(
+        IWMPCore3 *This,
+        IWMPNetwork **ppQNI);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPlaylist)(
+        IWMPCore3 *This,
+        IWMPPlaylist **ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentPlaylist)(
+        IWMPCore3 *This,
+        IWMPPlaylist *ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *get_cdromCollection)(
+        IWMPCore3 *This,
+        IWMPCdromCollection **ppCdromCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_closedCaption)(
+        IWMPCore3 *This,
+        IWMPClosedCaption **ppClosedCaption);
+
+    HRESULT (STDMETHODCALLTYPE *get_isOnline)(
+        IWMPCore3 *This,
+        VARIANT_BOOL *pfOnline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Error)(
+        IWMPCore3 *This,
+        IWMPError **ppError);
+
+    HRESULT (STDMETHODCALLTYPE *get_status)(
+        IWMPCore3 *This,
+        BSTR *pbstrStatus);
+
+    /*** IWMPCore2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_dvd)(
+        IWMPCore3 *This,
+        IWMPDVD **ppDVD);
+
+    /*** IWMPCore3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *newPlaylist)(
+        IWMPCore3 *This,
+        BSTR bstrName,
+        BSTR bstrURL,
+        IWMPPlaylist **ppPlaylist);
+
+    HRESULT (STDMETHODCALLTYPE *newMedia)(
+        IWMPCore3 *This,
+        BSTR bstrURL,
+        IWMPMedia **ppMedia);
+
+    END_INTERFACE
+} IWMPCore3Vtbl;
+
+interface IWMPCore3 {
+    CONST_VTBL IWMPCore3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPCore3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPCore3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPCore3_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPCore3_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPCore3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPCore3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPCore3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPCore methods ***/
+#define IWMPCore3_close(This) (This)->lpVtbl->close(This)
+#define IWMPCore3_get_URL(This,pbstrURL) (This)->lpVtbl->get_URL(This,pbstrURL)
+#define IWMPCore3_put_URL(This,pbstrURL) (This)->lpVtbl->put_URL(This,pbstrURL)
+#define IWMPCore3_get_openState(This,pwmpos) (This)->lpVtbl->get_openState(This,pwmpos)
+#define IWMPCore3_get_playState(This,pwmpps) (This)->lpVtbl->get_playState(This,pwmpps)
+#define IWMPCore3_get_controls(This,ppControl) (This)->lpVtbl->get_controls(This,ppControl)
+#define IWMPCore3_get_settings(This,ppSettings) (This)->lpVtbl->get_settings(This,ppSettings)
+#define IWMPCore3_get_currentMedia(This,ppMedia) (This)->lpVtbl->get_currentMedia(This,ppMedia)
+#define IWMPCore3_put_currentMedia(This,ppMedia) (This)->lpVtbl->put_currentMedia(This,ppMedia)
+#define IWMPCore3_get_mediaCollection(This,ppMediaCollection) (This)->lpVtbl->get_mediaCollection(This,ppMediaCollection)
+#define IWMPCore3_get_playlistCollection(This,ppPlaylistCollection) (This)->lpVtbl->get_playlistCollection(This,ppPlaylistCollection)
+#define IWMPCore3_get_versionInfo(This,pbstrVersionInfo) (This)->lpVtbl->get_versionInfo(This,pbstrVersionInfo)
+#define IWMPCore3_launchURL(This,bstrURL) (This)->lpVtbl->launchURL(This,bstrURL)
+#define IWMPCore3_get_network(This,ppQNI) (This)->lpVtbl->get_network(This,ppQNI)
+#define IWMPCore3_get_currentPlaylist(This,ppPL) (This)->lpVtbl->get_currentPlaylist(This,ppPL)
+#define IWMPCore3_put_currentPlaylist(This,ppPL) (This)->lpVtbl->put_currentPlaylist(This,ppPL)
+#define IWMPCore3_get_cdromCollection(This,ppCdromCollection) (This)->lpVtbl->get_cdromCollection(This,ppCdromCollection)
+#define IWMPCore3_get_closedCaption(This,ppClosedCaption) (This)->lpVtbl->get_closedCaption(This,ppClosedCaption)
+#define IWMPCore3_get_isOnline(This,pfOnline) (This)->lpVtbl->get_isOnline(This,pfOnline)
+#define IWMPCore3_get_Error(This,ppError) (This)->lpVtbl->get_Error(This,ppError)
+#define IWMPCore3_get_status(This,pbstrStatus) (This)->lpVtbl->get_status(This,pbstrStatus)
+/*** IWMPCore2 methods ***/
+#define IWMPCore3_get_dvd(This,ppDVD) (This)->lpVtbl->get_dvd(This,ppDVD)
+/*** IWMPCore3 methods ***/
+#define IWMPCore3_newPlaylist(This,bstrName,bstrURL,ppPlaylist) (This)->lpVtbl->newPlaylist(This,bstrName,bstrURL,ppPlaylist)
+#define IWMPCore3_newMedia(This,bstrURL,ppMedia) (This)->lpVtbl->newMedia(This,bstrURL,ppMedia)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPCore3_QueryInterface(IWMPCore3* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPCore3_AddRef(IWMPCore3* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPCore3_Release(IWMPCore3* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPCore3_GetTypeInfoCount(IWMPCore3* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPCore3_GetTypeInfo(IWMPCore3* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPCore3_GetIDsOfNames(IWMPCore3* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPCore3_Invoke(IWMPCore3* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPCore methods ***/
+static FORCEINLINE HRESULT IWMPCore3_close(IWMPCore3* This) {
+    return This->lpVtbl->close(This);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_URL(IWMPCore3* This,BSTR *pbstrURL) {
+    return This->lpVtbl->get_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore3_put_URL(IWMPCore3* This,BSTR pbstrURL) {
+    return This->lpVtbl->put_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_openState(IWMPCore3* This,WMPOpenState *pwmpos) {
+    return This->lpVtbl->get_openState(This,pwmpos);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_playState(IWMPCore3* This,WMPPlayState *pwmpps) {
+    return This->lpVtbl->get_playState(This,pwmpps);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_controls(IWMPCore3* This,IWMPControls **ppControl) {
+    return This->lpVtbl->get_controls(This,ppControl);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_settings(IWMPCore3* This,IWMPSettings **ppSettings) {
+    return This->lpVtbl->get_settings(This,ppSettings);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_currentMedia(IWMPCore3* This,IWMPMedia **ppMedia) {
+    return This->lpVtbl->get_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPCore3_put_currentMedia(IWMPCore3* This,IWMPMedia *ppMedia) {
+    return This->lpVtbl->put_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_mediaCollection(IWMPCore3* This,IWMPMediaCollection **ppMediaCollection) {
+    return This->lpVtbl->get_mediaCollection(This,ppMediaCollection);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_playlistCollection(IWMPCore3* This,IWMPPlaylistCollection **ppPlaylistCollection) {
+    return This->lpVtbl->get_playlistCollection(This,ppPlaylistCollection);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_versionInfo(IWMPCore3* This,BSTR *pbstrVersionInfo) {
+    return This->lpVtbl->get_versionInfo(This,pbstrVersionInfo);
+}
+static FORCEINLINE HRESULT IWMPCore3_launchURL(IWMPCore3* This,BSTR bstrURL) {
+    return This->lpVtbl->launchURL(This,bstrURL);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_network(IWMPCore3* This,IWMPNetwork **ppQNI) {
+    return This->lpVtbl->get_network(This,ppQNI);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_currentPlaylist(IWMPCore3* This,IWMPPlaylist **ppPL) {
+    return This->lpVtbl->get_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPCore3_put_currentPlaylist(IWMPCore3* This,IWMPPlaylist *ppPL) {
+    return This->lpVtbl->put_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_cdromCollection(IWMPCore3* This,IWMPCdromCollection **ppCdromCollection) {
+    return This->lpVtbl->get_cdromCollection(This,ppCdromCollection);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_closedCaption(IWMPCore3* This,IWMPClosedCaption **ppClosedCaption) {
+    return This->lpVtbl->get_closedCaption(This,ppClosedCaption);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_isOnline(IWMPCore3* This,VARIANT_BOOL *pfOnline) {
+    return This->lpVtbl->get_isOnline(This,pfOnline);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_Error(IWMPCore3* This,IWMPError **ppError) {
+    return This->lpVtbl->get_Error(This,ppError);
+}
+static FORCEINLINE HRESULT IWMPCore3_get_status(IWMPCore3* This,BSTR *pbstrStatus) {
+    return This->lpVtbl->get_status(This,pbstrStatus);
+}
+/*** IWMPCore2 methods ***/
+static FORCEINLINE HRESULT IWMPCore3_get_dvd(IWMPCore3* This,IWMPDVD **ppDVD) {
+    return This->lpVtbl->get_dvd(This,ppDVD);
+}
+/*** IWMPCore3 methods ***/
+static FORCEINLINE HRESULT IWMPCore3_newPlaylist(IWMPCore3* This,BSTR bstrName,BSTR bstrURL,IWMPPlaylist **ppPlaylist) {
+    return This->lpVtbl->newPlaylist(This,bstrName,bstrURL,ppPlaylist);
+}
+static FORCEINLINE HRESULT IWMPCore3_newMedia(IWMPCore3* This,BSTR bstrURL,IWMPMedia **ppMedia) {
+    return This->lpVtbl->newMedia(This,bstrURL,ppMedia);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPCore3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPPlayer4 interface
+ */
+#ifndef __IWMPPlayer4_INTERFACE_DEFINED__
+#define __IWMPPlayer4_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPPlayer4, 0x6c497d62, 0x8919, 0x413c, 0x82,0xdb, 0xe9,0x35,0xfb,0x3e,0xc5,0x84);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6c497d62-8919-413c-82db-e935fb3ec584")
+IWMPPlayer4 : public IWMPCore3
+{
+    virtual HRESULT STDMETHODCALLTYPE get_enabled(
+        VARIANT_BOOL *pbEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_enabled(
+        VARIANT_BOOL pbEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_fullScreen(
+        VARIANT_BOOL *pbFullScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_fullScreen(
+        VARIANT_BOOL pbFullScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_enableContextMenu(
+        VARIANT_BOOL *pbEnableContextMenu) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_enableContextMenu(
+        VARIANT_BOOL pbEnableContextMenu) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_uiMode(
+        BSTR pbstrMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_uiMode(
+        BSTR *pbstrMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_stretchToFit(
+        VARIANT_BOOL *pbEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_stretchToFit(
+        VARIANT_BOOL pbEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_windowlessVideo(
+        VARIANT_BOOL *pbEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_windowlessVideo(
+        VARIANT_BOOL pbEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_isRemote(
+        VARIANT_BOOL *pvarfIsRemote) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_playerApplication(
+        IWMPPlayerApplication **ppIWMPPlayerApplication) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE openPlayer(
+        BSTR bstrURL) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPPlayer4, 0x6c497d62, 0x8919, 0x413c, 0x82,0xdb, 0xe9,0x35,0xfb,0x3e,0xc5,0x84)
+#endif
+#else
+typedef struct IWMPPlayer4Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPPlayer4 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPPlayer4 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPPlayer4 *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPPlayer4 *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPPlayer4 *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPPlayer4 *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPPlayer4 *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPCore methods ***/
+    HRESULT (STDMETHODCALLTYPE *close)(
+        IWMPPlayer4 *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_URL)(
+        IWMPPlayer4 *This,
+        BSTR *pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *put_URL)(
+        IWMPPlayer4 *This,
+        BSTR pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_openState)(
+        IWMPPlayer4 *This,
+        WMPOpenState *pwmpos);
+
+    HRESULT (STDMETHODCALLTYPE *get_playState)(
+        IWMPPlayer4 *This,
+        WMPPlayState *pwmpps);
+
+    HRESULT (STDMETHODCALLTYPE *get_controls)(
+        IWMPPlayer4 *This,
+        IWMPControls **ppControl);
+
+    HRESULT (STDMETHODCALLTYPE *get_settings)(
+        IWMPPlayer4 *This,
+        IWMPSettings **ppSettings);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentMedia)(
+        IWMPPlayer4 *This,
+        IWMPMedia **ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentMedia)(
+        IWMPPlayer4 *This,
+        IWMPMedia *ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *get_mediaCollection)(
+        IWMPPlayer4 *This,
+        IWMPMediaCollection **ppMediaCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_playlistCollection)(
+        IWMPPlayer4 *This,
+        IWMPPlaylistCollection **ppPlaylistCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_versionInfo)(
+        IWMPPlayer4 *This,
+        BSTR *pbstrVersionInfo);
+
+    HRESULT (STDMETHODCALLTYPE *launchURL)(
+        IWMPPlayer4 *This,
+        BSTR bstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_network)(
+        IWMPPlayer4 *This,
+        IWMPNetwork **ppQNI);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPlaylist)(
+        IWMPPlayer4 *This,
+        IWMPPlaylist **ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentPlaylist)(
+        IWMPPlayer4 *This,
+        IWMPPlaylist *ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *get_cdromCollection)(
+        IWMPPlayer4 *This,
+        IWMPCdromCollection **ppCdromCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_closedCaption)(
+        IWMPPlayer4 *This,
+        IWMPClosedCaption **ppClosedCaption);
+
+    HRESULT (STDMETHODCALLTYPE *get_isOnline)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL *pfOnline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Error)(
+        IWMPPlayer4 *This,
+        IWMPError **ppError);
+
+    HRESULT (STDMETHODCALLTYPE *get_status)(
+        IWMPPlayer4 *This,
+        BSTR *pbstrStatus);
+
+    /*** IWMPCore2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_dvd)(
+        IWMPPlayer4 *This,
+        IWMPDVD **ppDVD);
+
+    /*** IWMPCore3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *newPlaylist)(
+        IWMPPlayer4 *This,
+        BSTR bstrName,
+        BSTR bstrURL,
+        IWMPPlaylist **ppPlaylist);
+
+    HRESULT (STDMETHODCALLTYPE *newMedia)(
+        IWMPPlayer4 *This,
+        BSTR bstrURL,
+        IWMPMedia **ppMedia);
+
+    /*** IWMPPlayer4 methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_enabled)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL *pbEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *put_enabled)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL pbEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *get_fullScreen)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL *pbFullScreen);
+
+    HRESULT (STDMETHODCALLTYPE *put_fullScreen)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL pbFullScreen);
+
+    HRESULT (STDMETHODCALLTYPE *get_enableContextMenu)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL *pbEnableContextMenu);
+
+    HRESULT (STDMETHODCALLTYPE *put_enableContextMenu)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL pbEnableContextMenu);
+
+    HRESULT (STDMETHODCALLTYPE *put_uiMode)(
+        IWMPPlayer4 *This,
+        BSTR pbstrMode);
+
+    HRESULT (STDMETHODCALLTYPE *get_uiMode)(
+        IWMPPlayer4 *This,
+        BSTR *pbstrMode);
+
+    HRESULT (STDMETHODCALLTYPE *get_stretchToFit)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL *pbEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *put_stretchToFit)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL pbEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *get_windowlessVideo)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL *pbEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *put_windowlessVideo)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL pbEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *get_isRemote)(
+        IWMPPlayer4 *This,
+        VARIANT_BOOL *pvarfIsRemote);
+
+    HRESULT (STDMETHODCALLTYPE *get_playerApplication)(
+        IWMPPlayer4 *This,
+        IWMPPlayerApplication **ppIWMPPlayerApplication);
+
+    HRESULT (STDMETHODCALLTYPE *openPlayer)(
+        IWMPPlayer4 *This,
+        BSTR bstrURL);
+
+    END_INTERFACE
+} IWMPPlayer4Vtbl;
+
+interface IWMPPlayer4 {
+    CONST_VTBL IWMPPlayer4Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPPlayer4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPPlayer4_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPPlayer4_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPPlayer4_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPPlayer4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPPlayer4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPPlayer4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPCore methods ***/
+#define IWMPPlayer4_close(This) (This)->lpVtbl->close(This)
+#define IWMPPlayer4_get_URL(This,pbstrURL) (This)->lpVtbl->get_URL(This,pbstrURL)
+#define IWMPPlayer4_put_URL(This,pbstrURL) (This)->lpVtbl->put_URL(This,pbstrURL)
+#define IWMPPlayer4_get_openState(This,pwmpos) (This)->lpVtbl->get_openState(This,pwmpos)
+#define IWMPPlayer4_get_playState(This,pwmpps) (This)->lpVtbl->get_playState(This,pwmpps)
+#define IWMPPlayer4_get_controls(This,ppControl) (This)->lpVtbl->get_controls(This,ppControl)
+#define IWMPPlayer4_get_settings(This,ppSettings) (This)->lpVtbl->get_settings(This,ppSettings)
+#define IWMPPlayer4_get_currentMedia(This,ppMedia) (This)->lpVtbl->get_currentMedia(This,ppMedia)
+#define IWMPPlayer4_put_currentMedia(This,ppMedia) (This)->lpVtbl->put_currentMedia(This,ppMedia)
+#define IWMPPlayer4_get_mediaCollection(This,ppMediaCollection) (This)->lpVtbl->get_mediaCollection(This,ppMediaCollection)
+#define IWMPPlayer4_get_playlistCollection(This,ppPlaylistCollection) (This)->lpVtbl->get_playlistCollection(This,ppPlaylistCollection)
+#define IWMPPlayer4_get_versionInfo(This,pbstrVersionInfo) (This)->lpVtbl->get_versionInfo(This,pbstrVersionInfo)
+#define IWMPPlayer4_launchURL(This,bstrURL) (This)->lpVtbl->launchURL(This,bstrURL)
+#define IWMPPlayer4_get_network(This,ppQNI) (This)->lpVtbl->get_network(This,ppQNI)
+#define IWMPPlayer4_get_currentPlaylist(This,ppPL) (This)->lpVtbl->get_currentPlaylist(This,ppPL)
+#define IWMPPlayer4_put_currentPlaylist(This,ppPL) (This)->lpVtbl->put_currentPlaylist(This,ppPL)
+#define IWMPPlayer4_get_cdromCollection(This,ppCdromCollection) (This)->lpVtbl->get_cdromCollection(This,ppCdromCollection)
+#define IWMPPlayer4_get_closedCaption(This,ppClosedCaption) (This)->lpVtbl->get_closedCaption(This,ppClosedCaption)
+#define IWMPPlayer4_get_isOnline(This,pfOnline) (This)->lpVtbl->get_isOnline(This,pfOnline)
+#define IWMPPlayer4_get_Error(This,ppError) (This)->lpVtbl->get_Error(This,ppError)
+#define IWMPPlayer4_get_status(This,pbstrStatus) (This)->lpVtbl->get_status(This,pbstrStatus)
+/*** IWMPCore2 methods ***/
+#define IWMPPlayer4_get_dvd(This,ppDVD) (This)->lpVtbl->get_dvd(This,ppDVD)
+/*** IWMPCore3 methods ***/
+#define IWMPPlayer4_newPlaylist(This,bstrName,bstrURL,ppPlaylist) (This)->lpVtbl->newPlaylist(This,bstrName,bstrURL,ppPlaylist)
+#define IWMPPlayer4_newMedia(This,bstrURL,ppMedia) (This)->lpVtbl->newMedia(This,bstrURL,ppMedia)
+/*** IWMPPlayer4 methods ***/
+#define IWMPPlayer4_get_enabled(This,pbEnabled) (This)->lpVtbl->get_enabled(This,pbEnabled)
+#define IWMPPlayer4_put_enabled(This,pbEnabled) (This)->lpVtbl->put_enabled(This,pbEnabled)
+#define IWMPPlayer4_get_fullScreen(This,pbFullScreen) (This)->lpVtbl->get_fullScreen(This,pbFullScreen)
+#define IWMPPlayer4_put_fullScreen(This,pbFullScreen) (This)->lpVtbl->put_fullScreen(This,pbFullScreen)
+#define IWMPPlayer4_get_enableContextMenu(This,pbEnableContextMenu) (This)->lpVtbl->get_enableContextMenu(This,pbEnableContextMenu)
+#define IWMPPlayer4_put_enableContextMenu(This,pbEnableContextMenu) (This)->lpVtbl->put_enableContextMenu(This,pbEnableContextMenu)
+#define IWMPPlayer4_put_uiMode(This,pbstrMode) (This)->lpVtbl->put_uiMode(This,pbstrMode)
+#define IWMPPlayer4_get_uiMode(This,pbstrMode) (This)->lpVtbl->get_uiMode(This,pbstrMode)
+#define IWMPPlayer4_get_stretchToFit(This,pbEnabled) (This)->lpVtbl->get_stretchToFit(This,pbEnabled)
+#define IWMPPlayer4_put_stretchToFit(This,pbEnabled) (This)->lpVtbl->put_stretchToFit(This,pbEnabled)
+#define IWMPPlayer4_get_windowlessVideo(This,pbEnabled) (This)->lpVtbl->get_windowlessVideo(This,pbEnabled)
+#define IWMPPlayer4_put_windowlessVideo(This,pbEnabled) (This)->lpVtbl->put_windowlessVideo(This,pbEnabled)
+#define IWMPPlayer4_get_isRemote(This,pvarfIsRemote) (This)->lpVtbl->get_isRemote(This,pvarfIsRemote)
+#define IWMPPlayer4_get_playerApplication(This,ppIWMPPlayerApplication) (This)->lpVtbl->get_playerApplication(This,ppIWMPPlayerApplication)
+#define IWMPPlayer4_openPlayer(This,bstrURL) (This)->lpVtbl->openPlayer(This,bstrURL)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPPlayer4_QueryInterface(IWMPPlayer4* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPPlayer4_AddRef(IWMPPlayer4* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPPlayer4_Release(IWMPPlayer4* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPPlayer4_GetTypeInfoCount(IWMPPlayer4* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_GetTypeInfo(IWMPPlayer4* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_GetIDsOfNames(IWMPPlayer4* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_Invoke(IWMPPlayer4* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPCore methods ***/
+static FORCEINLINE HRESULT IWMPPlayer4_close(IWMPPlayer4* This) {
+    return This->lpVtbl->close(This);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_URL(IWMPPlayer4* This,BSTR *pbstrURL) {
+    return This->lpVtbl->get_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_URL(IWMPPlayer4* This,BSTR pbstrURL) {
+    return This->lpVtbl->put_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_openState(IWMPPlayer4* This,WMPOpenState *pwmpos) {
+    return This->lpVtbl->get_openState(This,pwmpos);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_playState(IWMPPlayer4* This,WMPPlayState *pwmpps) {
+    return This->lpVtbl->get_playState(This,pwmpps);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_controls(IWMPPlayer4* This,IWMPControls **ppControl) {
+    return This->lpVtbl->get_controls(This,ppControl);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_settings(IWMPPlayer4* This,IWMPSettings **ppSettings) {
+    return This->lpVtbl->get_settings(This,ppSettings);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_currentMedia(IWMPPlayer4* This,IWMPMedia **ppMedia) {
+    return This->lpVtbl->get_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_currentMedia(IWMPPlayer4* This,IWMPMedia *ppMedia) {
+    return This->lpVtbl->put_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_mediaCollection(IWMPPlayer4* This,IWMPMediaCollection **ppMediaCollection) {
+    return This->lpVtbl->get_mediaCollection(This,ppMediaCollection);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_playlistCollection(IWMPPlayer4* This,IWMPPlaylistCollection **ppPlaylistCollection) {
+    return This->lpVtbl->get_playlistCollection(This,ppPlaylistCollection);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_versionInfo(IWMPPlayer4* This,BSTR *pbstrVersionInfo) {
+    return This->lpVtbl->get_versionInfo(This,pbstrVersionInfo);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_launchURL(IWMPPlayer4* This,BSTR bstrURL) {
+    return This->lpVtbl->launchURL(This,bstrURL);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_network(IWMPPlayer4* This,IWMPNetwork **ppQNI) {
+    return This->lpVtbl->get_network(This,ppQNI);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_currentPlaylist(IWMPPlayer4* This,IWMPPlaylist **ppPL) {
+    return This->lpVtbl->get_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_currentPlaylist(IWMPPlayer4* This,IWMPPlaylist *ppPL) {
+    return This->lpVtbl->put_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_cdromCollection(IWMPPlayer4* This,IWMPCdromCollection **ppCdromCollection) {
+    return This->lpVtbl->get_cdromCollection(This,ppCdromCollection);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_closedCaption(IWMPPlayer4* This,IWMPClosedCaption **ppClosedCaption) {
+    return This->lpVtbl->get_closedCaption(This,ppClosedCaption);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_isOnline(IWMPPlayer4* This,VARIANT_BOOL *pfOnline) {
+    return This->lpVtbl->get_isOnline(This,pfOnline);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_Error(IWMPPlayer4* This,IWMPError **ppError) {
+    return This->lpVtbl->get_Error(This,ppError);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_status(IWMPPlayer4* This,BSTR *pbstrStatus) {
+    return This->lpVtbl->get_status(This,pbstrStatus);
+}
+/*** IWMPCore2 methods ***/
+static FORCEINLINE HRESULT IWMPPlayer4_get_dvd(IWMPPlayer4* This,IWMPDVD **ppDVD) {
+    return This->lpVtbl->get_dvd(This,ppDVD);
+}
+/*** IWMPCore3 methods ***/
+static FORCEINLINE HRESULT IWMPPlayer4_newPlaylist(IWMPPlayer4* This,BSTR bstrName,BSTR bstrURL,IWMPPlaylist **ppPlaylist) {
+    return This->lpVtbl->newPlaylist(This,bstrName,bstrURL,ppPlaylist);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_newMedia(IWMPPlayer4* This,BSTR bstrURL,IWMPMedia **ppMedia) {
+    return This->lpVtbl->newMedia(This,bstrURL,ppMedia);
+}
+/*** IWMPPlayer4 methods ***/
+static FORCEINLINE HRESULT IWMPPlayer4_get_enabled(IWMPPlayer4* This,VARIANT_BOOL *pbEnabled) {
+    return This->lpVtbl->get_enabled(This,pbEnabled);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_enabled(IWMPPlayer4* This,VARIANT_BOOL pbEnabled) {
+    return This->lpVtbl->put_enabled(This,pbEnabled);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_fullScreen(IWMPPlayer4* This,VARIANT_BOOL *pbFullScreen) {
+    return This->lpVtbl->get_fullScreen(This,pbFullScreen);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_fullScreen(IWMPPlayer4* This,VARIANT_BOOL pbFullScreen) {
+    return This->lpVtbl->put_fullScreen(This,pbFullScreen);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_enableContextMenu(IWMPPlayer4* This,VARIANT_BOOL *pbEnableContextMenu) {
+    return This->lpVtbl->get_enableContextMenu(This,pbEnableContextMenu);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_enableContextMenu(IWMPPlayer4* This,VARIANT_BOOL pbEnableContextMenu) {
+    return This->lpVtbl->put_enableContextMenu(This,pbEnableContextMenu);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_uiMode(IWMPPlayer4* This,BSTR pbstrMode) {
+    return This->lpVtbl->put_uiMode(This,pbstrMode);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_uiMode(IWMPPlayer4* This,BSTR *pbstrMode) {
+    return This->lpVtbl->get_uiMode(This,pbstrMode);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_stretchToFit(IWMPPlayer4* This,VARIANT_BOOL *pbEnabled) {
+    return This->lpVtbl->get_stretchToFit(This,pbEnabled);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_stretchToFit(IWMPPlayer4* This,VARIANT_BOOL pbEnabled) {
+    return This->lpVtbl->put_stretchToFit(This,pbEnabled);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_windowlessVideo(IWMPPlayer4* This,VARIANT_BOOL *pbEnabled) {
+    return This->lpVtbl->get_windowlessVideo(This,pbEnabled);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_put_windowlessVideo(IWMPPlayer4* This,VARIANT_BOOL pbEnabled) {
+    return This->lpVtbl->put_windowlessVideo(This,pbEnabled);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_isRemote(IWMPPlayer4* This,VARIANT_BOOL *pvarfIsRemote) {
+    return This->lpVtbl->get_isRemote(This,pvarfIsRemote);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_get_playerApplication(IWMPPlayer4* This,IWMPPlayerApplication **ppIWMPPlayerApplication) {
+    return This->lpVtbl->get_playerApplication(This,ppIWMPPlayerApplication);
+}
+static FORCEINLINE HRESULT IWMPPlayer4_openPlayer(IWMPPlayer4* This,BSTR bstrURL) {
+    return This->lpVtbl->openPlayer(This,bstrURL);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPPlayer4_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPPlayer interface
+ */
+#ifndef __IWMPPlayer_INTERFACE_DEFINED__
+#define __IWMPPlayer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPPlayer, 0x6bf52a4f, 0x394a, 0x11d3, 0xb1,0x53, 0x00,0xc0,0x4f,0x79,0xfa,0xa6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6bf52a4f-394a-11d3-b153-00c04f79faa6")
+IWMPPlayer : public IWMPCore
+{
+    virtual HRESULT STDMETHODCALLTYPE get_enabled(
+        VARIANT_BOOL *pbEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_enabled(
+        VARIANT_BOOL pbEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_fullScreen(
+        VARIANT_BOOL *pbFullScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_fullScreen(
+        VARIANT_BOOL pbFullScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_enableContextMenu(
+        VARIANT_BOOL *pbEnableContextMenu) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_enableContextMenu(
+        VARIANT_BOOL pbEnableContextMenu) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_uiMode(
+        BSTR pbstrMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_uiMode(
+        BSTR *pbstrMode) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPPlayer, 0x6bf52a4f, 0x394a, 0x11d3, 0xb1,0x53, 0x00,0xc0,0x4f,0x79,0xfa,0xa6)
+#endif
+#else
+typedef struct IWMPPlayerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPPlayer *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPPlayer *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPPlayer *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWMPPlayer *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWMPPlayer *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWMPPlayer *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWMPPlayer *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IWMPCore methods ***/
+    HRESULT (STDMETHODCALLTYPE *close)(
+        IWMPPlayer *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_URL)(
+        IWMPPlayer *This,
+        BSTR *pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *put_URL)(
+        IWMPPlayer *This,
+        BSTR pbstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_openState)(
+        IWMPPlayer *This,
+        WMPOpenState *pwmpos);
+
+    HRESULT (STDMETHODCALLTYPE *get_playState)(
+        IWMPPlayer *This,
+        WMPPlayState *pwmpps);
+
+    HRESULT (STDMETHODCALLTYPE *get_controls)(
+        IWMPPlayer *This,
+        IWMPControls **ppControl);
+
+    HRESULT (STDMETHODCALLTYPE *get_settings)(
+        IWMPPlayer *This,
+        IWMPSettings **ppSettings);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentMedia)(
+        IWMPPlayer *This,
+        IWMPMedia **ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentMedia)(
+        IWMPPlayer *This,
+        IWMPMedia *ppMedia);
+
+    HRESULT (STDMETHODCALLTYPE *get_mediaCollection)(
+        IWMPPlayer *This,
+        IWMPMediaCollection **ppMediaCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_playlistCollection)(
+        IWMPPlayer *This,
+        IWMPPlaylistCollection **ppPlaylistCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_versionInfo)(
+        IWMPPlayer *This,
+        BSTR *pbstrVersionInfo);
+
+    HRESULT (STDMETHODCALLTYPE *launchURL)(
+        IWMPPlayer *This,
+        BSTR bstrURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_network)(
+        IWMPPlayer *This,
+        IWMPNetwork **ppQNI);
+
+    HRESULT (STDMETHODCALLTYPE *get_currentPlaylist)(
+        IWMPPlayer *This,
+        IWMPPlaylist **ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *put_currentPlaylist)(
+        IWMPPlayer *This,
+        IWMPPlaylist *ppPL);
+
+    HRESULT (STDMETHODCALLTYPE *get_cdromCollection)(
+        IWMPPlayer *This,
+        IWMPCdromCollection **ppCdromCollection);
+
+    HRESULT (STDMETHODCALLTYPE *get_closedCaption)(
+        IWMPPlayer *This,
+        IWMPClosedCaption **ppClosedCaption);
+
+    HRESULT (STDMETHODCALLTYPE *get_isOnline)(
+        IWMPPlayer *This,
+        VARIANT_BOOL *pfOnline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Error)(
+        IWMPPlayer *This,
+        IWMPError **ppError);
+
+    HRESULT (STDMETHODCALLTYPE *get_status)(
+        IWMPPlayer *This,
+        BSTR *pbstrStatus);
+
+    /*** IWMPPlayer methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_enabled)(
+        IWMPPlayer *This,
+        VARIANT_BOOL *pbEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *put_enabled)(
+        IWMPPlayer *This,
+        VARIANT_BOOL pbEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *get_fullScreen)(
+        IWMPPlayer *This,
+        VARIANT_BOOL *pbFullScreen);
+
+    HRESULT (STDMETHODCALLTYPE *put_fullScreen)(
+        IWMPPlayer *This,
+        VARIANT_BOOL pbFullScreen);
+
+    HRESULT (STDMETHODCALLTYPE *get_enableContextMenu)(
+        IWMPPlayer *This,
+        VARIANT_BOOL *pbEnableContextMenu);
+
+    HRESULT (STDMETHODCALLTYPE *put_enableContextMenu)(
+        IWMPPlayer *This,
+        VARIANT_BOOL pbEnableContextMenu);
+
+    HRESULT (STDMETHODCALLTYPE *put_uiMode)(
+        IWMPPlayer *This,
+        BSTR pbstrMode);
+
+    HRESULT (STDMETHODCALLTYPE *get_uiMode)(
+        IWMPPlayer *This,
+        BSTR *pbstrMode);
+
+    END_INTERFACE
+} IWMPPlayerVtbl;
+
+interface IWMPPlayer {
+    CONST_VTBL IWMPPlayerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPPlayer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPPlayer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPPlayer_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWMPPlayer_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWMPPlayer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWMPPlayer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWMPPlayer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWMPCore methods ***/
+#define IWMPPlayer_close(This) (This)->lpVtbl->close(This)
+#define IWMPPlayer_get_URL(This,pbstrURL) (This)->lpVtbl->get_URL(This,pbstrURL)
+#define IWMPPlayer_put_URL(This,pbstrURL) (This)->lpVtbl->put_URL(This,pbstrURL)
+#define IWMPPlayer_get_openState(This,pwmpos) (This)->lpVtbl->get_openState(This,pwmpos)
+#define IWMPPlayer_get_playState(This,pwmpps) (This)->lpVtbl->get_playState(This,pwmpps)
+#define IWMPPlayer_get_controls(This,ppControl) (This)->lpVtbl->get_controls(This,ppControl)
+#define IWMPPlayer_get_settings(This,ppSettings) (This)->lpVtbl->get_settings(This,ppSettings)
+#define IWMPPlayer_get_currentMedia(This,ppMedia) (This)->lpVtbl->get_currentMedia(This,ppMedia)
+#define IWMPPlayer_put_currentMedia(This,ppMedia) (This)->lpVtbl->put_currentMedia(This,ppMedia)
+#define IWMPPlayer_get_mediaCollection(This,ppMediaCollection) (This)->lpVtbl->get_mediaCollection(This,ppMediaCollection)
+#define IWMPPlayer_get_playlistCollection(This,ppPlaylistCollection) (This)->lpVtbl->get_playlistCollection(This,ppPlaylistCollection)
+#define IWMPPlayer_get_versionInfo(This,pbstrVersionInfo) (This)->lpVtbl->get_versionInfo(This,pbstrVersionInfo)
+#define IWMPPlayer_launchURL(This,bstrURL) (This)->lpVtbl->launchURL(This,bstrURL)
+#define IWMPPlayer_get_network(This,ppQNI) (This)->lpVtbl->get_network(This,ppQNI)
+#define IWMPPlayer_get_currentPlaylist(This,ppPL) (This)->lpVtbl->get_currentPlaylist(This,ppPL)
+#define IWMPPlayer_put_currentPlaylist(This,ppPL) (This)->lpVtbl->put_currentPlaylist(This,ppPL)
+#define IWMPPlayer_get_cdromCollection(This,ppCdromCollection) (This)->lpVtbl->get_cdromCollection(This,ppCdromCollection)
+#define IWMPPlayer_get_closedCaption(This,ppClosedCaption) (This)->lpVtbl->get_closedCaption(This,ppClosedCaption)
+#define IWMPPlayer_get_isOnline(This,pfOnline) (This)->lpVtbl->get_isOnline(This,pfOnline)
+#define IWMPPlayer_get_Error(This,ppError) (This)->lpVtbl->get_Error(This,ppError)
+#define IWMPPlayer_get_status(This,pbstrStatus) (This)->lpVtbl->get_status(This,pbstrStatus)
+/*** IWMPPlayer methods ***/
+#define IWMPPlayer_get_enabled(This,pbEnabled) (This)->lpVtbl->get_enabled(This,pbEnabled)
+#define IWMPPlayer_put_enabled(This,pbEnabled) (This)->lpVtbl->put_enabled(This,pbEnabled)
+#define IWMPPlayer_get_fullScreen(This,pbFullScreen) (This)->lpVtbl->get_fullScreen(This,pbFullScreen)
+#define IWMPPlayer_put_fullScreen(This,pbFullScreen) (This)->lpVtbl->put_fullScreen(This,pbFullScreen)
+#define IWMPPlayer_get_enableContextMenu(This,pbEnableContextMenu) (This)->lpVtbl->get_enableContextMenu(This,pbEnableContextMenu)
+#define IWMPPlayer_put_enableContextMenu(This,pbEnableContextMenu) (This)->lpVtbl->put_enableContextMenu(This,pbEnableContextMenu)
+#define IWMPPlayer_put_uiMode(This,pbstrMode) (This)->lpVtbl->put_uiMode(This,pbstrMode)
+#define IWMPPlayer_get_uiMode(This,pbstrMode) (This)->lpVtbl->get_uiMode(This,pbstrMode)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPPlayer_QueryInterface(IWMPPlayer* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPPlayer_AddRef(IWMPPlayer* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPPlayer_Release(IWMPPlayer* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWMPPlayer_GetTypeInfoCount(IWMPPlayer* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWMPPlayer_GetTypeInfo(IWMPPlayer* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWMPPlayer_GetIDsOfNames(IWMPPlayer* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWMPPlayer_Invoke(IWMPPlayer* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWMPCore methods ***/
+static FORCEINLINE HRESULT IWMPPlayer_close(IWMPPlayer* This) {
+    return This->lpVtbl->close(This);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_URL(IWMPPlayer* This,BSTR *pbstrURL) {
+    return This->lpVtbl->get_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPPlayer_put_URL(IWMPPlayer* This,BSTR pbstrURL) {
+    return This->lpVtbl->put_URL(This,pbstrURL);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_openState(IWMPPlayer* This,WMPOpenState *pwmpos) {
+    return This->lpVtbl->get_openState(This,pwmpos);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_playState(IWMPPlayer* This,WMPPlayState *pwmpps) {
+    return This->lpVtbl->get_playState(This,pwmpps);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_controls(IWMPPlayer* This,IWMPControls **ppControl) {
+    return This->lpVtbl->get_controls(This,ppControl);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_settings(IWMPPlayer* This,IWMPSettings **ppSettings) {
+    return This->lpVtbl->get_settings(This,ppSettings);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_currentMedia(IWMPPlayer* This,IWMPMedia **ppMedia) {
+    return This->lpVtbl->get_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPPlayer_put_currentMedia(IWMPPlayer* This,IWMPMedia *ppMedia) {
+    return This->lpVtbl->put_currentMedia(This,ppMedia);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_mediaCollection(IWMPPlayer* This,IWMPMediaCollection **ppMediaCollection) {
+    return This->lpVtbl->get_mediaCollection(This,ppMediaCollection);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_playlistCollection(IWMPPlayer* This,IWMPPlaylistCollection **ppPlaylistCollection) {
+    return This->lpVtbl->get_playlistCollection(This,ppPlaylistCollection);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_versionInfo(IWMPPlayer* This,BSTR *pbstrVersionInfo) {
+    return This->lpVtbl->get_versionInfo(This,pbstrVersionInfo);
+}
+static FORCEINLINE HRESULT IWMPPlayer_launchURL(IWMPPlayer* This,BSTR bstrURL) {
+    return This->lpVtbl->launchURL(This,bstrURL);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_network(IWMPPlayer* This,IWMPNetwork **ppQNI) {
+    return This->lpVtbl->get_network(This,ppQNI);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_currentPlaylist(IWMPPlayer* This,IWMPPlaylist **ppPL) {
+    return This->lpVtbl->get_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPPlayer_put_currentPlaylist(IWMPPlayer* This,IWMPPlaylist *ppPL) {
+    return This->lpVtbl->put_currentPlaylist(This,ppPL);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_cdromCollection(IWMPPlayer* This,IWMPCdromCollection **ppCdromCollection) {
+    return This->lpVtbl->get_cdromCollection(This,ppCdromCollection);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_closedCaption(IWMPPlayer* This,IWMPClosedCaption **ppClosedCaption) {
+    return This->lpVtbl->get_closedCaption(This,ppClosedCaption);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_isOnline(IWMPPlayer* This,VARIANT_BOOL *pfOnline) {
+    return This->lpVtbl->get_isOnline(This,pfOnline);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_Error(IWMPPlayer* This,IWMPError **ppError) {
+    return This->lpVtbl->get_Error(This,ppError);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_status(IWMPPlayer* This,BSTR *pbstrStatus) {
+    return This->lpVtbl->get_status(This,pbstrStatus);
+}
+/*** IWMPPlayer methods ***/
+static FORCEINLINE HRESULT IWMPPlayer_get_enabled(IWMPPlayer* This,VARIANT_BOOL *pbEnabled) {
+    return This->lpVtbl->get_enabled(This,pbEnabled);
+}
+static FORCEINLINE HRESULT IWMPPlayer_put_enabled(IWMPPlayer* This,VARIANT_BOOL pbEnabled) {
+    return This->lpVtbl->put_enabled(This,pbEnabled);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_fullScreen(IWMPPlayer* This,VARIANT_BOOL *pbFullScreen) {
+    return This->lpVtbl->get_fullScreen(This,pbFullScreen);
+}
+static FORCEINLINE HRESULT IWMPPlayer_put_fullScreen(IWMPPlayer* This,VARIANT_BOOL pbFullScreen) {
+    return This->lpVtbl->put_fullScreen(This,pbFullScreen);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_enableContextMenu(IWMPPlayer* This,VARIANT_BOOL *pbEnableContextMenu) {
+    return This->lpVtbl->get_enableContextMenu(This,pbEnableContextMenu);
+}
+static FORCEINLINE HRESULT IWMPPlayer_put_enableContextMenu(IWMPPlayer* This,VARIANT_BOOL pbEnableContextMenu) {
+    return This->lpVtbl->put_enableContextMenu(This,pbEnableContextMenu);
+}
+static FORCEINLINE HRESULT IWMPPlayer_put_uiMode(IWMPPlayer* This,BSTR pbstrMode) {
+    return This->lpVtbl->put_uiMode(This,pbstrMode);
+}
+static FORCEINLINE HRESULT IWMPPlayer_get_uiMode(IWMPPlayer* This,BSTR *pbstrMode) {
+    return This->lpVtbl->get_uiMode(This,pbstrMode);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPPlayer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPSyncDevice interface
+ */
+#ifndef __IWMPSyncDevice_INTERFACE_DEFINED__
+#define __IWMPSyncDevice_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPSyncDevice, 0x82a2986c, 0x0293, 0x4fd0, 0xb2,0x79, 0xb2,0x1b,0x86,0xc0,0x58,0xbe);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("82a2986c-0293-4fd0-b279-b21b86c058be")
+IWMPSyncDevice : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_friendlyName(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_friendlyName(
+        BSTR name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_deviceName(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_deviceId(
+        BSTR *device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_partnershipIndex(
+        LONG *index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_connected(
+        VARIANT_BOOL *connected) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_status(
+        WMPDeviceStatus *status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_syncState(
+        WMPSyncState *state) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_progress(
+        LONG *progress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getItemInfo(
+        BSTR name,
+        BSTR *val) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE createPartnership(
+        VARIANT_BOOL showui) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE deletePartnership(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE start(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE stop(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE showSettings(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE isIdentical(
+        IWMPSyncDevice *device,
+        VARIANT_BOOL *ret) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPSyncDevice, 0x82a2986c, 0x0293, 0x4fd0, 0xb2,0x79, 0xb2,0x1b,0x86,0xc0,0x58,0xbe)
+#endif
+#else
+typedef struct IWMPSyncDeviceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPSyncDevice *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPSyncDevice *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPSyncDevice *This);
+
+    /*** IWMPSyncDevice methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_friendlyName)(
+        IWMPSyncDevice *This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_friendlyName)(
+        IWMPSyncDevice *This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *get_deviceName)(
+        IWMPSyncDevice *This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *get_deviceId)(
+        IWMPSyncDevice *This,
+        BSTR *device);
+
+    HRESULT (STDMETHODCALLTYPE *get_partnershipIndex)(
+        IWMPSyncDevice *This,
+        LONG *index);
+
+    HRESULT (STDMETHODCALLTYPE *get_connected)(
+        IWMPSyncDevice *This,
+        VARIANT_BOOL *connected);
+
+    HRESULT (STDMETHODCALLTYPE *get_status)(
+        IWMPSyncDevice *This,
+        WMPDeviceStatus *status);
+
+    HRESULT (STDMETHODCALLTYPE *get_syncState)(
+        IWMPSyncDevice *This,
+        WMPSyncState *state);
+
+    HRESULT (STDMETHODCALLTYPE *get_progress)(
+        IWMPSyncDevice *This,
+        LONG *progress);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfo)(
+        IWMPSyncDevice *This,
+        BSTR name,
+        BSTR *val);
+
+    HRESULT (STDMETHODCALLTYPE *createPartnership)(
+        IWMPSyncDevice *This,
+        VARIANT_BOOL showui);
+
+    HRESULT (STDMETHODCALLTYPE *deletePartnership)(
+        IWMPSyncDevice *This);
+
+    HRESULT (STDMETHODCALLTYPE *start)(
+        IWMPSyncDevice *This);
+
+    HRESULT (STDMETHODCALLTYPE *stop)(
+        IWMPSyncDevice *This);
+
+    HRESULT (STDMETHODCALLTYPE *showSettings)(
+        IWMPSyncDevice *This);
+
+    HRESULT (STDMETHODCALLTYPE *isIdentical)(
+        IWMPSyncDevice *This,
+        IWMPSyncDevice *device,
+        VARIANT_BOOL *ret);
+
+    END_INTERFACE
+} IWMPSyncDeviceVtbl;
+
+interface IWMPSyncDevice {
+    CONST_VTBL IWMPSyncDeviceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPSyncDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPSyncDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPSyncDevice_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPSyncDevice methods ***/
+#define IWMPSyncDevice_get_friendlyName(This,name) (This)->lpVtbl->get_friendlyName(This,name)
+#define IWMPSyncDevice_put_friendlyName(This,name) (This)->lpVtbl->put_friendlyName(This,name)
+#define IWMPSyncDevice_get_deviceName(This,name) (This)->lpVtbl->get_deviceName(This,name)
+#define IWMPSyncDevice_get_deviceId(This,device) (This)->lpVtbl->get_deviceId(This,device)
+#define IWMPSyncDevice_get_partnershipIndex(This,index) (This)->lpVtbl->get_partnershipIndex(This,index)
+#define IWMPSyncDevice_get_connected(This,connected) (This)->lpVtbl->get_connected(This,connected)
+#define IWMPSyncDevice_get_status(This,status) (This)->lpVtbl->get_status(This,status)
+#define IWMPSyncDevice_get_syncState(This,state) (This)->lpVtbl->get_syncState(This,state)
+#define IWMPSyncDevice_get_progress(This,progress) (This)->lpVtbl->get_progress(This,progress)
+#define IWMPSyncDevice_getItemInfo(This,name,val) (This)->lpVtbl->getItemInfo(This,name,val)
+#define IWMPSyncDevice_createPartnership(This,showui) (This)->lpVtbl->createPartnership(This,showui)
+#define IWMPSyncDevice_deletePartnership(This) (This)->lpVtbl->deletePartnership(This)
+#define IWMPSyncDevice_start(This) (This)->lpVtbl->start(This)
+#define IWMPSyncDevice_stop(This) (This)->lpVtbl->stop(This)
+#define IWMPSyncDevice_showSettings(This) (This)->lpVtbl->showSettings(This)
+#define IWMPSyncDevice_isIdentical(This,device,ret) (This)->lpVtbl->isIdentical(This,device,ret)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPSyncDevice_QueryInterface(IWMPSyncDevice* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPSyncDevice_AddRef(IWMPSyncDevice* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPSyncDevice_Release(IWMPSyncDevice* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPSyncDevice methods ***/
+static FORCEINLINE HRESULT IWMPSyncDevice_get_friendlyName(IWMPSyncDevice* This,BSTR *name) {
+    return This->lpVtbl->get_friendlyName(This,name);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_put_friendlyName(IWMPSyncDevice* This,BSTR name) {
+    return This->lpVtbl->put_friendlyName(This,name);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_get_deviceName(IWMPSyncDevice* This,BSTR *name) {
+    return This->lpVtbl->get_deviceName(This,name);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_get_deviceId(IWMPSyncDevice* This,BSTR *device) {
+    return This->lpVtbl->get_deviceId(This,device);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_get_partnershipIndex(IWMPSyncDevice* This,LONG *index) {
+    return This->lpVtbl->get_partnershipIndex(This,index);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_get_connected(IWMPSyncDevice* This,VARIANT_BOOL *connected) {
+    return This->lpVtbl->get_connected(This,connected);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_get_status(IWMPSyncDevice* This,WMPDeviceStatus *status) {
+    return This->lpVtbl->get_status(This,status);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_get_syncState(IWMPSyncDevice* This,WMPSyncState *state) {
+    return This->lpVtbl->get_syncState(This,state);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_get_progress(IWMPSyncDevice* This,LONG *progress) {
+    return This->lpVtbl->get_progress(This,progress);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_getItemInfo(IWMPSyncDevice* This,BSTR name,BSTR *val) {
+    return This->lpVtbl->getItemInfo(This,name,val);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_createPartnership(IWMPSyncDevice* This,VARIANT_BOOL showui) {
+    return This->lpVtbl->createPartnership(This,showui);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_deletePartnership(IWMPSyncDevice* This) {
+    return This->lpVtbl->deletePartnership(This);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_start(IWMPSyncDevice* This) {
+    return This->lpVtbl->start(This);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_stop(IWMPSyncDevice* This) {
+    return This->lpVtbl->stop(This);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_showSettings(IWMPSyncDevice* This) {
+    return This->lpVtbl->showSettings(This);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice_isIdentical(IWMPSyncDevice* This,IWMPSyncDevice *device,VARIANT_BOOL *ret) {
+    return This->lpVtbl->isIdentical(This,device,ret);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPSyncDevice_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPSyncDevice2 interface
+ */
+#ifndef __IWMPSyncDevice2_INTERFACE_DEFINED__
+#define __IWMPSyncDevice2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPSyncDevice2, 0x88afb4b2, 0x140a, 0x44d2, 0x91,0xe6, 0x45,0x43,0xda,0x46,0x7c,0xd1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("88afb4b2-140a-44d2-91e6-4543da467cd1")
+IWMPSyncDevice2 : public IWMPSyncDevice
+{
+    virtual HRESULT STDMETHODCALLTYPE setItemInfo(
+        BSTR name,
+        BSTR val) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPSyncDevice2, 0x88afb4b2, 0x140a, 0x44d2, 0x91,0xe6, 0x45,0x43,0xda,0x46,0x7c,0xd1)
+#endif
+#else
+typedef struct IWMPSyncDevice2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPSyncDevice2 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPSyncDevice2 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPSyncDevice2 *This);
+
+    /*** IWMPSyncDevice methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_friendlyName)(
+        IWMPSyncDevice2 *This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_friendlyName)(
+        IWMPSyncDevice2 *This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *get_deviceName)(
+        IWMPSyncDevice2 *This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *get_deviceId)(
+        IWMPSyncDevice2 *This,
+        BSTR *device);
+
+    HRESULT (STDMETHODCALLTYPE *get_partnershipIndex)(
+        IWMPSyncDevice2 *This,
+        LONG *index);
+
+    HRESULT (STDMETHODCALLTYPE *get_connected)(
+        IWMPSyncDevice2 *This,
+        VARIANT_BOOL *connected);
+
+    HRESULT (STDMETHODCALLTYPE *get_status)(
+        IWMPSyncDevice2 *This,
+        WMPDeviceStatus *status);
+
+    HRESULT (STDMETHODCALLTYPE *get_syncState)(
+        IWMPSyncDevice2 *This,
+        WMPSyncState *state);
+
+    HRESULT (STDMETHODCALLTYPE *get_progress)(
+        IWMPSyncDevice2 *This,
+        LONG *progress);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfo)(
+        IWMPSyncDevice2 *This,
+        BSTR name,
+        BSTR *val);
+
+    HRESULT (STDMETHODCALLTYPE *createPartnership)(
+        IWMPSyncDevice2 *This,
+        VARIANT_BOOL showui);
+
+    HRESULT (STDMETHODCALLTYPE *deletePartnership)(
+        IWMPSyncDevice2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *start)(
+        IWMPSyncDevice2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *stop)(
+        IWMPSyncDevice2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *showSettings)(
+        IWMPSyncDevice2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *isIdentical)(
+        IWMPSyncDevice2 *This,
+        IWMPSyncDevice *device,
+        VARIANT_BOOL *ret);
+
+    /*** IWMPSyncDevice2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *setItemInfo)(
+        IWMPSyncDevice2 *This,
+        BSTR name,
+        BSTR val);
+
+    END_INTERFACE
+} IWMPSyncDevice2Vtbl;
+
+interface IWMPSyncDevice2 {
+    CONST_VTBL IWMPSyncDevice2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPSyncDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPSyncDevice2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPSyncDevice2_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPSyncDevice methods ***/
+#define IWMPSyncDevice2_get_friendlyName(This,name) (This)->lpVtbl->get_friendlyName(This,name)
+#define IWMPSyncDevice2_put_friendlyName(This,name) (This)->lpVtbl->put_friendlyName(This,name)
+#define IWMPSyncDevice2_get_deviceName(This,name) (This)->lpVtbl->get_deviceName(This,name)
+#define IWMPSyncDevice2_get_deviceId(This,device) (This)->lpVtbl->get_deviceId(This,device)
+#define IWMPSyncDevice2_get_partnershipIndex(This,index) (This)->lpVtbl->get_partnershipIndex(This,index)
+#define IWMPSyncDevice2_get_connected(This,connected) (This)->lpVtbl->get_connected(This,connected)
+#define IWMPSyncDevice2_get_status(This,status) (This)->lpVtbl->get_status(This,status)
+#define IWMPSyncDevice2_get_syncState(This,state) (This)->lpVtbl->get_syncState(This,state)
+#define IWMPSyncDevice2_get_progress(This,progress) (This)->lpVtbl->get_progress(This,progress)
+#define IWMPSyncDevice2_getItemInfo(This,name,val) (This)->lpVtbl->getItemInfo(This,name,val)
+#define IWMPSyncDevice2_createPartnership(This,showui) (This)->lpVtbl->createPartnership(This,showui)
+#define IWMPSyncDevice2_deletePartnership(This) (This)->lpVtbl->deletePartnership(This)
+#define IWMPSyncDevice2_start(This) (This)->lpVtbl->start(This)
+#define IWMPSyncDevice2_stop(This) (This)->lpVtbl->stop(This)
+#define IWMPSyncDevice2_showSettings(This) (This)->lpVtbl->showSettings(This)
+#define IWMPSyncDevice2_isIdentical(This,device,ret) (This)->lpVtbl->isIdentical(This,device,ret)
+/*** IWMPSyncDevice2 methods ***/
+#define IWMPSyncDevice2_setItemInfo(This,name,val) (This)->lpVtbl->setItemInfo(This,name,val)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPSyncDevice2_QueryInterface(IWMPSyncDevice2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPSyncDevice2_AddRef(IWMPSyncDevice2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPSyncDevice2_Release(IWMPSyncDevice2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPSyncDevice methods ***/
+static FORCEINLINE HRESULT IWMPSyncDevice2_get_friendlyName(IWMPSyncDevice2* This,BSTR *name) {
+    return This->lpVtbl->get_friendlyName(This,name);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_put_friendlyName(IWMPSyncDevice2* This,BSTR name) {
+    return This->lpVtbl->put_friendlyName(This,name);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_get_deviceName(IWMPSyncDevice2* This,BSTR *name) {
+    return This->lpVtbl->get_deviceName(This,name);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_get_deviceId(IWMPSyncDevice2* This,BSTR *device) {
+    return This->lpVtbl->get_deviceId(This,device);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_get_partnershipIndex(IWMPSyncDevice2* This,LONG *index) {
+    return This->lpVtbl->get_partnershipIndex(This,index);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_get_connected(IWMPSyncDevice2* This,VARIANT_BOOL *connected) {
+    return This->lpVtbl->get_connected(This,connected);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_get_status(IWMPSyncDevice2* This,WMPDeviceStatus *status) {
+    return This->lpVtbl->get_status(This,status);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_get_syncState(IWMPSyncDevice2* This,WMPSyncState *state) {
+    return This->lpVtbl->get_syncState(This,state);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_get_progress(IWMPSyncDevice2* This,LONG *progress) {
+    return This->lpVtbl->get_progress(This,progress);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_getItemInfo(IWMPSyncDevice2* This,BSTR name,BSTR *val) {
+    return This->lpVtbl->getItemInfo(This,name,val);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_createPartnership(IWMPSyncDevice2* This,VARIANT_BOOL showui) {
+    return This->lpVtbl->createPartnership(This,showui);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_deletePartnership(IWMPSyncDevice2* This) {
+    return This->lpVtbl->deletePartnership(This);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_start(IWMPSyncDevice2* This) {
+    return This->lpVtbl->start(This);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_stop(IWMPSyncDevice2* This) {
+    return This->lpVtbl->stop(This);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_showSettings(IWMPSyncDevice2* This) {
+    return This->lpVtbl->showSettings(This);
+}
+static FORCEINLINE HRESULT IWMPSyncDevice2_isIdentical(IWMPSyncDevice2* This,IWMPSyncDevice *device,VARIANT_BOOL *ret) {
+    return This->lpVtbl->isIdentical(This,device,ret);
+}
+/*** IWMPSyncDevice2 methods ***/
+static FORCEINLINE HRESULT IWMPSyncDevice2_setItemInfo(IWMPSyncDevice2* This,BSTR name,BSTR val) {
+    return This->lpVtbl->setItemInfo(This,name,val);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPSyncDevice2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPCdromRip interface
+ */
+#ifndef __IWMPCdromRip_INTERFACE_DEFINED__
+#define __IWMPCdromRip_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPCdromRip, 0x56e2294f, 0x69ed, 0x4629, 0xa8,0x69, 0xae,0xa7,0x2c,0x0d,0xcc,0x2c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("56e2294f-69ed-4629-a869-aea72c0dcc2c")
+IWMPCdromRip : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ripState(
+        WMPRipState *state) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ripProgress(
+        LONG *progress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE startRip(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE stopRip(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPCdromRip, 0x56e2294f, 0x69ed, 0x4629, 0xa8,0x69, 0xae,0xa7,0x2c,0x0d,0xcc,0x2c)
+#endif
+#else
+typedef struct IWMPCdromRipVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPCdromRip *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPCdromRip *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPCdromRip *This);
+
+    /*** IWMPCdromRip methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ripState)(
+        IWMPCdromRip *This,
+        WMPRipState *state);
+
+    HRESULT (STDMETHODCALLTYPE *get_ripProgress)(
+        IWMPCdromRip *This,
+        LONG *progress);
+
+    HRESULT (STDMETHODCALLTYPE *startRip)(
+        IWMPCdromRip *This);
+
+    HRESULT (STDMETHODCALLTYPE *stopRip)(
+        IWMPCdromRip *This);
+
+    END_INTERFACE
+} IWMPCdromRipVtbl;
+
+interface IWMPCdromRip {
+    CONST_VTBL IWMPCdromRipVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPCdromRip_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPCdromRip_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPCdromRip_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPCdromRip methods ***/
+#define IWMPCdromRip_get_ripState(This,state) (This)->lpVtbl->get_ripState(This,state)
+#define IWMPCdromRip_get_ripProgress(This,progress) (This)->lpVtbl->get_ripProgress(This,progress)
+#define IWMPCdromRip_startRip(This) (This)->lpVtbl->startRip(This)
+#define IWMPCdromRip_stopRip(This) (This)->lpVtbl->stopRip(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPCdromRip_QueryInterface(IWMPCdromRip* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPCdromRip_AddRef(IWMPCdromRip* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPCdromRip_Release(IWMPCdromRip* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPCdromRip methods ***/
+static FORCEINLINE HRESULT IWMPCdromRip_get_ripState(IWMPCdromRip* This,WMPRipState *state) {
+    return This->lpVtbl->get_ripState(This,state);
+}
+static FORCEINLINE HRESULT IWMPCdromRip_get_ripProgress(IWMPCdromRip* This,LONG *progress) {
+    return This->lpVtbl->get_ripProgress(This,progress);
+}
+static FORCEINLINE HRESULT IWMPCdromRip_startRip(IWMPCdromRip* This) {
+    return This->lpVtbl->startRip(This);
+}
+static FORCEINLINE HRESULT IWMPCdromRip_stopRip(IWMPCdromRip* This) {
+    return This->lpVtbl->stopRip(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPCdromRip_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPCdromBurn interface
+ */
+#ifndef __IWMPCdromBurn_INTERFACE_DEFINED__
+#define __IWMPCdromBurn_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPCdromBurn, 0xbd94dbeb, 0x417f, 0x4928, 0xaa,0x06, 0x08,0x7d,0x56,0xed,0x9b,0x59);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bd94dbeb-417f-4928-aa06-087d56ed9b59")
+IWMPCdromBurn : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE isAvailable(
+        BSTR item,
+        VARIANT_BOOL *available) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE getItemInfo(
+        BSTR item,
+        BSTR *val) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_label(
+        BSTR *label) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_label(
+        BSTR label) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_burnFormat(
+        WMPBurnFormat *format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_burnFormat(
+        WMPBurnFormat format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_burnPlaylist(
+        IWMPPlaylist **playlist) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_burnPlaylist(
+        IWMPPlaylist *playlist) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE refreshStatus(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_burnState(
+        WMPBurnState *state) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_burnProgress(
+        LONG *progress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE startBurn(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE stopBurn(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE erase(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPCdromBurn, 0xbd94dbeb, 0x417f, 0x4928, 0xaa,0x06, 0x08,0x7d,0x56,0xed,0x9b,0x59)
+#endif
+#else
+typedef struct IWMPCdromBurnVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPCdromBurn *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPCdromBurn *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPCdromBurn *This);
+
+    /*** IWMPCdromBurn methods ***/
+    HRESULT (STDMETHODCALLTYPE *isAvailable)(
+        IWMPCdromBurn *This,
+        BSTR item,
+        VARIANT_BOOL *available);
+
+    HRESULT (STDMETHODCALLTYPE *getItemInfo)(
+        IWMPCdromBurn *This,
+        BSTR item,
+        BSTR *val);
+
+    HRESULT (STDMETHODCALLTYPE *get_label)(
+        IWMPCdromBurn *This,
+        BSTR *label);
+
+    HRESULT (STDMETHODCALLTYPE *put_label)(
+        IWMPCdromBurn *This,
+        BSTR label);
+
+    HRESULT (STDMETHODCALLTYPE *get_burnFormat)(
+        IWMPCdromBurn *This,
+        WMPBurnFormat *format);
+
+    HRESULT (STDMETHODCALLTYPE *put_burnFormat)(
+        IWMPCdromBurn *This,
+        WMPBurnFormat format);
+
+    HRESULT (STDMETHODCALLTYPE *get_burnPlaylist)(
+        IWMPCdromBurn *This,
+        IWMPPlaylist **playlist);
+
+    HRESULT (STDMETHODCALLTYPE *put_burnPlaylist)(
+        IWMPCdromBurn *This,
+        IWMPPlaylist *playlist);
+
+    HRESULT (STDMETHODCALLTYPE *refreshStatus)(
+        IWMPCdromBurn *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_burnState)(
+        IWMPCdromBurn *This,
+        WMPBurnState *state);
+
+    HRESULT (STDMETHODCALLTYPE *get_burnProgress)(
+        IWMPCdromBurn *This,
+        LONG *progress);
+
+    HRESULT (STDMETHODCALLTYPE *startBurn)(
+        IWMPCdromBurn *This);
+
+    HRESULT (STDMETHODCALLTYPE *stopBurn)(
+        IWMPCdromBurn *This);
+
+    HRESULT (STDMETHODCALLTYPE *erase)(
+        IWMPCdromBurn *This);
+
+    END_INTERFACE
+} IWMPCdromBurnVtbl;
+
+interface IWMPCdromBurn {
+    CONST_VTBL IWMPCdromBurnVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPCdromBurn_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPCdromBurn_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPCdromBurn_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPCdromBurn methods ***/
+#define IWMPCdromBurn_isAvailable(This,item,available) (This)->lpVtbl->isAvailable(This,item,available)
+#define IWMPCdromBurn_getItemInfo(This,item,val) (This)->lpVtbl->getItemInfo(This,item,val)
+#define IWMPCdromBurn_get_label(This,label) (This)->lpVtbl->get_label(This,label)
+#define IWMPCdromBurn_put_label(This,label) (This)->lpVtbl->put_label(This,label)
+#define IWMPCdromBurn_get_burnFormat(This,format) (This)->lpVtbl->get_burnFormat(This,format)
+#define IWMPCdromBurn_put_burnFormat(This,format) (This)->lpVtbl->put_burnFormat(This,format)
+#define IWMPCdromBurn_get_burnPlaylist(This,playlist) (This)->lpVtbl->get_burnPlaylist(This,playlist)
+#define IWMPCdromBurn_put_burnPlaylist(This,playlist) (This)->lpVtbl->put_burnPlaylist(This,playlist)
+#define IWMPCdromBurn_refreshStatus(This) (This)->lpVtbl->refreshStatus(This)
+#define IWMPCdromBurn_get_burnState(This,state) (This)->lpVtbl->get_burnState(This,state)
+#define IWMPCdromBurn_get_burnProgress(This,progress) (This)->lpVtbl->get_burnProgress(This,progress)
+#define IWMPCdromBurn_startBurn(This) (This)->lpVtbl->startBurn(This)
+#define IWMPCdromBurn_stopBurn(This) (This)->lpVtbl->stopBurn(This)
+#define IWMPCdromBurn_erase(This) (This)->lpVtbl->erase(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPCdromBurn_QueryInterface(IWMPCdromBurn* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPCdromBurn_AddRef(IWMPCdromBurn* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPCdromBurn_Release(IWMPCdromBurn* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPCdromBurn methods ***/
+static FORCEINLINE HRESULT IWMPCdromBurn_isAvailable(IWMPCdromBurn* This,BSTR item,VARIANT_BOOL *available) {
+    return This->lpVtbl->isAvailable(This,item,available);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_getItemInfo(IWMPCdromBurn* This,BSTR item,BSTR *val) {
+    return This->lpVtbl->getItemInfo(This,item,val);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_get_label(IWMPCdromBurn* This,BSTR *label) {
+    return This->lpVtbl->get_label(This,label);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_put_label(IWMPCdromBurn* This,BSTR label) {
+    return This->lpVtbl->put_label(This,label);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_get_burnFormat(IWMPCdromBurn* This,WMPBurnFormat *format) {
+    return This->lpVtbl->get_burnFormat(This,format);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_put_burnFormat(IWMPCdromBurn* This,WMPBurnFormat format) {
+    return This->lpVtbl->put_burnFormat(This,format);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_get_burnPlaylist(IWMPCdromBurn* This,IWMPPlaylist **playlist) {
+    return This->lpVtbl->get_burnPlaylist(This,playlist);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_put_burnPlaylist(IWMPCdromBurn* This,IWMPPlaylist *playlist) {
+    return This->lpVtbl->put_burnPlaylist(This,playlist);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_refreshStatus(IWMPCdromBurn* This) {
+    return This->lpVtbl->refreshStatus(This);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_get_burnState(IWMPCdromBurn* This,WMPBurnState *state) {
+    return This->lpVtbl->get_burnState(This,state);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_get_burnProgress(IWMPCdromBurn* This,LONG *progress) {
+    return This->lpVtbl->get_burnProgress(This,progress);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_startBurn(IWMPCdromBurn* This) {
+    return This->lpVtbl->startBurn(This);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_stopBurn(IWMPCdromBurn* This) {
+    return This->lpVtbl->stopBurn(This);
+}
+static FORCEINLINE HRESULT IWMPCdromBurn_erase(IWMPCdromBurn* This) {
+    return This->lpVtbl->erase(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPCdromBurn_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPLibrary interface
+ */
+#ifndef __IWMPLibrary_INTERFACE_DEFINED__
+#define __IWMPLibrary_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPLibrary, 0x3df47861, 0x7df1, 0x4c1f, 0xa8,0x1b, 0x4c,0x26,0xf0,0xf7,0xa7,0xc6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3df47861-7df1-4c1f-a81b-4c26f0f7a7c6")
+IWMPLibrary : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE get_name(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_type(
+        WMPLibraryType *type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_mediaCollection(
+        IWMPMediaCollection **collection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE isIdentical(
+        IWMPLibrary *wmplibrary,
+        VARIANT_BOOL *ret) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPLibrary, 0x3df47861, 0x7df1, 0x4c1f, 0xa8,0x1b, 0x4c,0x26,0xf0,0xf7,0xa7,0xc6)
+#endif
+#else
+typedef struct IWMPLibraryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPLibrary *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPLibrary *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPLibrary *This);
+
+    /*** IWMPLibrary methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_name)(
+        IWMPLibrary *This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *get_type)(
+        IWMPLibrary *This,
+        WMPLibraryType *type);
+
+    HRESULT (STDMETHODCALLTYPE *get_mediaCollection)(
+        IWMPLibrary *This,
+        IWMPMediaCollection **collection);
+
+    HRESULT (STDMETHODCALLTYPE *isIdentical)(
+        IWMPLibrary *This,
+        IWMPLibrary *wmplibrary,
+        VARIANT_BOOL *ret);
+
+    END_INTERFACE
+} IWMPLibraryVtbl;
+
+interface IWMPLibrary {
+    CONST_VTBL IWMPLibraryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPLibrary_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPLibrary_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPLibrary_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPLibrary methods ***/
+#define IWMPLibrary_get_name(This,name) (This)->lpVtbl->get_name(This,name)
+#define IWMPLibrary_get_type(This,type) (This)->lpVtbl->get_type(This,type)
+#define IWMPLibrary_get_mediaCollection(This,collection) (This)->lpVtbl->get_mediaCollection(This,collection)
+#define IWMPLibrary_isIdentical(This,wmplibrary,ret) (This)->lpVtbl->isIdentical(This,wmplibrary,ret)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPLibrary_QueryInterface(IWMPLibrary* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPLibrary_AddRef(IWMPLibrary* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPLibrary_Release(IWMPLibrary* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPLibrary methods ***/
+static FORCEINLINE HRESULT IWMPLibrary_get_name(IWMPLibrary* This,BSTR *name) {
+    return This->lpVtbl->get_name(This,name);
+}
+static FORCEINLINE HRESULT IWMPLibrary_get_type(IWMPLibrary* This,WMPLibraryType *type) {
+    return This->lpVtbl->get_type(This,type);
+}
+static FORCEINLINE HRESULT IWMPLibrary_get_mediaCollection(IWMPLibrary* This,IWMPMediaCollection **collection) {
+    return This->lpVtbl->get_mediaCollection(This,collection);
+}
+static FORCEINLINE HRESULT IWMPLibrary_isIdentical(IWMPLibrary* This,IWMPLibrary *wmplibrary,VARIANT_BOOL *ret) {
+    return This->lpVtbl->isIdentical(This,wmplibrary,ret);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPLibrary_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPEvents interface
+ */
+#ifndef __IWMPEvents_INTERFACE_DEFINED__
+#define __IWMPEvents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPEvents, 0x19a6627b, 0xda9e, 0x47c1, 0xbb,0x23, 0x00,0xb5,0xe6,0x68,0x23,0x6a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("19a6627b-da9e-47c1-bb23-00b5e668236a")
+IWMPEvents : public IUnknown
+{
+    virtual void STDMETHODCALLTYPE OpenStateChange(
+        LONG state) = 0;
+
+    virtual void STDMETHODCALLTYPE PlayStateChange(
+        LONG state) = 0;
+
+    virtual void STDMETHODCALLTYPE AudioLanguageChange(
+        LONG lang) = 0;
+
+    virtual void STDMETHODCALLTYPE StatusChange(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE ScriptCommand(
+        BSTR type,
+        BSTR param) = 0;
+
+    virtual void STDMETHODCALLTYPE NewStream(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE Disconnect(
+        LONG result) = 0;
+
+    virtual void STDMETHODCALLTYPE Buffering(
+        VARIANT_BOOL start) = 0;
+
+    virtual void STDMETHODCALLTYPE Error(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE Warning(
+        LONG warning,
+        LONG param,
+        BSTR description) = 0;
+
+    virtual void STDMETHODCALLTYPE EndOfStream(
+        LONG result) = 0;
+
+    virtual void STDMETHODCALLTYPE PositionChange(
+        double old_position,
+        double new_position) = 0;
+
+    virtual void STDMETHODCALLTYPE MarkerHit(
+        LONG marker) = 0;
+
+    virtual void STDMETHODCALLTYPE DurationUnitChange(
+        LONG duration) = 0;
+
+    virtual void STDMETHODCALLTYPE CdromMediaChange(
+        LONG num) = 0;
+
+    virtual void STDMETHODCALLTYPE PlaylistChange(
+        IDispatch *playlist,
+        WMPPlaylistChangeEventType change) = 0;
+
+    virtual void STDMETHODCALLTYPE CurrentPlaylistChange(
+        WMPPlaylistChangeEventType change) = 0;
+
+    virtual void STDMETHODCALLTYPE CurrentPlaylistItemAvailable(
+        BSTR item) = 0;
+
+    virtual void STDMETHODCALLTYPE MediaChange(
+        IDispatch *item) = 0;
+
+    virtual void STDMETHODCALLTYPE CurrentMediaItemAvailable(
+        BSTR name) = 0;
+
+    virtual void STDMETHODCALLTYPE CurrentItemChange(
+        IDispatch *media) = 0;
+
+    virtual void STDMETHODCALLTYPE MediaCollectionChange(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE MediaCollectionAttributeStringAdded(
+        BSTR name,
+        BSTR val) = 0;
+
+    virtual void STDMETHODCALLTYPE MediaCollectionAttributeStringRemoved(
+        BSTR name,
+        BSTR val) = 0;
+
+    virtual void STDMETHODCALLTYPE MediaCollectionAttributeStringChanged(
+        BSTR name,
+        BSTR old_val,
+        BSTR new_val) = 0;
+
+    virtual void STDMETHODCALLTYPE PlaylistCollectionChange(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE PlaylistCollectionPlaylistAdded(
+        BSTR name) = 0;
+
+    virtual void STDMETHODCALLTYPE PlaylistCollectionPlaylistRemoved(
+        BSTR name) = 0;
+
+    virtual void STDMETHODCALLTYPE PlaylistCollectionPlaylistSetAsDeleted(
+        BSTR name,
+        VARIANT_BOOL deleted) = 0;
+
+    virtual void STDMETHODCALLTYPE ModeChange(
+        BSTR ModeName,
+        VARIANT_BOOL value) = 0;
+
+    virtual void STDMETHODCALLTYPE MediaError(
+        IDispatch *media) = 0;
+
+    virtual void STDMETHODCALLTYPE OpenPlaylistSwitch(
+        IDispatch *item) = 0;
+
+    virtual void STDMETHODCALLTYPE DomainChange(
+        BSTR domain) = 0;
+
+    virtual void STDMETHODCALLTYPE SwitchedToPlayerApplication(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE SwitchedToControl(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE PlayerDockedStateChange(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE PlayerReconnect(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE Click(
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y) = 0;
+
+    virtual void STDMETHODCALLTYPE DoubleClick(
+        short button,
+        short shift_state,
+        LONG fX,
+        LONG fY) = 0;
+
+    virtual void STDMETHODCALLTYPE KeyDown(
+        short keycode,
+        short shift_state) = 0;
+
+    virtual void STDMETHODCALLTYPE KeyPress(
+        short ascii) = 0;
+
+    virtual void STDMETHODCALLTYPE KeyUp(
+        short keycode,
+        short shift_state) = 0;
+
+    virtual void STDMETHODCALLTYPE MouseDown(
+        short button,
+        short nShiftState,
+        LONG x,
+        LONG y) = 0;
+
+    virtual void STDMETHODCALLTYPE MouseMove(
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y) = 0;
+
+    virtual void STDMETHODCALLTYPE MouseUp(
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPEvents, 0x19a6627b, 0xda9e, 0x47c1, 0xbb,0x23, 0x00,0xb5,0xe6,0x68,0x23,0x6a)
+#endif
+#else
+typedef struct IWMPEventsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPEvents *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPEvents *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPEvents *This);
+
+    /*** IWMPEvents methods ***/
+    void (STDMETHODCALLTYPE *OpenStateChange)(
+        IWMPEvents *This,
+        LONG state);
+
+    void (STDMETHODCALLTYPE *PlayStateChange)(
+        IWMPEvents *This,
+        LONG state);
+
+    void (STDMETHODCALLTYPE *AudioLanguageChange)(
+        IWMPEvents *This,
+        LONG lang);
+
+    void (STDMETHODCALLTYPE *StatusChange)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *ScriptCommand)(
+        IWMPEvents *This,
+        BSTR type,
+        BSTR param);
+
+    void (STDMETHODCALLTYPE *NewStream)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *Disconnect)(
+        IWMPEvents *This,
+        LONG result);
+
+    void (STDMETHODCALLTYPE *Buffering)(
+        IWMPEvents *This,
+        VARIANT_BOOL start);
+
+    void (STDMETHODCALLTYPE *Error)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *Warning)(
+        IWMPEvents *This,
+        LONG warning,
+        LONG param,
+        BSTR description);
+
+    void (STDMETHODCALLTYPE *EndOfStream)(
+        IWMPEvents *This,
+        LONG result);
+
+    void (STDMETHODCALLTYPE *PositionChange)(
+        IWMPEvents *This,
+        double old_position,
+        double new_position);
+
+    void (STDMETHODCALLTYPE *MarkerHit)(
+        IWMPEvents *This,
+        LONG marker);
+
+    void (STDMETHODCALLTYPE *DurationUnitChange)(
+        IWMPEvents *This,
+        LONG duration);
+
+    void (STDMETHODCALLTYPE *CdromMediaChange)(
+        IWMPEvents *This,
+        LONG num);
+
+    void (STDMETHODCALLTYPE *PlaylistChange)(
+        IWMPEvents *This,
+        IDispatch *playlist,
+        WMPPlaylistChangeEventType change);
+
+    void (STDMETHODCALLTYPE *CurrentPlaylistChange)(
+        IWMPEvents *This,
+        WMPPlaylistChangeEventType change);
+
+    void (STDMETHODCALLTYPE *CurrentPlaylistItemAvailable)(
+        IWMPEvents *This,
+        BSTR item);
+
+    void (STDMETHODCALLTYPE *MediaChange)(
+        IWMPEvents *This,
+        IDispatch *item);
+
+    void (STDMETHODCALLTYPE *CurrentMediaItemAvailable)(
+        IWMPEvents *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *CurrentItemChange)(
+        IWMPEvents *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *MediaCollectionChange)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringAdded)(
+        IWMPEvents *This,
+        BSTR name,
+        BSTR val);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringRemoved)(
+        IWMPEvents *This,
+        BSTR name,
+        BSTR val);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringChanged)(
+        IWMPEvents *This,
+        BSTR name,
+        BSTR old_val,
+        BSTR new_val);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionChange)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistAdded)(
+        IWMPEvents *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistRemoved)(
+        IWMPEvents *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistSetAsDeleted)(
+        IWMPEvents *This,
+        BSTR name,
+        VARIANT_BOOL deleted);
+
+    void (STDMETHODCALLTYPE *ModeChange)(
+        IWMPEvents *This,
+        BSTR ModeName,
+        VARIANT_BOOL value);
+
+    void (STDMETHODCALLTYPE *MediaError)(
+        IWMPEvents *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *OpenPlaylistSwitch)(
+        IWMPEvents *This,
+        IDispatch *item);
+
+    void (STDMETHODCALLTYPE *DomainChange)(
+        IWMPEvents *This,
+        BSTR domain);
+
+    void (STDMETHODCALLTYPE *SwitchedToPlayerApplication)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *SwitchedToControl)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *PlayerDockedStateChange)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *PlayerReconnect)(
+        IWMPEvents *This);
+
+    void (STDMETHODCALLTYPE *Click)(
+        IWMPEvents *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *DoubleClick)(
+        IWMPEvents *This,
+        short button,
+        short shift_state,
+        LONG fX,
+        LONG fY);
+
+    void (STDMETHODCALLTYPE *KeyDown)(
+        IWMPEvents *This,
+        short keycode,
+        short shift_state);
+
+    void (STDMETHODCALLTYPE *KeyPress)(
+        IWMPEvents *This,
+        short ascii);
+
+    void (STDMETHODCALLTYPE *KeyUp)(
+        IWMPEvents *This,
+        short keycode,
+        short shift_state);
+
+    void (STDMETHODCALLTYPE *MouseDown)(
+        IWMPEvents *This,
+        short button,
+        short nShiftState,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *MouseMove)(
+        IWMPEvents *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *MouseUp)(
+        IWMPEvents *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    END_INTERFACE
+} IWMPEventsVtbl;
+
+interface IWMPEvents {
+    CONST_VTBL IWMPEventsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPEvents methods ***/
+#define IWMPEvents_OpenStateChange(This,state) (This)->lpVtbl->OpenStateChange(This,state)
+#define IWMPEvents_PlayStateChange(This,state) (This)->lpVtbl->PlayStateChange(This,state)
+#define IWMPEvents_AudioLanguageChange(This,lang) (This)->lpVtbl->AudioLanguageChange(This,lang)
+#define IWMPEvents_StatusChange(This) (This)->lpVtbl->StatusChange(This)
+#define IWMPEvents_ScriptCommand(This,type,param) (This)->lpVtbl->ScriptCommand(This,type,param)
+#define IWMPEvents_NewStream(This) (This)->lpVtbl->NewStream(This)
+#define IWMPEvents_Disconnect(This,result) (This)->lpVtbl->Disconnect(This,result)
+#define IWMPEvents_Buffering(This,start) (This)->lpVtbl->Buffering(This,start)
+#define IWMPEvents_Error(This) (This)->lpVtbl->Error(This)
+#define IWMPEvents_Warning(This,warning,param,description) (This)->lpVtbl->Warning(This,warning,param,description)
+#define IWMPEvents_EndOfStream(This,result) (This)->lpVtbl->EndOfStream(This,result)
+#define IWMPEvents_PositionChange(This,old_position,new_position) (This)->lpVtbl->PositionChange(This,old_position,new_position)
+#define IWMPEvents_MarkerHit(This,marker) (This)->lpVtbl->MarkerHit(This,marker)
+#define IWMPEvents_DurationUnitChange(This,duration) (This)->lpVtbl->DurationUnitChange(This,duration)
+#define IWMPEvents_CdromMediaChange(This,num) (This)->lpVtbl->CdromMediaChange(This,num)
+#define IWMPEvents_PlaylistChange(This,playlist,change) (This)->lpVtbl->PlaylistChange(This,playlist,change)
+#define IWMPEvents_CurrentPlaylistChange(This,change) (This)->lpVtbl->CurrentPlaylistChange(This,change)
+#define IWMPEvents_CurrentPlaylistItemAvailable(This,item) (This)->lpVtbl->CurrentPlaylistItemAvailable(This,item)
+#define IWMPEvents_MediaChange(This,item) (This)->lpVtbl->MediaChange(This,item)
+#define IWMPEvents_CurrentMediaItemAvailable(This,name) (This)->lpVtbl->CurrentMediaItemAvailable(This,name)
+#define IWMPEvents_CurrentItemChange(This,media) (This)->lpVtbl->CurrentItemChange(This,media)
+#define IWMPEvents_MediaCollectionChange(This) (This)->lpVtbl->MediaCollectionChange(This)
+#define IWMPEvents_MediaCollectionAttributeStringAdded(This,name,val) (This)->lpVtbl->MediaCollectionAttributeStringAdded(This,name,val)
+#define IWMPEvents_MediaCollectionAttributeStringRemoved(This,name,val) (This)->lpVtbl->MediaCollectionAttributeStringRemoved(This,name,val)
+#define IWMPEvents_MediaCollectionAttributeStringChanged(This,name,old_val,new_val) (This)->lpVtbl->MediaCollectionAttributeStringChanged(This,name,old_val,new_val)
+#define IWMPEvents_PlaylistCollectionChange(This) (This)->lpVtbl->PlaylistCollectionChange(This)
+#define IWMPEvents_PlaylistCollectionPlaylistAdded(This,name) (This)->lpVtbl->PlaylistCollectionPlaylistAdded(This,name)
+#define IWMPEvents_PlaylistCollectionPlaylistRemoved(This,name) (This)->lpVtbl->PlaylistCollectionPlaylistRemoved(This,name)
+#define IWMPEvents_PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted) (This)->lpVtbl->PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted)
+#define IWMPEvents_ModeChange(This,ModeName,value) (This)->lpVtbl->ModeChange(This,ModeName,value)
+#define IWMPEvents_MediaError(This,media) (This)->lpVtbl->MediaError(This,media)
+#define IWMPEvents_OpenPlaylistSwitch(This,item) (This)->lpVtbl->OpenPlaylistSwitch(This,item)
+#define IWMPEvents_DomainChange(This,domain) (This)->lpVtbl->DomainChange(This,domain)
+#define IWMPEvents_SwitchedToPlayerApplication(This) (This)->lpVtbl->SwitchedToPlayerApplication(This)
+#define IWMPEvents_SwitchedToControl(This) (This)->lpVtbl->SwitchedToControl(This)
+#define IWMPEvents_PlayerDockedStateChange(This) (This)->lpVtbl->PlayerDockedStateChange(This)
+#define IWMPEvents_PlayerReconnect(This) (This)->lpVtbl->PlayerReconnect(This)
+#define IWMPEvents_Click(This,button,shift_state,x,y) (This)->lpVtbl->Click(This,button,shift_state,x,y)
+#define IWMPEvents_DoubleClick(This,button,shift_state,fX,fY) (This)->lpVtbl->DoubleClick(This,button,shift_state,fX,fY)
+#define IWMPEvents_KeyDown(This,keycode,shift_state) (This)->lpVtbl->KeyDown(This,keycode,shift_state)
+#define IWMPEvents_KeyPress(This,ascii) (This)->lpVtbl->KeyPress(This,ascii)
+#define IWMPEvents_KeyUp(This,keycode,shift_state) (This)->lpVtbl->KeyUp(This,keycode,shift_state)
+#define IWMPEvents_MouseDown(This,button,nShiftState,x,y) (This)->lpVtbl->MouseDown(This,button,nShiftState,x,y)
+#define IWMPEvents_MouseMove(This,button,shift_state,x,y) (This)->lpVtbl->MouseMove(This,button,shift_state,x,y)
+#define IWMPEvents_MouseUp(This,button,shift_state,x,y) (This)->lpVtbl->MouseUp(This,button,shift_state,x,y)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPEvents_QueryInterface(IWMPEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPEvents_AddRef(IWMPEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPEvents_Release(IWMPEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPEvents methods ***/
+static FORCEINLINE void IWMPEvents_OpenStateChange(IWMPEvents* This,LONG state) {
+    This->lpVtbl->OpenStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents_PlayStateChange(IWMPEvents* This,LONG state) {
+    This->lpVtbl->PlayStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents_AudioLanguageChange(IWMPEvents* This,LONG lang) {
+    This->lpVtbl->AudioLanguageChange(This,lang);
+}
+static FORCEINLINE void IWMPEvents_StatusChange(IWMPEvents* This) {
+    This->lpVtbl->StatusChange(This);
+}
+static FORCEINLINE void IWMPEvents_ScriptCommand(IWMPEvents* This,BSTR type,BSTR param) {
+    This->lpVtbl->ScriptCommand(This,type,param);
+}
+static FORCEINLINE void IWMPEvents_NewStream(IWMPEvents* This) {
+    This->lpVtbl->NewStream(This);
+}
+static FORCEINLINE void IWMPEvents_Disconnect(IWMPEvents* This,LONG result) {
+    This->lpVtbl->Disconnect(This,result);
+}
+static FORCEINLINE void IWMPEvents_Buffering(IWMPEvents* This,VARIANT_BOOL start) {
+    This->lpVtbl->Buffering(This,start);
+}
+static FORCEINLINE void IWMPEvents_Error(IWMPEvents* This) {
+    This->lpVtbl->Error(This);
+}
+static FORCEINLINE void IWMPEvents_Warning(IWMPEvents* This,LONG warning,LONG param,BSTR description) {
+    This->lpVtbl->Warning(This,warning,param,description);
+}
+static FORCEINLINE void IWMPEvents_EndOfStream(IWMPEvents* This,LONG result) {
+    This->lpVtbl->EndOfStream(This,result);
+}
+static FORCEINLINE void IWMPEvents_PositionChange(IWMPEvents* This,double old_position,double new_position) {
+    This->lpVtbl->PositionChange(This,old_position,new_position);
+}
+static FORCEINLINE void IWMPEvents_MarkerHit(IWMPEvents* This,LONG marker) {
+    This->lpVtbl->MarkerHit(This,marker);
+}
+static FORCEINLINE void IWMPEvents_DurationUnitChange(IWMPEvents* This,LONG duration) {
+    This->lpVtbl->DurationUnitChange(This,duration);
+}
+static FORCEINLINE void IWMPEvents_CdromMediaChange(IWMPEvents* This,LONG num) {
+    This->lpVtbl->CdromMediaChange(This,num);
+}
+static FORCEINLINE void IWMPEvents_PlaylistChange(IWMPEvents* This,IDispatch *playlist,WMPPlaylistChangeEventType change) {
+    This->lpVtbl->PlaylistChange(This,playlist,change);
+}
+static FORCEINLINE void IWMPEvents_CurrentPlaylistChange(IWMPEvents* This,WMPPlaylistChangeEventType change) {
+    This->lpVtbl->CurrentPlaylistChange(This,change);
+}
+static FORCEINLINE void IWMPEvents_CurrentPlaylistItemAvailable(IWMPEvents* This,BSTR item) {
+    This->lpVtbl->CurrentPlaylistItemAvailable(This,item);
+}
+static FORCEINLINE void IWMPEvents_MediaChange(IWMPEvents* This,IDispatch *item) {
+    This->lpVtbl->MediaChange(This,item);
+}
+static FORCEINLINE void IWMPEvents_CurrentMediaItemAvailable(IWMPEvents* This,BSTR name) {
+    This->lpVtbl->CurrentMediaItemAvailable(This,name);
+}
+static FORCEINLINE void IWMPEvents_CurrentItemChange(IWMPEvents* This,IDispatch *media) {
+    This->lpVtbl->CurrentItemChange(This,media);
+}
+static FORCEINLINE void IWMPEvents_MediaCollectionChange(IWMPEvents* This) {
+    This->lpVtbl->MediaCollectionChange(This);
+}
+static FORCEINLINE void IWMPEvents_MediaCollectionAttributeStringAdded(IWMPEvents* This,BSTR name,BSTR val) {
+    This->lpVtbl->MediaCollectionAttributeStringAdded(This,name,val);
+}
+static FORCEINLINE void IWMPEvents_MediaCollectionAttributeStringRemoved(IWMPEvents* This,BSTR name,BSTR val) {
+    This->lpVtbl->MediaCollectionAttributeStringRemoved(This,name,val);
+}
+static FORCEINLINE void IWMPEvents_MediaCollectionAttributeStringChanged(IWMPEvents* This,BSTR name,BSTR old_val,BSTR new_val) {
+    This->lpVtbl->MediaCollectionAttributeStringChanged(This,name,old_val,new_val);
+}
+static FORCEINLINE void IWMPEvents_PlaylistCollectionChange(IWMPEvents* This) {
+    This->lpVtbl->PlaylistCollectionChange(This);
+}
+static FORCEINLINE void IWMPEvents_PlaylistCollectionPlaylistAdded(IWMPEvents* This,BSTR name) {
+    This->lpVtbl->PlaylistCollectionPlaylistAdded(This,name);
+}
+static FORCEINLINE void IWMPEvents_PlaylistCollectionPlaylistRemoved(IWMPEvents* This,BSTR name) {
+    This->lpVtbl->PlaylistCollectionPlaylistRemoved(This,name);
+}
+static FORCEINLINE void IWMPEvents_PlaylistCollectionPlaylistSetAsDeleted(IWMPEvents* This,BSTR name,VARIANT_BOOL deleted) {
+    This->lpVtbl->PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted);
+}
+static FORCEINLINE void IWMPEvents_ModeChange(IWMPEvents* This,BSTR ModeName,VARIANT_BOOL value) {
+    This->lpVtbl->ModeChange(This,ModeName,value);
+}
+static FORCEINLINE void IWMPEvents_MediaError(IWMPEvents* This,IDispatch *media) {
+    This->lpVtbl->MediaError(This,media);
+}
+static FORCEINLINE void IWMPEvents_OpenPlaylistSwitch(IWMPEvents* This,IDispatch *item) {
+    This->lpVtbl->OpenPlaylistSwitch(This,item);
+}
+static FORCEINLINE void IWMPEvents_DomainChange(IWMPEvents* This,BSTR domain) {
+    This->lpVtbl->DomainChange(This,domain);
+}
+static FORCEINLINE void IWMPEvents_SwitchedToPlayerApplication(IWMPEvents* This) {
+    This->lpVtbl->SwitchedToPlayerApplication(This);
+}
+static FORCEINLINE void IWMPEvents_SwitchedToControl(IWMPEvents* This) {
+    This->lpVtbl->SwitchedToControl(This);
+}
+static FORCEINLINE void IWMPEvents_PlayerDockedStateChange(IWMPEvents* This) {
+    This->lpVtbl->PlayerDockedStateChange(This);
+}
+static FORCEINLINE void IWMPEvents_PlayerReconnect(IWMPEvents* This) {
+    This->lpVtbl->PlayerReconnect(This);
+}
+static FORCEINLINE void IWMPEvents_Click(IWMPEvents* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->Click(This,button,shift_state,x,y);
+}
+static FORCEINLINE void IWMPEvents_DoubleClick(IWMPEvents* This,short button,short shift_state,LONG fX,LONG fY) {
+    This->lpVtbl->DoubleClick(This,button,shift_state,fX,fY);
+}
+static FORCEINLINE void IWMPEvents_KeyDown(IWMPEvents* This,short keycode,short shift_state) {
+    This->lpVtbl->KeyDown(This,keycode,shift_state);
+}
+static FORCEINLINE void IWMPEvents_KeyPress(IWMPEvents* This,short ascii) {
+    This->lpVtbl->KeyPress(This,ascii);
+}
+static FORCEINLINE void IWMPEvents_KeyUp(IWMPEvents* This,short keycode,short shift_state) {
+    This->lpVtbl->KeyUp(This,keycode,shift_state);
+}
+static FORCEINLINE void IWMPEvents_MouseDown(IWMPEvents* This,short button,short nShiftState,LONG x,LONG y) {
+    This->lpVtbl->MouseDown(This,button,nShiftState,x,y);
+}
+static FORCEINLINE void IWMPEvents_MouseMove(IWMPEvents* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->MouseMove(This,button,shift_state,x,y);
+}
+static FORCEINLINE void IWMPEvents_MouseUp(IWMPEvents* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->MouseUp(This,button,shift_state,x,y);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPEvents_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPEvents2 interface
+ */
+#ifndef __IWMPEvents2_INTERFACE_DEFINED__
+#define __IWMPEvents2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPEvents2, 0x1e7601fa, 0x47ea, 0x4107, 0x9e,0xa9, 0x90,0x04,0xed,0x96,0x84,0xff);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1e7601fa-47ea-4107-9ea9-9004ed9684ff")
+IWMPEvents2 : public IWMPEvents
+{
+    virtual void STDMETHODCALLTYPE DeviceConnect(
+        IWMPSyncDevice *device) = 0;
+
+    virtual void STDMETHODCALLTYPE DeviceDisconnect(
+        IWMPSyncDevice *device) = 0;
+
+    virtual void STDMETHODCALLTYPE DeviceStatusChange(
+        IWMPSyncDevice *device,
+        WMPDeviceStatus status) = 0;
+
+    virtual void STDMETHODCALLTYPE DeviceSyncStateChange(
+        IWMPSyncDevice *device,
+        WMPSyncState state) = 0;
+
+    virtual void STDMETHODCALLTYPE DeviceSyncError(
+        IWMPSyncDevice *device,
+        IDispatch *media) = 0;
+
+    virtual void STDMETHODCALLTYPE CreatePartnershipComplete(
+        IWMPSyncDevice *device,
+        HRESULT result) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPEvents2, 0x1e7601fa, 0x47ea, 0x4107, 0x9e,0xa9, 0x90,0x04,0xed,0x96,0x84,0xff)
+#endif
+#else
+typedef struct IWMPEvents2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPEvents2 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPEvents2 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPEvents2 *This);
+
+    /*** IWMPEvents methods ***/
+    void (STDMETHODCALLTYPE *OpenStateChange)(
+        IWMPEvents2 *This,
+        LONG state);
+
+    void (STDMETHODCALLTYPE *PlayStateChange)(
+        IWMPEvents2 *This,
+        LONG state);
+
+    void (STDMETHODCALLTYPE *AudioLanguageChange)(
+        IWMPEvents2 *This,
+        LONG lang);
+
+    void (STDMETHODCALLTYPE *StatusChange)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *ScriptCommand)(
+        IWMPEvents2 *This,
+        BSTR type,
+        BSTR param);
+
+    void (STDMETHODCALLTYPE *NewStream)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *Disconnect)(
+        IWMPEvents2 *This,
+        LONG result);
+
+    void (STDMETHODCALLTYPE *Buffering)(
+        IWMPEvents2 *This,
+        VARIANT_BOOL start);
+
+    void (STDMETHODCALLTYPE *Error)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *Warning)(
+        IWMPEvents2 *This,
+        LONG warning,
+        LONG param,
+        BSTR description);
+
+    void (STDMETHODCALLTYPE *EndOfStream)(
+        IWMPEvents2 *This,
+        LONG result);
+
+    void (STDMETHODCALLTYPE *PositionChange)(
+        IWMPEvents2 *This,
+        double old_position,
+        double new_position);
+
+    void (STDMETHODCALLTYPE *MarkerHit)(
+        IWMPEvents2 *This,
+        LONG marker);
+
+    void (STDMETHODCALLTYPE *DurationUnitChange)(
+        IWMPEvents2 *This,
+        LONG duration);
+
+    void (STDMETHODCALLTYPE *CdromMediaChange)(
+        IWMPEvents2 *This,
+        LONG num);
+
+    void (STDMETHODCALLTYPE *PlaylistChange)(
+        IWMPEvents2 *This,
+        IDispatch *playlist,
+        WMPPlaylistChangeEventType change);
+
+    void (STDMETHODCALLTYPE *CurrentPlaylistChange)(
+        IWMPEvents2 *This,
+        WMPPlaylistChangeEventType change);
+
+    void (STDMETHODCALLTYPE *CurrentPlaylistItemAvailable)(
+        IWMPEvents2 *This,
+        BSTR item);
+
+    void (STDMETHODCALLTYPE *MediaChange)(
+        IWMPEvents2 *This,
+        IDispatch *item);
+
+    void (STDMETHODCALLTYPE *CurrentMediaItemAvailable)(
+        IWMPEvents2 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *CurrentItemChange)(
+        IWMPEvents2 *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *MediaCollectionChange)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringAdded)(
+        IWMPEvents2 *This,
+        BSTR name,
+        BSTR val);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringRemoved)(
+        IWMPEvents2 *This,
+        BSTR name,
+        BSTR val);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringChanged)(
+        IWMPEvents2 *This,
+        BSTR name,
+        BSTR old_val,
+        BSTR new_val);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionChange)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistAdded)(
+        IWMPEvents2 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistRemoved)(
+        IWMPEvents2 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistSetAsDeleted)(
+        IWMPEvents2 *This,
+        BSTR name,
+        VARIANT_BOOL deleted);
+
+    void (STDMETHODCALLTYPE *ModeChange)(
+        IWMPEvents2 *This,
+        BSTR ModeName,
+        VARIANT_BOOL value);
+
+    void (STDMETHODCALLTYPE *MediaError)(
+        IWMPEvents2 *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *OpenPlaylistSwitch)(
+        IWMPEvents2 *This,
+        IDispatch *item);
+
+    void (STDMETHODCALLTYPE *DomainChange)(
+        IWMPEvents2 *This,
+        BSTR domain);
+
+    void (STDMETHODCALLTYPE *SwitchedToPlayerApplication)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *SwitchedToControl)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *PlayerDockedStateChange)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *PlayerReconnect)(
+        IWMPEvents2 *This);
+
+    void (STDMETHODCALLTYPE *Click)(
+        IWMPEvents2 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *DoubleClick)(
+        IWMPEvents2 *This,
+        short button,
+        short shift_state,
+        LONG fX,
+        LONG fY);
+
+    void (STDMETHODCALLTYPE *KeyDown)(
+        IWMPEvents2 *This,
+        short keycode,
+        short shift_state);
+
+    void (STDMETHODCALLTYPE *KeyPress)(
+        IWMPEvents2 *This,
+        short ascii);
+
+    void (STDMETHODCALLTYPE *KeyUp)(
+        IWMPEvents2 *This,
+        short keycode,
+        short shift_state);
+
+    void (STDMETHODCALLTYPE *MouseDown)(
+        IWMPEvents2 *This,
+        short button,
+        short nShiftState,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *MouseMove)(
+        IWMPEvents2 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *MouseUp)(
+        IWMPEvents2 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    /*** IWMPEvents2 methods ***/
+    void (STDMETHODCALLTYPE *DeviceConnect)(
+        IWMPEvents2 *This,
+        IWMPSyncDevice *device);
+
+    void (STDMETHODCALLTYPE *DeviceDisconnect)(
+        IWMPEvents2 *This,
+        IWMPSyncDevice *device);
+
+    void (STDMETHODCALLTYPE *DeviceStatusChange)(
+        IWMPEvents2 *This,
+        IWMPSyncDevice *device,
+        WMPDeviceStatus status);
+
+    void (STDMETHODCALLTYPE *DeviceSyncStateChange)(
+        IWMPEvents2 *This,
+        IWMPSyncDevice *device,
+        WMPSyncState state);
+
+    void (STDMETHODCALLTYPE *DeviceSyncError)(
+        IWMPEvents2 *This,
+        IWMPSyncDevice *device,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *CreatePartnershipComplete)(
+        IWMPEvents2 *This,
+        IWMPSyncDevice *device,
+        HRESULT result);
+
+    END_INTERFACE
+} IWMPEvents2Vtbl;
+
+interface IWMPEvents2 {
+    CONST_VTBL IWMPEvents2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPEvents2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPEvents2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPEvents2_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPEvents methods ***/
+#define IWMPEvents2_OpenStateChange(This,state) (This)->lpVtbl->OpenStateChange(This,state)
+#define IWMPEvents2_PlayStateChange(This,state) (This)->lpVtbl->PlayStateChange(This,state)
+#define IWMPEvents2_AudioLanguageChange(This,lang) (This)->lpVtbl->AudioLanguageChange(This,lang)
+#define IWMPEvents2_StatusChange(This) (This)->lpVtbl->StatusChange(This)
+#define IWMPEvents2_ScriptCommand(This,type,param) (This)->lpVtbl->ScriptCommand(This,type,param)
+#define IWMPEvents2_NewStream(This) (This)->lpVtbl->NewStream(This)
+#define IWMPEvents2_Disconnect(This,result) (This)->lpVtbl->Disconnect(This,result)
+#define IWMPEvents2_Buffering(This,start) (This)->lpVtbl->Buffering(This,start)
+#define IWMPEvents2_Error(This) (This)->lpVtbl->Error(This)
+#define IWMPEvents2_Warning(This,warning,param,description) (This)->lpVtbl->Warning(This,warning,param,description)
+#define IWMPEvents2_EndOfStream(This,result) (This)->lpVtbl->EndOfStream(This,result)
+#define IWMPEvents2_PositionChange(This,old_position,new_position) (This)->lpVtbl->PositionChange(This,old_position,new_position)
+#define IWMPEvents2_MarkerHit(This,marker) (This)->lpVtbl->MarkerHit(This,marker)
+#define IWMPEvents2_DurationUnitChange(This,duration) (This)->lpVtbl->DurationUnitChange(This,duration)
+#define IWMPEvents2_CdromMediaChange(This,num) (This)->lpVtbl->CdromMediaChange(This,num)
+#define IWMPEvents2_PlaylistChange(This,playlist,change) (This)->lpVtbl->PlaylistChange(This,playlist,change)
+#define IWMPEvents2_CurrentPlaylistChange(This,change) (This)->lpVtbl->CurrentPlaylistChange(This,change)
+#define IWMPEvents2_CurrentPlaylistItemAvailable(This,item) (This)->lpVtbl->CurrentPlaylistItemAvailable(This,item)
+#define IWMPEvents2_MediaChange(This,item) (This)->lpVtbl->MediaChange(This,item)
+#define IWMPEvents2_CurrentMediaItemAvailable(This,name) (This)->lpVtbl->CurrentMediaItemAvailable(This,name)
+#define IWMPEvents2_CurrentItemChange(This,media) (This)->lpVtbl->CurrentItemChange(This,media)
+#define IWMPEvents2_MediaCollectionChange(This) (This)->lpVtbl->MediaCollectionChange(This)
+#define IWMPEvents2_MediaCollectionAttributeStringAdded(This,name,val) (This)->lpVtbl->MediaCollectionAttributeStringAdded(This,name,val)
+#define IWMPEvents2_MediaCollectionAttributeStringRemoved(This,name,val) (This)->lpVtbl->MediaCollectionAttributeStringRemoved(This,name,val)
+#define IWMPEvents2_MediaCollectionAttributeStringChanged(This,name,old_val,new_val) (This)->lpVtbl->MediaCollectionAttributeStringChanged(This,name,old_val,new_val)
+#define IWMPEvents2_PlaylistCollectionChange(This) (This)->lpVtbl->PlaylistCollectionChange(This)
+#define IWMPEvents2_PlaylistCollectionPlaylistAdded(This,name) (This)->lpVtbl->PlaylistCollectionPlaylistAdded(This,name)
+#define IWMPEvents2_PlaylistCollectionPlaylistRemoved(This,name) (This)->lpVtbl->PlaylistCollectionPlaylistRemoved(This,name)
+#define IWMPEvents2_PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted) (This)->lpVtbl->PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted)
+#define IWMPEvents2_ModeChange(This,ModeName,value) (This)->lpVtbl->ModeChange(This,ModeName,value)
+#define IWMPEvents2_MediaError(This,media) (This)->lpVtbl->MediaError(This,media)
+#define IWMPEvents2_OpenPlaylistSwitch(This,item) (This)->lpVtbl->OpenPlaylistSwitch(This,item)
+#define IWMPEvents2_DomainChange(This,domain) (This)->lpVtbl->DomainChange(This,domain)
+#define IWMPEvents2_SwitchedToPlayerApplication(This) (This)->lpVtbl->SwitchedToPlayerApplication(This)
+#define IWMPEvents2_SwitchedToControl(This) (This)->lpVtbl->SwitchedToControl(This)
+#define IWMPEvents2_PlayerDockedStateChange(This) (This)->lpVtbl->PlayerDockedStateChange(This)
+#define IWMPEvents2_PlayerReconnect(This) (This)->lpVtbl->PlayerReconnect(This)
+#define IWMPEvents2_Click(This,button,shift_state,x,y) (This)->lpVtbl->Click(This,button,shift_state,x,y)
+#define IWMPEvents2_DoubleClick(This,button,shift_state,fX,fY) (This)->lpVtbl->DoubleClick(This,button,shift_state,fX,fY)
+#define IWMPEvents2_KeyDown(This,keycode,shift_state) (This)->lpVtbl->KeyDown(This,keycode,shift_state)
+#define IWMPEvents2_KeyPress(This,ascii) (This)->lpVtbl->KeyPress(This,ascii)
+#define IWMPEvents2_KeyUp(This,keycode,shift_state) (This)->lpVtbl->KeyUp(This,keycode,shift_state)
+#define IWMPEvents2_MouseDown(This,button,nShiftState,x,y) (This)->lpVtbl->MouseDown(This,button,nShiftState,x,y)
+#define IWMPEvents2_MouseMove(This,button,shift_state,x,y) (This)->lpVtbl->MouseMove(This,button,shift_state,x,y)
+#define IWMPEvents2_MouseUp(This,button,shift_state,x,y) (This)->lpVtbl->MouseUp(This,button,shift_state,x,y)
+/*** IWMPEvents2 methods ***/
+#define IWMPEvents2_DeviceConnect(This,device) (This)->lpVtbl->DeviceConnect(This,device)
+#define IWMPEvents2_DeviceDisconnect(This,device) (This)->lpVtbl->DeviceDisconnect(This,device)
+#define IWMPEvents2_DeviceStatusChange(This,device,status) (This)->lpVtbl->DeviceStatusChange(This,device,status)
+#define IWMPEvents2_DeviceSyncStateChange(This,device,state) (This)->lpVtbl->DeviceSyncStateChange(This,device,state)
+#define IWMPEvents2_DeviceSyncError(This,device,media) (This)->lpVtbl->DeviceSyncError(This,device,media)
+#define IWMPEvents2_CreatePartnershipComplete(This,device,result) (This)->lpVtbl->CreatePartnershipComplete(This,device,result)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPEvents2_QueryInterface(IWMPEvents2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPEvents2_AddRef(IWMPEvents2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPEvents2_Release(IWMPEvents2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPEvents methods ***/
+static FORCEINLINE void IWMPEvents2_OpenStateChange(IWMPEvents2* This,LONG state) {
+    This->lpVtbl->OpenStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents2_PlayStateChange(IWMPEvents2* This,LONG state) {
+    This->lpVtbl->PlayStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents2_AudioLanguageChange(IWMPEvents2* This,LONG lang) {
+    This->lpVtbl->AudioLanguageChange(This,lang);
+}
+static FORCEINLINE void IWMPEvents2_StatusChange(IWMPEvents2* This) {
+    This->lpVtbl->StatusChange(This);
+}
+static FORCEINLINE void IWMPEvents2_ScriptCommand(IWMPEvents2* This,BSTR type,BSTR param) {
+    This->lpVtbl->ScriptCommand(This,type,param);
+}
+static FORCEINLINE void IWMPEvents2_NewStream(IWMPEvents2* This) {
+    This->lpVtbl->NewStream(This);
+}
+static FORCEINLINE void IWMPEvents2_Disconnect(IWMPEvents2* This,LONG result) {
+    This->lpVtbl->Disconnect(This,result);
+}
+static FORCEINLINE void IWMPEvents2_Buffering(IWMPEvents2* This,VARIANT_BOOL start) {
+    This->lpVtbl->Buffering(This,start);
+}
+static FORCEINLINE void IWMPEvents2_Error(IWMPEvents2* This) {
+    This->lpVtbl->Error(This);
+}
+static FORCEINLINE void IWMPEvents2_Warning(IWMPEvents2* This,LONG warning,LONG param,BSTR description) {
+    This->lpVtbl->Warning(This,warning,param,description);
+}
+static FORCEINLINE void IWMPEvents2_EndOfStream(IWMPEvents2* This,LONG result) {
+    This->lpVtbl->EndOfStream(This,result);
+}
+static FORCEINLINE void IWMPEvents2_PositionChange(IWMPEvents2* This,double old_position,double new_position) {
+    This->lpVtbl->PositionChange(This,old_position,new_position);
+}
+static FORCEINLINE void IWMPEvents2_MarkerHit(IWMPEvents2* This,LONG marker) {
+    This->lpVtbl->MarkerHit(This,marker);
+}
+static FORCEINLINE void IWMPEvents2_DurationUnitChange(IWMPEvents2* This,LONG duration) {
+    This->lpVtbl->DurationUnitChange(This,duration);
+}
+static FORCEINLINE void IWMPEvents2_CdromMediaChange(IWMPEvents2* This,LONG num) {
+    This->lpVtbl->CdromMediaChange(This,num);
+}
+static FORCEINLINE void IWMPEvents2_PlaylistChange(IWMPEvents2* This,IDispatch *playlist,WMPPlaylistChangeEventType change) {
+    This->lpVtbl->PlaylistChange(This,playlist,change);
+}
+static FORCEINLINE void IWMPEvents2_CurrentPlaylistChange(IWMPEvents2* This,WMPPlaylistChangeEventType change) {
+    This->lpVtbl->CurrentPlaylistChange(This,change);
+}
+static FORCEINLINE void IWMPEvents2_CurrentPlaylistItemAvailable(IWMPEvents2* This,BSTR item) {
+    This->lpVtbl->CurrentPlaylistItemAvailable(This,item);
+}
+static FORCEINLINE void IWMPEvents2_MediaChange(IWMPEvents2* This,IDispatch *item) {
+    This->lpVtbl->MediaChange(This,item);
+}
+static FORCEINLINE void IWMPEvents2_CurrentMediaItemAvailable(IWMPEvents2* This,BSTR name) {
+    This->lpVtbl->CurrentMediaItemAvailable(This,name);
+}
+static FORCEINLINE void IWMPEvents2_CurrentItemChange(IWMPEvents2* This,IDispatch *media) {
+    This->lpVtbl->CurrentItemChange(This,media);
+}
+static FORCEINLINE void IWMPEvents2_MediaCollectionChange(IWMPEvents2* This) {
+    This->lpVtbl->MediaCollectionChange(This);
+}
+static FORCEINLINE void IWMPEvents2_MediaCollectionAttributeStringAdded(IWMPEvents2* This,BSTR name,BSTR val) {
+    This->lpVtbl->MediaCollectionAttributeStringAdded(This,name,val);
+}
+static FORCEINLINE void IWMPEvents2_MediaCollectionAttributeStringRemoved(IWMPEvents2* This,BSTR name,BSTR val) {
+    This->lpVtbl->MediaCollectionAttributeStringRemoved(This,name,val);
+}
+static FORCEINLINE void IWMPEvents2_MediaCollectionAttributeStringChanged(IWMPEvents2* This,BSTR name,BSTR old_val,BSTR new_val) {
+    This->lpVtbl->MediaCollectionAttributeStringChanged(This,name,old_val,new_val);
+}
+static FORCEINLINE void IWMPEvents2_PlaylistCollectionChange(IWMPEvents2* This) {
+    This->lpVtbl->PlaylistCollectionChange(This);
+}
+static FORCEINLINE void IWMPEvents2_PlaylistCollectionPlaylistAdded(IWMPEvents2* This,BSTR name) {
+    This->lpVtbl->PlaylistCollectionPlaylistAdded(This,name);
+}
+static FORCEINLINE void IWMPEvents2_PlaylistCollectionPlaylistRemoved(IWMPEvents2* This,BSTR name) {
+    This->lpVtbl->PlaylistCollectionPlaylistRemoved(This,name);
+}
+static FORCEINLINE void IWMPEvents2_PlaylistCollectionPlaylistSetAsDeleted(IWMPEvents2* This,BSTR name,VARIANT_BOOL deleted) {
+    This->lpVtbl->PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted);
+}
+static FORCEINLINE void IWMPEvents2_ModeChange(IWMPEvents2* This,BSTR ModeName,VARIANT_BOOL value) {
+    This->lpVtbl->ModeChange(This,ModeName,value);
+}
+static FORCEINLINE void IWMPEvents2_MediaError(IWMPEvents2* This,IDispatch *media) {
+    This->lpVtbl->MediaError(This,media);
+}
+static FORCEINLINE void IWMPEvents2_OpenPlaylistSwitch(IWMPEvents2* This,IDispatch *item) {
+    This->lpVtbl->OpenPlaylistSwitch(This,item);
+}
+static FORCEINLINE void IWMPEvents2_DomainChange(IWMPEvents2* This,BSTR domain) {
+    This->lpVtbl->DomainChange(This,domain);
+}
+static FORCEINLINE void IWMPEvents2_SwitchedToPlayerApplication(IWMPEvents2* This) {
+    This->lpVtbl->SwitchedToPlayerApplication(This);
+}
+static FORCEINLINE void IWMPEvents2_SwitchedToControl(IWMPEvents2* This) {
+    This->lpVtbl->SwitchedToControl(This);
+}
+static FORCEINLINE void IWMPEvents2_PlayerDockedStateChange(IWMPEvents2* This) {
+    This->lpVtbl->PlayerDockedStateChange(This);
+}
+static FORCEINLINE void IWMPEvents2_PlayerReconnect(IWMPEvents2* This) {
+    This->lpVtbl->PlayerReconnect(This);
+}
+static FORCEINLINE void IWMPEvents2_Click(IWMPEvents2* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->Click(This,button,shift_state,x,y);
+}
+static FORCEINLINE void IWMPEvents2_DoubleClick(IWMPEvents2* This,short button,short shift_state,LONG fX,LONG fY) {
+    This->lpVtbl->DoubleClick(This,button,shift_state,fX,fY);
+}
+static FORCEINLINE void IWMPEvents2_KeyDown(IWMPEvents2* This,short keycode,short shift_state) {
+    This->lpVtbl->KeyDown(This,keycode,shift_state);
+}
+static FORCEINLINE void IWMPEvents2_KeyPress(IWMPEvents2* This,short ascii) {
+    This->lpVtbl->KeyPress(This,ascii);
+}
+static FORCEINLINE void IWMPEvents2_KeyUp(IWMPEvents2* This,short keycode,short shift_state) {
+    This->lpVtbl->KeyUp(This,keycode,shift_state);
+}
+static FORCEINLINE void IWMPEvents2_MouseDown(IWMPEvents2* This,short button,short nShiftState,LONG x,LONG y) {
+    This->lpVtbl->MouseDown(This,button,nShiftState,x,y);
+}
+static FORCEINLINE void IWMPEvents2_MouseMove(IWMPEvents2* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->MouseMove(This,button,shift_state,x,y);
+}
+static FORCEINLINE void IWMPEvents2_MouseUp(IWMPEvents2* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->MouseUp(This,button,shift_state,x,y);
+}
+/*** IWMPEvents2 methods ***/
+static FORCEINLINE void IWMPEvents2_DeviceConnect(IWMPEvents2* This,IWMPSyncDevice *device) {
+    This->lpVtbl->DeviceConnect(This,device);
+}
+static FORCEINLINE void IWMPEvents2_DeviceDisconnect(IWMPEvents2* This,IWMPSyncDevice *device) {
+    This->lpVtbl->DeviceDisconnect(This,device);
+}
+static FORCEINLINE void IWMPEvents2_DeviceStatusChange(IWMPEvents2* This,IWMPSyncDevice *device,WMPDeviceStatus status) {
+    This->lpVtbl->DeviceStatusChange(This,device,status);
+}
+static FORCEINLINE void IWMPEvents2_DeviceSyncStateChange(IWMPEvents2* This,IWMPSyncDevice *device,WMPSyncState state) {
+    This->lpVtbl->DeviceSyncStateChange(This,device,state);
+}
+static FORCEINLINE void IWMPEvents2_DeviceSyncError(IWMPEvents2* This,IWMPSyncDevice *device,IDispatch *media) {
+    This->lpVtbl->DeviceSyncError(This,device,media);
+}
+static FORCEINLINE void IWMPEvents2_CreatePartnershipComplete(IWMPEvents2* This,IWMPSyncDevice *device,HRESULT result) {
+    This->lpVtbl->CreatePartnershipComplete(This,device,result);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPEvents2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPEvents3 interface
+ */
+#ifndef __IWMPEvents3_INTERFACE_DEFINED__
+#define __IWMPEvents3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPEvents3, 0x1f504270, 0xa66b, 0x4223, 0x8e,0x96, 0x26,0xa0,0x6c,0x63,0xd6,0x9f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1f504270-a66b-4223-8e96-26a06c63d69f")
+IWMPEvents3 : public IWMPEvents2
+{
+    virtual void STDMETHODCALLTYPE CdromRipStateChange(
+        IWMPCdromRip *rip,
+        WMPRipState state) = 0;
+
+    virtual void STDMETHODCALLTYPE CdromRipMediaError(
+        IWMPCdromRip *rip,
+        IDispatch *media) = 0;
+
+    virtual void STDMETHODCALLTYPE CdromBurnStateChange(
+        IWMPCdromBurn *burn,
+        WMPBurnState state) = 0;
+
+    virtual void STDMETHODCALLTYPE CdromBurnMediaError(
+        IWMPCdromBurn *burn,
+        IDispatch *media) = 0;
+
+    virtual void STDMETHODCALLTYPE CdromBurnError(
+        IWMPCdromBurn *burn,
+        HRESULT error) = 0;
+
+    virtual void STDMETHODCALLTYPE LibraryConnect(
+        IWMPLibrary *wmplibrary) = 0;
+
+    virtual void STDMETHODCALLTYPE LibraryDisconnect(
+        IWMPLibrary *wmplibrary) = 0;
+
+    virtual void STDMETHODCALLTYPE FolderScanStateChange(
+        WMPFolderScanState state) = 0;
+
+    virtual void STDMETHODCALLTYPE StringCollectionChange(
+        IDispatch *collection,
+        WMPStringCollectionChangeEventType change,
+        LONG index) = 0;
+
+    virtual void STDMETHODCALLTYPE MediaCollectionMediaAdded(
+        IDispatch *media) = 0;
+
+    virtual void STDMETHODCALLTYPE MediaCollectionMediaRemoved(
+        IDispatch *media) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPEvents3, 0x1f504270, 0xa66b, 0x4223, 0x8e,0x96, 0x26,0xa0,0x6c,0x63,0xd6,0x9f)
+#endif
+#else
+typedef struct IWMPEvents3Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPEvents3 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPEvents3 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPEvents3 *This);
+
+    /*** IWMPEvents methods ***/
+    void (STDMETHODCALLTYPE *OpenStateChange)(
+        IWMPEvents3 *This,
+        LONG state);
+
+    void (STDMETHODCALLTYPE *PlayStateChange)(
+        IWMPEvents3 *This,
+        LONG state);
+
+    void (STDMETHODCALLTYPE *AudioLanguageChange)(
+        IWMPEvents3 *This,
+        LONG lang);
+
+    void (STDMETHODCALLTYPE *StatusChange)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *ScriptCommand)(
+        IWMPEvents3 *This,
+        BSTR type,
+        BSTR param);
+
+    void (STDMETHODCALLTYPE *NewStream)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *Disconnect)(
+        IWMPEvents3 *This,
+        LONG result);
+
+    void (STDMETHODCALLTYPE *Buffering)(
+        IWMPEvents3 *This,
+        VARIANT_BOOL start);
+
+    void (STDMETHODCALLTYPE *Error)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *Warning)(
+        IWMPEvents3 *This,
+        LONG warning,
+        LONG param,
+        BSTR description);
+
+    void (STDMETHODCALLTYPE *EndOfStream)(
+        IWMPEvents3 *This,
+        LONG result);
+
+    void (STDMETHODCALLTYPE *PositionChange)(
+        IWMPEvents3 *This,
+        double old_position,
+        double new_position);
+
+    void (STDMETHODCALLTYPE *MarkerHit)(
+        IWMPEvents3 *This,
+        LONG marker);
+
+    void (STDMETHODCALLTYPE *DurationUnitChange)(
+        IWMPEvents3 *This,
+        LONG duration);
+
+    void (STDMETHODCALLTYPE *CdromMediaChange)(
+        IWMPEvents3 *This,
+        LONG num);
+
+    void (STDMETHODCALLTYPE *PlaylistChange)(
+        IWMPEvents3 *This,
+        IDispatch *playlist,
+        WMPPlaylistChangeEventType change);
+
+    void (STDMETHODCALLTYPE *CurrentPlaylistChange)(
+        IWMPEvents3 *This,
+        WMPPlaylistChangeEventType change);
+
+    void (STDMETHODCALLTYPE *CurrentPlaylistItemAvailable)(
+        IWMPEvents3 *This,
+        BSTR item);
+
+    void (STDMETHODCALLTYPE *MediaChange)(
+        IWMPEvents3 *This,
+        IDispatch *item);
+
+    void (STDMETHODCALLTYPE *CurrentMediaItemAvailable)(
+        IWMPEvents3 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *CurrentItemChange)(
+        IWMPEvents3 *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *MediaCollectionChange)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringAdded)(
+        IWMPEvents3 *This,
+        BSTR name,
+        BSTR val);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringRemoved)(
+        IWMPEvents3 *This,
+        BSTR name,
+        BSTR val);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringChanged)(
+        IWMPEvents3 *This,
+        BSTR name,
+        BSTR old_val,
+        BSTR new_val);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionChange)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistAdded)(
+        IWMPEvents3 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistRemoved)(
+        IWMPEvents3 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistSetAsDeleted)(
+        IWMPEvents3 *This,
+        BSTR name,
+        VARIANT_BOOL deleted);
+
+    void (STDMETHODCALLTYPE *ModeChange)(
+        IWMPEvents3 *This,
+        BSTR ModeName,
+        VARIANT_BOOL value);
+
+    void (STDMETHODCALLTYPE *MediaError)(
+        IWMPEvents3 *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *OpenPlaylistSwitch)(
+        IWMPEvents3 *This,
+        IDispatch *item);
+
+    void (STDMETHODCALLTYPE *DomainChange)(
+        IWMPEvents3 *This,
+        BSTR domain);
+
+    void (STDMETHODCALLTYPE *SwitchedToPlayerApplication)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *SwitchedToControl)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *PlayerDockedStateChange)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *PlayerReconnect)(
+        IWMPEvents3 *This);
+
+    void (STDMETHODCALLTYPE *Click)(
+        IWMPEvents3 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *DoubleClick)(
+        IWMPEvents3 *This,
+        short button,
+        short shift_state,
+        LONG fX,
+        LONG fY);
+
+    void (STDMETHODCALLTYPE *KeyDown)(
+        IWMPEvents3 *This,
+        short keycode,
+        short shift_state);
+
+    void (STDMETHODCALLTYPE *KeyPress)(
+        IWMPEvents3 *This,
+        short ascii);
+
+    void (STDMETHODCALLTYPE *KeyUp)(
+        IWMPEvents3 *This,
+        short keycode,
+        short shift_state);
+
+    void (STDMETHODCALLTYPE *MouseDown)(
+        IWMPEvents3 *This,
+        short button,
+        short nShiftState,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *MouseMove)(
+        IWMPEvents3 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *MouseUp)(
+        IWMPEvents3 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    /*** IWMPEvents2 methods ***/
+    void (STDMETHODCALLTYPE *DeviceConnect)(
+        IWMPEvents3 *This,
+        IWMPSyncDevice *device);
+
+    void (STDMETHODCALLTYPE *DeviceDisconnect)(
+        IWMPEvents3 *This,
+        IWMPSyncDevice *device);
+
+    void (STDMETHODCALLTYPE *DeviceStatusChange)(
+        IWMPEvents3 *This,
+        IWMPSyncDevice *device,
+        WMPDeviceStatus status);
+
+    void (STDMETHODCALLTYPE *DeviceSyncStateChange)(
+        IWMPEvents3 *This,
+        IWMPSyncDevice *device,
+        WMPSyncState state);
+
+    void (STDMETHODCALLTYPE *DeviceSyncError)(
+        IWMPEvents3 *This,
+        IWMPSyncDevice *device,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *CreatePartnershipComplete)(
+        IWMPEvents3 *This,
+        IWMPSyncDevice *device,
+        HRESULT result);
+
+    /*** IWMPEvents3 methods ***/
+    void (STDMETHODCALLTYPE *CdromRipStateChange)(
+        IWMPEvents3 *This,
+        IWMPCdromRip *rip,
+        WMPRipState state);
+
+    void (STDMETHODCALLTYPE *CdromRipMediaError)(
+        IWMPEvents3 *This,
+        IWMPCdromRip *rip,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *CdromBurnStateChange)(
+        IWMPEvents3 *This,
+        IWMPCdromBurn *burn,
+        WMPBurnState state);
+
+    void (STDMETHODCALLTYPE *CdromBurnMediaError)(
+        IWMPEvents3 *This,
+        IWMPCdromBurn *burn,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *CdromBurnError)(
+        IWMPEvents3 *This,
+        IWMPCdromBurn *burn,
+        HRESULT error);
+
+    void (STDMETHODCALLTYPE *LibraryConnect)(
+        IWMPEvents3 *This,
+        IWMPLibrary *wmplibrary);
+
+    void (STDMETHODCALLTYPE *LibraryDisconnect)(
+        IWMPEvents3 *This,
+        IWMPLibrary *wmplibrary);
+
+    void (STDMETHODCALLTYPE *FolderScanStateChange)(
+        IWMPEvents3 *This,
+        WMPFolderScanState state);
+
+    void (STDMETHODCALLTYPE *StringCollectionChange)(
+        IWMPEvents3 *This,
+        IDispatch *collection,
+        WMPStringCollectionChangeEventType change,
+        LONG index);
+
+    void (STDMETHODCALLTYPE *MediaCollectionMediaAdded)(
+        IWMPEvents3 *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *MediaCollectionMediaRemoved)(
+        IWMPEvents3 *This,
+        IDispatch *media);
+
+    END_INTERFACE
+} IWMPEvents3Vtbl;
+
+interface IWMPEvents3 {
+    CONST_VTBL IWMPEvents3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPEvents3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPEvents3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPEvents3_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPEvents methods ***/
+#define IWMPEvents3_OpenStateChange(This,state) (This)->lpVtbl->OpenStateChange(This,state)
+#define IWMPEvents3_PlayStateChange(This,state) (This)->lpVtbl->PlayStateChange(This,state)
+#define IWMPEvents3_AudioLanguageChange(This,lang) (This)->lpVtbl->AudioLanguageChange(This,lang)
+#define IWMPEvents3_StatusChange(This) (This)->lpVtbl->StatusChange(This)
+#define IWMPEvents3_ScriptCommand(This,type,param) (This)->lpVtbl->ScriptCommand(This,type,param)
+#define IWMPEvents3_NewStream(This) (This)->lpVtbl->NewStream(This)
+#define IWMPEvents3_Disconnect(This,result) (This)->lpVtbl->Disconnect(This,result)
+#define IWMPEvents3_Buffering(This,start) (This)->lpVtbl->Buffering(This,start)
+#define IWMPEvents3_Error(This) (This)->lpVtbl->Error(This)
+#define IWMPEvents3_Warning(This,warning,param,description) (This)->lpVtbl->Warning(This,warning,param,description)
+#define IWMPEvents3_EndOfStream(This,result) (This)->lpVtbl->EndOfStream(This,result)
+#define IWMPEvents3_PositionChange(This,old_position,new_position) (This)->lpVtbl->PositionChange(This,old_position,new_position)
+#define IWMPEvents3_MarkerHit(This,marker) (This)->lpVtbl->MarkerHit(This,marker)
+#define IWMPEvents3_DurationUnitChange(This,duration) (This)->lpVtbl->DurationUnitChange(This,duration)
+#define IWMPEvents3_CdromMediaChange(This,num) (This)->lpVtbl->CdromMediaChange(This,num)
+#define IWMPEvents3_PlaylistChange(This,playlist,change) (This)->lpVtbl->PlaylistChange(This,playlist,change)
+#define IWMPEvents3_CurrentPlaylistChange(This,change) (This)->lpVtbl->CurrentPlaylistChange(This,change)
+#define IWMPEvents3_CurrentPlaylistItemAvailable(This,item) (This)->lpVtbl->CurrentPlaylistItemAvailable(This,item)
+#define IWMPEvents3_MediaChange(This,item) (This)->lpVtbl->MediaChange(This,item)
+#define IWMPEvents3_CurrentMediaItemAvailable(This,name) (This)->lpVtbl->CurrentMediaItemAvailable(This,name)
+#define IWMPEvents3_CurrentItemChange(This,media) (This)->lpVtbl->CurrentItemChange(This,media)
+#define IWMPEvents3_MediaCollectionChange(This) (This)->lpVtbl->MediaCollectionChange(This)
+#define IWMPEvents3_MediaCollectionAttributeStringAdded(This,name,val) (This)->lpVtbl->MediaCollectionAttributeStringAdded(This,name,val)
+#define IWMPEvents3_MediaCollectionAttributeStringRemoved(This,name,val) (This)->lpVtbl->MediaCollectionAttributeStringRemoved(This,name,val)
+#define IWMPEvents3_MediaCollectionAttributeStringChanged(This,name,old_val,new_val) (This)->lpVtbl->MediaCollectionAttributeStringChanged(This,name,old_val,new_val)
+#define IWMPEvents3_PlaylistCollectionChange(This) (This)->lpVtbl->PlaylistCollectionChange(This)
+#define IWMPEvents3_PlaylistCollectionPlaylistAdded(This,name) (This)->lpVtbl->PlaylistCollectionPlaylistAdded(This,name)
+#define IWMPEvents3_PlaylistCollectionPlaylistRemoved(This,name) (This)->lpVtbl->PlaylistCollectionPlaylistRemoved(This,name)
+#define IWMPEvents3_PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted) (This)->lpVtbl->PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted)
+#define IWMPEvents3_ModeChange(This,ModeName,value) (This)->lpVtbl->ModeChange(This,ModeName,value)
+#define IWMPEvents3_MediaError(This,media) (This)->lpVtbl->MediaError(This,media)
+#define IWMPEvents3_OpenPlaylistSwitch(This,item) (This)->lpVtbl->OpenPlaylistSwitch(This,item)
+#define IWMPEvents3_DomainChange(This,domain) (This)->lpVtbl->DomainChange(This,domain)
+#define IWMPEvents3_SwitchedToPlayerApplication(This) (This)->lpVtbl->SwitchedToPlayerApplication(This)
+#define IWMPEvents3_SwitchedToControl(This) (This)->lpVtbl->SwitchedToControl(This)
+#define IWMPEvents3_PlayerDockedStateChange(This) (This)->lpVtbl->PlayerDockedStateChange(This)
+#define IWMPEvents3_PlayerReconnect(This) (This)->lpVtbl->PlayerReconnect(This)
+#define IWMPEvents3_Click(This,button,shift_state,x,y) (This)->lpVtbl->Click(This,button,shift_state,x,y)
+#define IWMPEvents3_DoubleClick(This,button,shift_state,fX,fY) (This)->lpVtbl->DoubleClick(This,button,shift_state,fX,fY)
+#define IWMPEvents3_KeyDown(This,keycode,shift_state) (This)->lpVtbl->KeyDown(This,keycode,shift_state)
+#define IWMPEvents3_KeyPress(This,ascii) (This)->lpVtbl->KeyPress(This,ascii)
+#define IWMPEvents3_KeyUp(This,keycode,shift_state) (This)->lpVtbl->KeyUp(This,keycode,shift_state)
+#define IWMPEvents3_MouseDown(This,button,nShiftState,x,y) (This)->lpVtbl->MouseDown(This,button,nShiftState,x,y)
+#define IWMPEvents3_MouseMove(This,button,shift_state,x,y) (This)->lpVtbl->MouseMove(This,button,shift_state,x,y)
+#define IWMPEvents3_MouseUp(This,button,shift_state,x,y) (This)->lpVtbl->MouseUp(This,button,shift_state,x,y)
+/*** IWMPEvents2 methods ***/
+#define IWMPEvents3_DeviceConnect(This,device) (This)->lpVtbl->DeviceConnect(This,device)
+#define IWMPEvents3_DeviceDisconnect(This,device) (This)->lpVtbl->DeviceDisconnect(This,device)
+#define IWMPEvents3_DeviceStatusChange(This,device,status) (This)->lpVtbl->DeviceStatusChange(This,device,status)
+#define IWMPEvents3_DeviceSyncStateChange(This,device,state) (This)->lpVtbl->DeviceSyncStateChange(This,device,state)
+#define IWMPEvents3_DeviceSyncError(This,device,media) (This)->lpVtbl->DeviceSyncError(This,device,media)
+#define IWMPEvents3_CreatePartnershipComplete(This,device,result) (This)->lpVtbl->CreatePartnershipComplete(This,device,result)
+/*** IWMPEvents3 methods ***/
+#define IWMPEvents3_CdromRipStateChange(This,rip,state) (This)->lpVtbl->CdromRipStateChange(This,rip,state)
+#define IWMPEvents3_CdromRipMediaError(This,rip,media) (This)->lpVtbl->CdromRipMediaError(This,rip,media)
+#define IWMPEvents3_CdromBurnStateChange(This,burn,state) (This)->lpVtbl->CdromBurnStateChange(This,burn,state)
+#define IWMPEvents3_CdromBurnMediaError(This,burn,media) (This)->lpVtbl->CdromBurnMediaError(This,burn,media)
+#define IWMPEvents3_CdromBurnError(This,burn,error) (This)->lpVtbl->CdromBurnError(This,burn,error)
+#define IWMPEvents3_LibraryConnect(This,wmplibrary) (This)->lpVtbl->LibraryConnect(This,wmplibrary)
+#define IWMPEvents3_LibraryDisconnect(This,wmplibrary) (This)->lpVtbl->LibraryDisconnect(This,wmplibrary)
+#define IWMPEvents3_FolderScanStateChange(This,state) (This)->lpVtbl->FolderScanStateChange(This,state)
+#define IWMPEvents3_StringCollectionChange(This,collection,change,index) (This)->lpVtbl->StringCollectionChange(This,collection,change,index)
+#define IWMPEvents3_MediaCollectionMediaAdded(This,media) (This)->lpVtbl->MediaCollectionMediaAdded(This,media)
+#define IWMPEvents3_MediaCollectionMediaRemoved(This,media) (This)->lpVtbl->MediaCollectionMediaRemoved(This,media)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPEvents3_QueryInterface(IWMPEvents3* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPEvents3_AddRef(IWMPEvents3* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPEvents3_Release(IWMPEvents3* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPEvents methods ***/
+static FORCEINLINE void IWMPEvents3_OpenStateChange(IWMPEvents3* This,LONG state) {
+    This->lpVtbl->OpenStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents3_PlayStateChange(IWMPEvents3* This,LONG state) {
+    This->lpVtbl->PlayStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents3_AudioLanguageChange(IWMPEvents3* This,LONG lang) {
+    This->lpVtbl->AudioLanguageChange(This,lang);
+}
+static FORCEINLINE void IWMPEvents3_StatusChange(IWMPEvents3* This) {
+    This->lpVtbl->StatusChange(This);
+}
+static FORCEINLINE void IWMPEvents3_ScriptCommand(IWMPEvents3* This,BSTR type,BSTR param) {
+    This->lpVtbl->ScriptCommand(This,type,param);
+}
+static FORCEINLINE void IWMPEvents3_NewStream(IWMPEvents3* This) {
+    This->lpVtbl->NewStream(This);
+}
+static FORCEINLINE void IWMPEvents3_Disconnect(IWMPEvents3* This,LONG result) {
+    This->lpVtbl->Disconnect(This,result);
+}
+static FORCEINLINE void IWMPEvents3_Buffering(IWMPEvents3* This,VARIANT_BOOL start) {
+    This->lpVtbl->Buffering(This,start);
+}
+static FORCEINLINE void IWMPEvents3_Error(IWMPEvents3* This) {
+    This->lpVtbl->Error(This);
+}
+static FORCEINLINE void IWMPEvents3_Warning(IWMPEvents3* This,LONG warning,LONG param,BSTR description) {
+    This->lpVtbl->Warning(This,warning,param,description);
+}
+static FORCEINLINE void IWMPEvents3_EndOfStream(IWMPEvents3* This,LONG result) {
+    This->lpVtbl->EndOfStream(This,result);
+}
+static FORCEINLINE void IWMPEvents3_PositionChange(IWMPEvents3* This,double old_position,double new_position) {
+    This->lpVtbl->PositionChange(This,old_position,new_position);
+}
+static FORCEINLINE void IWMPEvents3_MarkerHit(IWMPEvents3* This,LONG marker) {
+    This->lpVtbl->MarkerHit(This,marker);
+}
+static FORCEINLINE void IWMPEvents3_DurationUnitChange(IWMPEvents3* This,LONG duration) {
+    This->lpVtbl->DurationUnitChange(This,duration);
+}
+static FORCEINLINE void IWMPEvents3_CdromMediaChange(IWMPEvents3* This,LONG num) {
+    This->lpVtbl->CdromMediaChange(This,num);
+}
+static FORCEINLINE void IWMPEvents3_PlaylistChange(IWMPEvents3* This,IDispatch *playlist,WMPPlaylistChangeEventType change) {
+    This->lpVtbl->PlaylistChange(This,playlist,change);
+}
+static FORCEINLINE void IWMPEvents3_CurrentPlaylistChange(IWMPEvents3* This,WMPPlaylistChangeEventType change) {
+    This->lpVtbl->CurrentPlaylistChange(This,change);
+}
+static FORCEINLINE void IWMPEvents3_CurrentPlaylistItemAvailable(IWMPEvents3* This,BSTR item) {
+    This->lpVtbl->CurrentPlaylistItemAvailable(This,item);
+}
+static FORCEINLINE void IWMPEvents3_MediaChange(IWMPEvents3* This,IDispatch *item) {
+    This->lpVtbl->MediaChange(This,item);
+}
+static FORCEINLINE void IWMPEvents3_CurrentMediaItemAvailable(IWMPEvents3* This,BSTR name) {
+    This->lpVtbl->CurrentMediaItemAvailable(This,name);
+}
+static FORCEINLINE void IWMPEvents3_CurrentItemChange(IWMPEvents3* This,IDispatch *media) {
+    This->lpVtbl->CurrentItemChange(This,media);
+}
+static FORCEINLINE void IWMPEvents3_MediaCollectionChange(IWMPEvents3* This) {
+    This->lpVtbl->MediaCollectionChange(This);
+}
+static FORCEINLINE void IWMPEvents3_MediaCollectionAttributeStringAdded(IWMPEvents3* This,BSTR name,BSTR val) {
+    This->lpVtbl->MediaCollectionAttributeStringAdded(This,name,val);
+}
+static FORCEINLINE void IWMPEvents3_MediaCollectionAttributeStringRemoved(IWMPEvents3* This,BSTR name,BSTR val) {
+    This->lpVtbl->MediaCollectionAttributeStringRemoved(This,name,val);
+}
+static FORCEINLINE void IWMPEvents3_MediaCollectionAttributeStringChanged(IWMPEvents3* This,BSTR name,BSTR old_val,BSTR new_val) {
+    This->lpVtbl->MediaCollectionAttributeStringChanged(This,name,old_val,new_val);
+}
+static FORCEINLINE void IWMPEvents3_PlaylistCollectionChange(IWMPEvents3* This) {
+    This->lpVtbl->PlaylistCollectionChange(This);
+}
+static FORCEINLINE void IWMPEvents3_PlaylistCollectionPlaylistAdded(IWMPEvents3* This,BSTR name) {
+    This->lpVtbl->PlaylistCollectionPlaylistAdded(This,name);
+}
+static FORCEINLINE void IWMPEvents3_PlaylistCollectionPlaylistRemoved(IWMPEvents3* This,BSTR name) {
+    This->lpVtbl->PlaylistCollectionPlaylistRemoved(This,name);
+}
+static FORCEINLINE void IWMPEvents3_PlaylistCollectionPlaylistSetAsDeleted(IWMPEvents3* This,BSTR name,VARIANT_BOOL deleted) {
+    This->lpVtbl->PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted);
+}
+static FORCEINLINE void IWMPEvents3_ModeChange(IWMPEvents3* This,BSTR ModeName,VARIANT_BOOL value) {
+    This->lpVtbl->ModeChange(This,ModeName,value);
+}
+static FORCEINLINE void IWMPEvents3_MediaError(IWMPEvents3* This,IDispatch *media) {
+    This->lpVtbl->MediaError(This,media);
+}
+static FORCEINLINE void IWMPEvents3_OpenPlaylistSwitch(IWMPEvents3* This,IDispatch *item) {
+    This->lpVtbl->OpenPlaylistSwitch(This,item);
+}
+static FORCEINLINE void IWMPEvents3_DomainChange(IWMPEvents3* This,BSTR domain) {
+    This->lpVtbl->DomainChange(This,domain);
+}
+static FORCEINLINE void IWMPEvents3_SwitchedToPlayerApplication(IWMPEvents3* This) {
+    This->lpVtbl->SwitchedToPlayerApplication(This);
+}
+static FORCEINLINE void IWMPEvents3_SwitchedToControl(IWMPEvents3* This) {
+    This->lpVtbl->SwitchedToControl(This);
+}
+static FORCEINLINE void IWMPEvents3_PlayerDockedStateChange(IWMPEvents3* This) {
+    This->lpVtbl->PlayerDockedStateChange(This);
+}
+static FORCEINLINE void IWMPEvents3_PlayerReconnect(IWMPEvents3* This) {
+    This->lpVtbl->PlayerReconnect(This);
+}
+static FORCEINLINE void IWMPEvents3_Click(IWMPEvents3* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->Click(This,button,shift_state,x,y);
+}
+static FORCEINLINE void IWMPEvents3_DoubleClick(IWMPEvents3* This,short button,short shift_state,LONG fX,LONG fY) {
+    This->lpVtbl->DoubleClick(This,button,shift_state,fX,fY);
+}
+static FORCEINLINE void IWMPEvents3_KeyDown(IWMPEvents3* This,short keycode,short shift_state) {
+    This->lpVtbl->KeyDown(This,keycode,shift_state);
+}
+static FORCEINLINE void IWMPEvents3_KeyPress(IWMPEvents3* This,short ascii) {
+    This->lpVtbl->KeyPress(This,ascii);
+}
+static FORCEINLINE void IWMPEvents3_KeyUp(IWMPEvents3* This,short keycode,short shift_state) {
+    This->lpVtbl->KeyUp(This,keycode,shift_state);
+}
+static FORCEINLINE void IWMPEvents3_MouseDown(IWMPEvents3* This,short button,short nShiftState,LONG x,LONG y) {
+    This->lpVtbl->MouseDown(This,button,nShiftState,x,y);
+}
+static FORCEINLINE void IWMPEvents3_MouseMove(IWMPEvents3* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->MouseMove(This,button,shift_state,x,y);
+}
+static FORCEINLINE void IWMPEvents3_MouseUp(IWMPEvents3* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->MouseUp(This,button,shift_state,x,y);
+}
+/*** IWMPEvents2 methods ***/
+static FORCEINLINE void IWMPEvents3_DeviceConnect(IWMPEvents3* This,IWMPSyncDevice *device) {
+    This->lpVtbl->DeviceConnect(This,device);
+}
+static FORCEINLINE void IWMPEvents3_DeviceDisconnect(IWMPEvents3* This,IWMPSyncDevice *device) {
+    This->lpVtbl->DeviceDisconnect(This,device);
+}
+static FORCEINLINE void IWMPEvents3_DeviceStatusChange(IWMPEvents3* This,IWMPSyncDevice *device,WMPDeviceStatus status) {
+    This->lpVtbl->DeviceStatusChange(This,device,status);
+}
+static FORCEINLINE void IWMPEvents3_DeviceSyncStateChange(IWMPEvents3* This,IWMPSyncDevice *device,WMPSyncState state) {
+    This->lpVtbl->DeviceSyncStateChange(This,device,state);
+}
+static FORCEINLINE void IWMPEvents3_DeviceSyncError(IWMPEvents3* This,IWMPSyncDevice *device,IDispatch *media) {
+    This->lpVtbl->DeviceSyncError(This,device,media);
+}
+static FORCEINLINE void IWMPEvents3_CreatePartnershipComplete(IWMPEvents3* This,IWMPSyncDevice *device,HRESULT result) {
+    This->lpVtbl->CreatePartnershipComplete(This,device,result);
+}
+/*** IWMPEvents3 methods ***/
+static FORCEINLINE void IWMPEvents3_CdromRipStateChange(IWMPEvents3* This,IWMPCdromRip *rip,WMPRipState state) {
+    This->lpVtbl->CdromRipStateChange(This,rip,state);
+}
+static FORCEINLINE void IWMPEvents3_CdromRipMediaError(IWMPEvents3* This,IWMPCdromRip *rip,IDispatch *media) {
+    This->lpVtbl->CdromRipMediaError(This,rip,media);
+}
+static FORCEINLINE void IWMPEvents3_CdromBurnStateChange(IWMPEvents3* This,IWMPCdromBurn *burn,WMPBurnState state) {
+    This->lpVtbl->CdromBurnStateChange(This,burn,state);
+}
+static FORCEINLINE void IWMPEvents3_CdromBurnMediaError(IWMPEvents3* This,IWMPCdromBurn *burn,IDispatch *media) {
+    This->lpVtbl->CdromBurnMediaError(This,burn,media);
+}
+static FORCEINLINE void IWMPEvents3_CdromBurnError(IWMPEvents3* This,IWMPCdromBurn *burn,HRESULT error) {
+    This->lpVtbl->CdromBurnError(This,burn,error);
+}
+static FORCEINLINE void IWMPEvents3_LibraryConnect(IWMPEvents3* This,IWMPLibrary *wmplibrary) {
+    This->lpVtbl->LibraryConnect(This,wmplibrary);
+}
+static FORCEINLINE void IWMPEvents3_LibraryDisconnect(IWMPEvents3* This,IWMPLibrary *wmplibrary) {
+    This->lpVtbl->LibraryDisconnect(This,wmplibrary);
+}
+static FORCEINLINE void IWMPEvents3_FolderScanStateChange(IWMPEvents3* This,WMPFolderScanState state) {
+    This->lpVtbl->FolderScanStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents3_StringCollectionChange(IWMPEvents3* This,IDispatch *collection,WMPStringCollectionChangeEventType change,LONG index) {
+    This->lpVtbl->StringCollectionChange(This,collection,change,index);
+}
+static FORCEINLINE void IWMPEvents3_MediaCollectionMediaAdded(IWMPEvents3* This,IDispatch *media) {
+    This->lpVtbl->MediaCollectionMediaAdded(This,media);
+}
+static FORCEINLINE void IWMPEvents3_MediaCollectionMediaRemoved(IWMPEvents3* This,IDispatch *media) {
+    This->lpVtbl->MediaCollectionMediaRemoved(This,media);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPEvents3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMPEvents4 interface
+ */
+#ifndef __IWMPEvents4_INTERFACE_DEFINED__
+#define __IWMPEvents4_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMPEvents4, 0x26dabcfa, 0x306b, 0x404d, 0x9a,0x6f, 0x63,0x0a,0x84,0x05,0x04,0x8d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("26dabcfa-306b-404d-9a6f-630a8405048d")
+IWMPEvents4 : public IWMPEvents3
+{
+    virtual void STDMETHODCALLTYPE DeviceEstimation(
+        IWMPSyncDevice *device,
+        HRESULT result,
+        LONGLONG used_space,
+        LONGLONG estimated_space) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMPEvents4, 0x26dabcfa, 0x306b, 0x404d, 0x9a,0x6f, 0x63,0x0a,0x84,0x05,0x04,0x8d)
+#endif
+#else
+typedef struct IWMPEvents4Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMPEvents4 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMPEvents4 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMPEvents4 *This);
+
+    /*** IWMPEvents methods ***/
+    void (STDMETHODCALLTYPE *OpenStateChange)(
+        IWMPEvents4 *This,
+        LONG state);
+
+    void (STDMETHODCALLTYPE *PlayStateChange)(
+        IWMPEvents4 *This,
+        LONG state);
+
+    void (STDMETHODCALLTYPE *AudioLanguageChange)(
+        IWMPEvents4 *This,
+        LONG lang);
+
+    void (STDMETHODCALLTYPE *StatusChange)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *ScriptCommand)(
+        IWMPEvents4 *This,
+        BSTR type,
+        BSTR param);
+
+    void (STDMETHODCALLTYPE *NewStream)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *Disconnect)(
+        IWMPEvents4 *This,
+        LONG result);
+
+    void (STDMETHODCALLTYPE *Buffering)(
+        IWMPEvents4 *This,
+        VARIANT_BOOL start);
+
+    void (STDMETHODCALLTYPE *Error)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *Warning)(
+        IWMPEvents4 *This,
+        LONG warning,
+        LONG param,
+        BSTR description);
+
+    void (STDMETHODCALLTYPE *EndOfStream)(
+        IWMPEvents4 *This,
+        LONG result);
+
+    void (STDMETHODCALLTYPE *PositionChange)(
+        IWMPEvents4 *This,
+        double old_position,
+        double new_position);
+
+    void (STDMETHODCALLTYPE *MarkerHit)(
+        IWMPEvents4 *This,
+        LONG marker);
+
+    void (STDMETHODCALLTYPE *DurationUnitChange)(
+        IWMPEvents4 *This,
+        LONG duration);
+
+    void (STDMETHODCALLTYPE *CdromMediaChange)(
+        IWMPEvents4 *This,
+        LONG num);
+
+    void (STDMETHODCALLTYPE *PlaylistChange)(
+        IWMPEvents4 *This,
+        IDispatch *playlist,
+        WMPPlaylistChangeEventType change);
+
+    void (STDMETHODCALLTYPE *CurrentPlaylistChange)(
+        IWMPEvents4 *This,
+        WMPPlaylistChangeEventType change);
+
+    void (STDMETHODCALLTYPE *CurrentPlaylistItemAvailable)(
+        IWMPEvents4 *This,
+        BSTR item);
+
+    void (STDMETHODCALLTYPE *MediaChange)(
+        IWMPEvents4 *This,
+        IDispatch *item);
+
+    void (STDMETHODCALLTYPE *CurrentMediaItemAvailable)(
+        IWMPEvents4 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *CurrentItemChange)(
+        IWMPEvents4 *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *MediaCollectionChange)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringAdded)(
+        IWMPEvents4 *This,
+        BSTR name,
+        BSTR val);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringRemoved)(
+        IWMPEvents4 *This,
+        BSTR name,
+        BSTR val);
+
+    void (STDMETHODCALLTYPE *MediaCollectionAttributeStringChanged)(
+        IWMPEvents4 *This,
+        BSTR name,
+        BSTR old_val,
+        BSTR new_val);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionChange)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistAdded)(
+        IWMPEvents4 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistRemoved)(
+        IWMPEvents4 *This,
+        BSTR name);
+
+    void (STDMETHODCALLTYPE *PlaylistCollectionPlaylistSetAsDeleted)(
+        IWMPEvents4 *This,
+        BSTR name,
+        VARIANT_BOOL deleted);
+
+    void (STDMETHODCALLTYPE *ModeChange)(
+        IWMPEvents4 *This,
+        BSTR ModeName,
+        VARIANT_BOOL value);
+
+    void (STDMETHODCALLTYPE *MediaError)(
+        IWMPEvents4 *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *OpenPlaylistSwitch)(
+        IWMPEvents4 *This,
+        IDispatch *item);
+
+    void (STDMETHODCALLTYPE *DomainChange)(
+        IWMPEvents4 *This,
+        BSTR domain);
+
+    void (STDMETHODCALLTYPE *SwitchedToPlayerApplication)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *SwitchedToControl)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *PlayerDockedStateChange)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *PlayerReconnect)(
+        IWMPEvents4 *This);
+
+    void (STDMETHODCALLTYPE *Click)(
+        IWMPEvents4 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *DoubleClick)(
+        IWMPEvents4 *This,
+        short button,
+        short shift_state,
+        LONG fX,
+        LONG fY);
+
+    void (STDMETHODCALLTYPE *KeyDown)(
+        IWMPEvents4 *This,
+        short keycode,
+        short shift_state);
+
+    void (STDMETHODCALLTYPE *KeyPress)(
+        IWMPEvents4 *This,
+        short ascii);
+
+    void (STDMETHODCALLTYPE *KeyUp)(
+        IWMPEvents4 *This,
+        short keycode,
+        short shift_state);
+
+    void (STDMETHODCALLTYPE *MouseDown)(
+        IWMPEvents4 *This,
+        short button,
+        short nShiftState,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *MouseMove)(
+        IWMPEvents4 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    void (STDMETHODCALLTYPE *MouseUp)(
+        IWMPEvents4 *This,
+        short button,
+        short shift_state,
+        LONG x,
+        LONG y);
+
+    /*** IWMPEvents2 methods ***/
+    void (STDMETHODCALLTYPE *DeviceConnect)(
+        IWMPEvents4 *This,
+        IWMPSyncDevice *device);
+
+    void (STDMETHODCALLTYPE *DeviceDisconnect)(
+        IWMPEvents4 *This,
+        IWMPSyncDevice *device);
+
+    void (STDMETHODCALLTYPE *DeviceStatusChange)(
+        IWMPEvents4 *This,
+        IWMPSyncDevice *device,
+        WMPDeviceStatus status);
+
+    void (STDMETHODCALLTYPE *DeviceSyncStateChange)(
+        IWMPEvents4 *This,
+        IWMPSyncDevice *device,
+        WMPSyncState state);
+
+    void (STDMETHODCALLTYPE *DeviceSyncError)(
+        IWMPEvents4 *This,
+        IWMPSyncDevice *device,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *CreatePartnershipComplete)(
+        IWMPEvents4 *This,
+        IWMPSyncDevice *device,
+        HRESULT result);
+
+    /*** IWMPEvents3 methods ***/
+    void (STDMETHODCALLTYPE *CdromRipStateChange)(
+        IWMPEvents4 *This,
+        IWMPCdromRip *rip,
+        WMPRipState state);
+
+    void (STDMETHODCALLTYPE *CdromRipMediaError)(
+        IWMPEvents4 *This,
+        IWMPCdromRip *rip,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *CdromBurnStateChange)(
+        IWMPEvents4 *This,
+        IWMPCdromBurn *burn,
+        WMPBurnState state);
+
+    void (STDMETHODCALLTYPE *CdromBurnMediaError)(
+        IWMPEvents4 *This,
+        IWMPCdromBurn *burn,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *CdromBurnError)(
+        IWMPEvents4 *This,
+        IWMPCdromBurn *burn,
+        HRESULT error);
+
+    void (STDMETHODCALLTYPE *LibraryConnect)(
+        IWMPEvents4 *This,
+        IWMPLibrary *wmplibrary);
+
+    void (STDMETHODCALLTYPE *LibraryDisconnect)(
+        IWMPEvents4 *This,
+        IWMPLibrary *wmplibrary);
+
+    void (STDMETHODCALLTYPE *FolderScanStateChange)(
+        IWMPEvents4 *This,
+        WMPFolderScanState state);
+
+    void (STDMETHODCALLTYPE *StringCollectionChange)(
+        IWMPEvents4 *This,
+        IDispatch *collection,
+        WMPStringCollectionChangeEventType change,
+        LONG index);
+
+    void (STDMETHODCALLTYPE *MediaCollectionMediaAdded)(
+        IWMPEvents4 *This,
+        IDispatch *media);
+
+    void (STDMETHODCALLTYPE *MediaCollectionMediaRemoved)(
+        IWMPEvents4 *This,
+        IDispatch *media);
+
+    /*** IWMPEvents4 methods ***/
+    void (STDMETHODCALLTYPE *DeviceEstimation)(
+        IWMPEvents4 *This,
+        IWMPSyncDevice *device,
+        HRESULT result,
+        LONGLONG used_space,
+        LONGLONG estimated_space);
+
+    END_INTERFACE
+} IWMPEvents4Vtbl;
+
+interface IWMPEvents4 {
+    CONST_VTBL IWMPEvents4Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMPEvents4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMPEvents4_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMPEvents4_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMPEvents methods ***/
+#define IWMPEvents4_OpenStateChange(This,state) (This)->lpVtbl->OpenStateChange(This,state)
+#define IWMPEvents4_PlayStateChange(This,state) (This)->lpVtbl->PlayStateChange(This,state)
+#define IWMPEvents4_AudioLanguageChange(This,lang) (This)->lpVtbl->AudioLanguageChange(This,lang)
+#define IWMPEvents4_StatusChange(This) (This)->lpVtbl->StatusChange(This)
+#define IWMPEvents4_ScriptCommand(This,type,param) (This)->lpVtbl->ScriptCommand(This,type,param)
+#define IWMPEvents4_NewStream(This) (This)->lpVtbl->NewStream(This)
+#define IWMPEvents4_Disconnect(This,result) (This)->lpVtbl->Disconnect(This,result)
+#define IWMPEvents4_Buffering(This,start) (This)->lpVtbl->Buffering(This,start)
+#define IWMPEvents4_Error(This) (This)->lpVtbl->Error(This)
+#define IWMPEvents4_Warning(This,warning,param,description) (This)->lpVtbl->Warning(This,warning,param,description)
+#define IWMPEvents4_EndOfStream(This,result) (This)->lpVtbl->EndOfStream(This,result)
+#define IWMPEvents4_PositionChange(This,old_position,new_position) (This)->lpVtbl->PositionChange(This,old_position,new_position)
+#define IWMPEvents4_MarkerHit(This,marker) (This)->lpVtbl->MarkerHit(This,marker)
+#define IWMPEvents4_DurationUnitChange(This,duration) (This)->lpVtbl->DurationUnitChange(This,duration)
+#define IWMPEvents4_CdromMediaChange(This,num) (This)->lpVtbl->CdromMediaChange(This,num)
+#define IWMPEvents4_PlaylistChange(This,playlist,change) (This)->lpVtbl->PlaylistChange(This,playlist,change)
+#define IWMPEvents4_CurrentPlaylistChange(This,change) (This)->lpVtbl->CurrentPlaylistChange(This,change)
+#define IWMPEvents4_CurrentPlaylistItemAvailable(This,item) (This)->lpVtbl->CurrentPlaylistItemAvailable(This,item)
+#define IWMPEvents4_MediaChange(This,item) (This)->lpVtbl->MediaChange(This,item)
+#define IWMPEvents4_CurrentMediaItemAvailable(This,name) (This)->lpVtbl->CurrentMediaItemAvailable(This,name)
+#define IWMPEvents4_CurrentItemChange(This,media) (This)->lpVtbl->CurrentItemChange(This,media)
+#define IWMPEvents4_MediaCollectionChange(This) (This)->lpVtbl->MediaCollectionChange(This)
+#define IWMPEvents4_MediaCollectionAttributeStringAdded(This,name,val) (This)->lpVtbl->MediaCollectionAttributeStringAdded(This,name,val)
+#define IWMPEvents4_MediaCollectionAttributeStringRemoved(This,name,val) (This)->lpVtbl->MediaCollectionAttributeStringRemoved(This,name,val)
+#define IWMPEvents4_MediaCollectionAttributeStringChanged(This,name,old_val,new_val) (This)->lpVtbl->MediaCollectionAttributeStringChanged(This,name,old_val,new_val)
+#define IWMPEvents4_PlaylistCollectionChange(This) (This)->lpVtbl->PlaylistCollectionChange(This)
+#define IWMPEvents4_PlaylistCollectionPlaylistAdded(This,name) (This)->lpVtbl->PlaylistCollectionPlaylistAdded(This,name)
+#define IWMPEvents4_PlaylistCollectionPlaylistRemoved(This,name) (This)->lpVtbl->PlaylistCollectionPlaylistRemoved(This,name)
+#define IWMPEvents4_PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted) (This)->lpVtbl->PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted)
+#define IWMPEvents4_ModeChange(This,ModeName,value) (This)->lpVtbl->ModeChange(This,ModeName,value)
+#define IWMPEvents4_MediaError(This,media) (This)->lpVtbl->MediaError(This,media)
+#define IWMPEvents4_OpenPlaylistSwitch(This,item) (This)->lpVtbl->OpenPlaylistSwitch(This,item)
+#define IWMPEvents4_DomainChange(This,domain) (This)->lpVtbl->DomainChange(This,domain)
+#define IWMPEvents4_SwitchedToPlayerApplication(This) (This)->lpVtbl->SwitchedToPlayerApplication(This)
+#define IWMPEvents4_SwitchedToControl(This) (This)->lpVtbl->SwitchedToControl(This)
+#define IWMPEvents4_PlayerDockedStateChange(This) (This)->lpVtbl->PlayerDockedStateChange(This)
+#define IWMPEvents4_PlayerReconnect(This) (This)->lpVtbl->PlayerReconnect(This)
+#define IWMPEvents4_Click(This,button,shift_state,x,y) (This)->lpVtbl->Click(This,button,shift_state,x,y)
+#define IWMPEvents4_DoubleClick(This,button,shift_state,fX,fY) (This)->lpVtbl->DoubleClick(This,button,shift_state,fX,fY)
+#define IWMPEvents4_KeyDown(This,keycode,shift_state) (This)->lpVtbl->KeyDown(This,keycode,shift_state)
+#define IWMPEvents4_KeyPress(This,ascii) (This)->lpVtbl->KeyPress(This,ascii)
+#define IWMPEvents4_KeyUp(This,keycode,shift_state) (This)->lpVtbl->KeyUp(This,keycode,shift_state)
+#define IWMPEvents4_MouseDown(This,button,nShiftState,x,y) (This)->lpVtbl->MouseDown(This,button,nShiftState,x,y)
+#define IWMPEvents4_MouseMove(This,button,shift_state,x,y) (This)->lpVtbl->MouseMove(This,button,shift_state,x,y)
+#define IWMPEvents4_MouseUp(This,button,shift_state,x,y) (This)->lpVtbl->MouseUp(This,button,shift_state,x,y)
+/*** IWMPEvents2 methods ***/
+#define IWMPEvents4_DeviceConnect(This,device) (This)->lpVtbl->DeviceConnect(This,device)
+#define IWMPEvents4_DeviceDisconnect(This,device) (This)->lpVtbl->DeviceDisconnect(This,device)
+#define IWMPEvents4_DeviceStatusChange(This,device,status) (This)->lpVtbl->DeviceStatusChange(This,device,status)
+#define IWMPEvents4_DeviceSyncStateChange(This,device,state) (This)->lpVtbl->DeviceSyncStateChange(This,device,state)
+#define IWMPEvents4_DeviceSyncError(This,device,media) (This)->lpVtbl->DeviceSyncError(This,device,media)
+#define IWMPEvents4_CreatePartnershipComplete(This,device,result) (This)->lpVtbl->CreatePartnershipComplete(This,device,result)
+/*** IWMPEvents3 methods ***/
+#define IWMPEvents4_CdromRipStateChange(This,rip,state) (This)->lpVtbl->CdromRipStateChange(This,rip,state)
+#define IWMPEvents4_CdromRipMediaError(This,rip,media) (This)->lpVtbl->CdromRipMediaError(This,rip,media)
+#define IWMPEvents4_CdromBurnStateChange(This,burn,state) (This)->lpVtbl->CdromBurnStateChange(This,burn,state)
+#define IWMPEvents4_CdromBurnMediaError(This,burn,media) (This)->lpVtbl->CdromBurnMediaError(This,burn,media)
+#define IWMPEvents4_CdromBurnError(This,burn,error) (This)->lpVtbl->CdromBurnError(This,burn,error)
+#define IWMPEvents4_LibraryConnect(This,wmplibrary) (This)->lpVtbl->LibraryConnect(This,wmplibrary)
+#define IWMPEvents4_LibraryDisconnect(This,wmplibrary) (This)->lpVtbl->LibraryDisconnect(This,wmplibrary)
+#define IWMPEvents4_FolderScanStateChange(This,state) (This)->lpVtbl->FolderScanStateChange(This,state)
+#define IWMPEvents4_StringCollectionChange(This,collection,change,index) (This)->lpVtbl->StringCollectionChange(This,collection,change,index)
+#define IWMPEvents4_MediaCollectionMediaAdded(This,media) (This)->lpVtbl->MediaCollectionMediaAdded(This,media)
+#define IWMPEvents4_MediaCollectionMediaRemoved(This,media) (This)->lpVtbl->MediaCollectionMediaRemoved(This,media)
+/*** IWMPEvents4 methods ***/
+#define IWMPEvents4_DeviceEstimation(This,device,result,used_space,estimated_space) (This)->lpVtbl->DeviceEstimation(This,device,result,used_space,estimated_space)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMPEvents4_QueryInterface(IWMPEvents4* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMPEvents4_AddRef(IWMPEvents4* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMPEvents4_Release(IWMPEvents4* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMPEvents methods ***/
+static FORCEINLINE void IWMPEvents4_OpenStateChange(IWMPEvents4* This,LONG state) {
+    This->lpVtbl->OpenStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents4_PlayStateChange(IWMPEvents4* This,LONG state) {
+    This->lpVtbl->PlayStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents4_AudioLanguageChange(IWMPEvents4* This,LONG lang) {
+    This->lpVtbl->AudioLanguageChange(This,lang);
+}
+static FORCEINLINE void IWMPEvents4_StatusChange(IWMPEvents4* This) {
+    This->lpVtbl->StatusChange(This);
+}
+static FORCEINLINE void IWMPEvents4_ScriptCommand(IWMPEvents4* This,BSTR type,BSTR param) {
+    This->lpVtbl->ScriptCommand(This,type,param);
+}
+static FORCEINLINE void IWMPEvents4_NewStream(IWMPEvents4* This) {
+    This->lpVtbl->NewStream(This);
+}
+static FORCEINLINE void IWMPEvents4_Disconnect(IWMPEvents4* This,LONG result) {
+    This->lpVtbl->Disconnect(This,result);
+}
+static FORCEINLINE void IWMPEvents4_Buffering(IWMPEvents4* This,VARIANT_BOOL start) {
+    This->lpVtbl->Buffering(This,start);
+}
+static FORCEINLINE void IWMPEvents4_Error(IWMPEvents4* This) {
+    This->lpVtbl->Error(This);
+}
+static FORCEINLINE void IWMPEvents4_Warning(IWMPEvents4* This,LONG warning,LONG param,BSTR description) {
+    This->lpVtbl->Warning(This,warning,param,description);
+}
+static FORCEINLINE void IWMPEvents4_EndOfStream(IWMPEvents4* This,LONG result) {
+    This->lpVtbl->EndOfStream(This,result);
+}
+static FORCEINLINE void IWMPEvents4_PositionChange(IWMPEvents4* This,double old_position,double new_position) {
+    This->lpVtbl->PositionChange(This,old_position,new_position);
+}
+static FORCEINLINE void IWMPEvents4_MarkerHit(IWMPEvents4* This,LONG marker) {
+    This->lpVtbl->MarkerHit(This,marker);
+}
+static FORCEINLINE void IWMPEvents4_DurationUnitChange(IWMPEvents4* This,LONG duration) {
+    This->lpVtbl->DurationUnitChange(This,duration);
+}
+static FORCEINLINE void IWMPEvents4_CdromMediaChange(IWMPEvents4* This,LONG num) {
+    This->lpVtbl->CdromMediaChange(This,num);
+}
+static FORCEINLINE void IWMPEvents4_PlaylistChange(IWMPEvents4* This,IDispatch *playlist,WMPPlaylistChangeEventType change) {
+    This->lpVtbl->PlaylistChange(This,playlist,change);
+}
+static FORCEINLINE void IWMPEvents4_CurrentPlaylistChange(IWMPEvents4* This,WMPPlaylistChangeEventType change) {
+    This->lpVtbl->CurrentPlaylistChange(This,change);
+}
+static FORCEINLINE void IWMPEvents4_CurrentPlaylistItemAvailable(IWMPEvents4* This,BSTR item) {
+    This->lpVtbl->CurrentPlaylistItemAvailable(This,item);
+}
+static FORCEINLINE void IWMPEvents4_MediaChange(IWMPEvents4* This,IDispatch *item) {
+    This->lpVtbl->MediaChange(This,item);
+}
+static FORCEINLINE void IWMPEvents4_CurrentMediaItemAvailable(IWMPEvents4* This,BSTR name) {
+    This->lpVtbl->CurrentMediaItemAvailable(This,name);
+}
+static FORCEINLINE void IWMPEvents4_CurrentItemChange(IWMPEvents4* This,IDispatch *media) {
+    This->lpVtbl->CurrentItemChange(This,media);
+}
+static FORCEINLINE void IWMPEvents4_MediaCollectionChange(IWMPEvents4* This) {
+    This->lpVtbl->MediaCollectionChange(This);
+}
+static FORCEINLINE void IWMPEvents4_MediaCollectionAttributeStringAdded(IWMPEvents4* This,BSTR name,BSTR val) {
+    This->lpVtbl->MediaCollectionAttributeStringAdded(This,name,val);
+}
+static FORCEINLINE void IWMPEvents4_MediaCollectionAttributeStringRemoved(IWMPEvents4* This,BSTR name,BSTR val) {
+    This->lpVtbl->MediaCollectionAttributeStringRemoved(This,name,val);
+}
+static FORCEINLINE void IWMPEvents4_MediaCollectionAttributeStringChanged(IWMPEvents4* This,BSTR name,BSTR old_val,BSTR new_val) {
+    This->lpVtbl->MediaCollectionAttributeStringChanged(This,name,old_val,new_val);
+}
+static FORCEINLINE void IWMPEvents4_PlaylistCollectionChange(IWMPEvents4* This) {
+    This->lpVtbl->PlaylistCollectionChange(This);
+}
+static FORCEINLINE void IWMPEvents4_PlaylistCollectionPlaylistAdded(IWMPEvents4* This,BSTR name) {
+    This->lpVtbl->PlaylistCollectionPlaylistAdded(This,name);
+}
+static FORCEINLINE void IWMPEvents4_PlaylistCollectionPlaylistRemoved(IWMPEvents4* This,BSTR name) {
+    This->lpVtbl->PlaylistCollectionPlaylistRemoved(This,name);
+}
+static FORCEINLINE void IWMPEvents4_PlaylistCollectionPlaylistSetAsDeleted(IWMPEvents4* This,BSTR name,VARIANT_BOOL deleted) {
+    This->lpVtbl->PlaylistCollectionPlaylistSetAsDeleted(This,name,deleted);
+}
+static FORCEINLINE void IWMPEvents4_ModeChange(IWMPEvents4* This,BSTR ModeName,VARIANT_BOOL value) {
+    This->lpVtbl->ModeChange(This,ModeName,value);
+}
+static FORCEINLINE void IWMPEvents4_MediaError(IWMPEvents4* This,IDispatch *media) {
+    This->lpVtbl->MediaError(This,media);
+}
+static FORCEINLINE void IWMPEvents4_OpenPlaylistSwitch(IWMPEvents4* This,IDispatch *item) {
+    This->lpVtbl->OpenPlaylistSwitch(This,item);
+}
+static FORCEINLINE void IWMPEvents4_DomainChange(IWMPEvents4* This,BSTR domain) {
+    This->lpVtbl->DomainChange(This,domain);
+}
+static FORCEINLINE void IWMPEvents4_SwitchedToPlayerApplication(IWMPEvents4* This) {
+    This->lpVtbl->SwitchedToPlayerApplication(This);
+}
+static FORCEINLINE void IWMPEvents4_SwitchedToControl(IWMPEvents4* This) {
+    This->lpVtbl->SwitchedToControl(This);
+}
+static FORCEINLINE void IWMPEvents4_PlayerDockedStateChange(IWMPEvents4* This) {
+    This->lpVtbl->PlayerDockedStateChange(This);
+}
+static FORCEINLINE void IWMPEvents4_PlayerReconnect(IWMPEvents4* This) {
+    This->lpVtbl->PlayerReconnect(This);
+}
+static FORCEINLINE void IWMPEvents4_Click(IWMPEvents4* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->Click(This,button,shift_state,x,y);
+}
+static FORCEINLINE void IWMPEvents4_DoubleClick(IWMPEvents4* This,short button,short shift_state,LONG fX,LONG fY) {
+    This->lpVtbl->DoubleClick(This,button,shift_state,fX,fY);
+}
+static FORCEINLINE void IWMPEvents4_KeyDown(IWMPEvents4* This,short keycode,short shift_state) {
+    This->lpVtbl->KeyDown(This,keycode,shift_state);
+}
+static FORCEINLINE void IWMPEvents4_KeyPress(IWMPEvents4* This,short ascii) {
+    This->lpVtbl->KeyPress(This,ascii);
+}
+static FORCEINLINE void IWMPEvents4_KeyUp(IWMPEvents4* This,short keycode,short shift_state) {
+    This->lpVtbl->KeyUp(This,keycode,shift_state);
+}
+static FORCEINLINE void IWMPEvents4_MouseDown(IWMPEvents4* This,short button,short nShiftState,LONG x,LONG y) {
+    This->lpVtbl->MouseDown(This,button,nShiftState,x,y);
+}
+static FORCEINLINE void IWMPEvents4_MouseMove(IWMPEvents4* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->MouseMove(This,button,shift_state,x,y);
+}
+static FORCEINLINE void IWMPEvents4_MouseUp(IWMPEvents4* This,short button,short shift_state,LONG x,LONG y) {
+    This->lpVtbl->MouseUp(This,button,shift_state,x,y);
+}
+/*** IWMPEvents2 methods ***/
+static FORCEINLINE void IWMPEvents4_DeviceConnect(IWMPEvents4* This,IWMPSyncDevice *device) {
+    This->lpVtbl->DeviceConnect(This,device);
+}
+static FORCEINLINE void IWMPEvents4_DeviceDisconnect(IWMPEvents4* This,IWMPSyncDevice *device) {
+    This->lpVtbl->DeviceDisconnect(This,device);
+}
+static FORCEINLINE void IWMPEvents4_DeviceStatusChange(IWMPEvents4* This,IWMPSyncDevice *device,WMPDeviceStatus status) {
+    This->lpVtbl->DeviceStatusChange(This,device,status);
+}
+static FORCEINLINE void IWMPEvents4_DeviceSyncStateChange(IWMPEvents4* This,IWMPSyncDevice *device,WMPSyncState state) {
+    This->lpVtbl->DeviceSyncStateChange(This,device,state);
+}
+static FORCEINLINE void IWMPEvents4_DeviceSyncError(IWMPEvents4* This,IWMPSyncDevice *device,IDispatch *media) {
+    This->lpVtbl->DeviceSyncError(This,device,media);
+}
+static FORCEINLINE void IWMPEvents4_CreatePartnershipComplete(IWMPEvents4* This,IWMPSyncDevice *device,HRESULT result) {
+    This->lpVtbl->CreatePartnershipComplete(This,device,result);
+}
+/*** IWMPEvents3 methods ***/
+static FORCEINLINE void IWMPEvents4_CdromRipStateChange(IWMPEvents4* This,IWMPCdromRip *rip,WMPRipState state) {
+    This->lpVtbl->CdromRipStateChange(This,rip,state);
+}
+static FORCEINLINE void IWMPEvents4_CdromRipMediaError(IWMPEvents4* This,IWMPCdromRip *rip,IDispatch *media) {
+    This->lpVtbl->CdromRipMediaError(This,rip,media);
+}
+static FORCEINLINE void IWMPEvents4_CdromBurnStateChange(IWMPEvents4* This,IWMPCdromBurn *burn,WMPBurnState state) {
+    This->lpVtbl->CdromBurnStateChange(This,burn,state);
+}
+static FORCEINLINE void IWMPEvents4_CdromBurnMediaError(IWMPEvents4* This,IWMPCdromBurn *burn,IDispatch *media) {
+    This->lpVtbl->CdromBurnMediaError(This,burn,media);
+}
+static FORCEINLINE void IWMPEvents4_CdromBurnError(IWMPEvents4* This,IWMPCdromBurn *burn,HRESULT error) {
+    This->lpVtbl->CdromBurnError(This,burn,error);
+}
+static FORCEINLINE void IWMPEvents4_LibraryConnect(IWMPEvents4* This,IWMPLibrary *wmplibrary) {
+    This->lpVtbl->LibraryConnect(This,wmplibrary);
+}
+static FORCEINLINE void IWMPEvents4_LibraryDisconnect(IWMPEvents4* This,IWMPLibrary *wmplibrary) {
+    This->lpVtbl->LibraryDisconnect(This,wmplibrary);
+}
+static FORCEINLINE void IWMPEvents4_FolderScanStateChange(IWMPEvents4* This,WMPFolderScanState state) {
+    This->lpVtbl->FolderScanStateChange(This,state);
+}
+static FORCEINLINE void IWMPEvents4_StringCollectionChange(IWMPEvents4* This,IDispatch *collection,WMPStringCollectionChangeEventType change,LONG index) {
+    This->lpVtbl->StringCollectionChange(This,collection,change,index);
+}
+static FORCEINLINE void IWMPEvents4_MediaCollectionMediaAdded(IWMPEvents4* This,IDispatch *media) {
+    This->lpVtbl->MediaCollectionMediaAdded(This,media);
+}
+static FORCEINLINE void IWMPEvents4_MediaCollectionMediaRemoved(IWMPEvents4* This,IDispatch *media) {
+    This->lpVtbl->MediaCollectionMediaRemoved(This,media);
+}
+/*** IWMPEvents4 methods ***/
+static FORCEINLINE void IWMPEvents4_DeviceEstimation(IWMPEvents4* This,IWMPSyncDevice *device,HRESULT result,LONGLONG used_space,LONGLONG estimated_space) {
+    This->lpVtbl->DeviceEstimation(This,device,result,used_space,estimated_space);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMPEvents4_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * _WMPOCXEvents interface
+ */
+#ifndef ___WMPOCXEvents_INTERFACE_DEFINED__
+#define ___WMPOCXEvents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID__WMPOCXEvents, 0x6bf52a51, 0x394a, 0x11d3, 0xb1,0x53, 0x00,0xc0,0x4f,0x79,0xfa,0xa6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6bf52a51-394a-11d3-b153-00c04f79faa6")
+_WMPOCXEvents : public IDispatch
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(_WMPOCXEvents, 0x6bf52a51, 0x394a, 0x11d3, 0xb1,0x53, 0x00,0xc0,0x4f,0x79,0xfa,0xa6)
+#endif
+#else
+typedef struct _WMPOCXEventsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        _WMPOCXEvents *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        _WMPOCXEvents *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        _WMPOCXEvents *This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        _WMPOCXEvents *This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        _WMPOCXEvents *This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        _WMPOCXEvents *This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        _WMPOCXEvents *This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    END_INTERFACE
+} _WMPOCXEventsVtbl;
+
+interface _WMPOCXEvents {
+    CONST_VTBL _WMPOCXEventsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define _WMPOCXEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define _WMPOCXEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define _WMPOCXEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define _WMPOCXEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define _WMPOCXEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define _WMPOCXEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define _WMPOCXEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT _WMPOCXEvents_QueryInterface(_WMPOCXEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG _WMPOCXEvents_AddRef(_WMPOCXEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG _WMPOCXEvents_Release(_WMPOCXEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT _WMPOCXEvents_GetTypeInfoCount(_WMPOCXEvents* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT _WMPOCXEvents_GetTypeInfo(_WMPOCXEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT _WMPOCXEvents_GetIDsOfNames(_WMPOCXEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT _WMPOCXEvents_Invoke(_WMPOCXEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* ___WMPOCXEvents_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * WindowsMediaPlayer coclass
+ */
+
+DEFINE_GUID(CLSID_WindowsMediaPlayer, 0x6bf52a52, 0x394a, 0x11d3, 0xb1,0x53, 0x00,0xc0,0x4f,0x79,0xfa,0xa6);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("6bf52a52-394a-11d3-b153-00c04f79faa6") WindowsMediaPlayer;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(WindowsMediaPlayer, 0x6bf52a52, 0x394a, 0x11d3, 0xb1,0x53, 0x00,0xc0,0x4f,0x79,0xfa,0xa6)
+#endif
+#endif
+
+#endif /* __WMPLib_LIBRARY_DEFINED__ */
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __wmp_h__ */
diff --git a/mingw-w64-headers/include/wmp.idl b/mingw-w64-headers/include/wmp.idl
new file mode 100644
index 0000000..ac2fa27
--- /dev/null
+++ b/mingw-w64-headers/include/wmp.idl
@@ -0,0 +1,1514 @@
+/*
+ * Copyright 2014 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+#ifndef __WIDL__
+#define threading(model)
+#define progid(str)
+#define vi_progid(str)
+#endif
+
+[
+    helpstring("Windows Media Player"),
+    version(1.0),
+    uuid(6bf52a50-394a-11d3-b153-00c04f79Faa6)
+]
+library WMPLib {
+    importlib("stdole2.tlb");
+
+    typedef enum {
+        wmposUndefined,
+        wmposPlaylistChanging,
+        wmposPlaylistLocating,
+        wmposPlaylistConnecting,
+        wmposPlaylistLoading,
+        wmposPlaylistOpening,
+        wmposPlaylistOpenNoMedia,
+        wmposPlaylistChanged,
+        wmposMediaChanging,
+        wmposMediaLocating,
+        wmposMediaConnecting,
+        wmposMediaLoading,
+        wmposMediaOpening,
+        wmposMediaOpen,
+        wmposBeginCodecAcquisition,
+        wmposEndCodecAcquisition,
+        wmposBeginLicenseAcquisition,
+        wmposEndLicenseAcquisition,
+        wmposBeginIndividualization,
+        wmposEndIndividualization,
+        wmposMediaWaiting,
+        wmposOpeningUnknownURL
+    } WMPOpenState;
+
+    typedef enum {
+        wmppsUndefined,
+        wmppsStopped,
+        wmppsPaused,
+        wmppsPlaying,
+        wmppsScanForward,
+        wmppsScanReverse,
+        wmppsBuffering,
+        wmppsWaiting,
+        wmppsMediaEnded,
+        wmppsTransitioning,
+        wmppsReady,
+        wmppsReconnecting,
+        wmppsLast
+    } WMPPlayState;
+
+    typedef enum {
+        wmplcUnknown,
+        wmplcClear,
+        wmplcInfoChange,
+        wmplcMove,
+        wmplcDelete,
+        wmplcInsert,
+        wmplcAppend,
+        wmplcPrivate,
+        wmplcNameChange,
+        wmplcMorph,
+        wmplcSort,
+        wmplcLast
+    } WMPPlaylistChangeEventType;
+
+    typedef enum {
+        wmpdsUnknown,
+        wmpdsPartnershipExists,
+        wmpdsPartnershipDeclined,
+        wmpdsPartnershipAnother,
+        wmpdsManualDevice,
+        wmpdsNewDevice,
+        wmpdsLast
+    } WMPDeviceStatus;
+
+    typedef enum {
+        wmpssUnknown,
+        wmpssSynchronizing,
+        wmpssStopped,
+        wmpssEstimating,
+        wmpssLast
+    } WMPSyncState;
+
+    typedef enum {
+        wmprsUnknown,
+        wmprsRipping,
+        wmprsStopped
+    } WMPRipState;
+
+    typedef enum {
+        wmpbfAudioCD,
+        wmpbfDataCD
+    } WMPBurnFormat;
+
+    typedef enum {
+        wmpbsUnknown,
+        wmpbsBusy,
+        wmpbsReady,
+        wmpbsWaitingForDisc,
+        wmpbsRefreshStatusPending,
+        wmpbsPreparingToBurn,
+        wmpbsBurning,
+        wmpbsStopped,
+        wmpbsErasing,
+        wmpbsDownloading
+    } WMPBurnState;
+
+    typedef enum {
+        wmpltUnknown,
+        wmpltAll,
+        wmpltLocal,
+        wmpltRemote,
+        wmpltDisc,
+        wmpltPortableDevice
+    } WMPLibraryType;
+
+    typedef enum {
+        wmpfssUnknown,
+        wmpfssScanning,
+        wmpfssUpdating,
+        wmpfssStopped
+    } WMPFolderScanState;
+
+    typedef enum {
+        wmpsccetUnknown,
+        wmpsccetInsert,
+        wmpsccetChange,
+        wmpsccetDelete,
+        wmpsccetClear,
+        wmpsccetBeginUpdates,
+        wmpsccetEndUpdates
+    } WMPStringCollectionChangeEventType;
+
+    interface IWMPMedia;
+
+    [
+        odl,
+        uuid(d5f0f4f1-130c-11d3-b14e-00c04f79Faa6),
+        dual,
+        oleautomation
+    ]
+    interface IWMPPlaylist : IDispatch
+    {
+        [id(0x00c9), propget]
+        HRESULT count([out, retval] long *plCount);
+
+        [id(0x00ca), propget]
+        HRESULT name([out, retval] BSTR *pbstrName);
+        [id(0x00ca), propput]
+        HRESULT name([in] BSTR pbstrName);
+
+        [id(0x00d2), propget]
+        HRESULT attributeCount([out, retval] long *plCount);
+
+        [id(0x00d3), propget]
+        HRESULT attributeName(
+            [in] long lIndex,
+            [out, retval] BSTR *pbstrAttributeName);
+
+        [id(0x00d4), propget]
+        HRESULT Item(
+            [in] long lIndex,
+            [out, retval] IWMPMedia** ppIWMPMedia);
+
+        [id(0x00cb)]
+        HRESULT getItemInfo(
+            [in] BSTR bstrName,
+            [out, retval] BSTR *pbstrVal);
+
+        [id(0x00cc)]
+        HRESULT setItemInfo(
+            [in] BSTR bstrName,
+            [in] BSTR bstrValue);
+
+        [id(0x00d5), propget]
+        HRESULT isIdentical(
+            [in] IWMPPlaylist *pIWMPPlaylist,
+            [out, retval] VARIANT_BOOL *pvbool);
+
+        [id(0x00cd)]
+        HRESULT clear();
+
+        [id(0x00ce)]
+        HRESULT insertItem(
+            [in] long lIndex,
+            [in] IWMPMedia *pIWMPMedia);
+
+        [id(0x00cf)]
+        HRESULT appendItem([in] IWMPMedia *pIWMPMedia);
+
+        [id(0x00d0)]
+        HRESULT removeItem([in] IWMPMedia *pIWMPMedia);
+
+        [id(0x00d1)]
+        HRESULT moveItem(
+            long lIndexOld,
+            long lIndexNew);
+    }
+
+    [
+        odl,
+        uuid(94d55e95-3Fac-11d3-b155-00c04f79faa6),
+        dual,
+        oleautomation
+    ]
+    interface IWMPMedia : IDispatch
+    {
+        [id(0x02fb), propget]
+        HRESULT isIdentical(
+            [in] IWMPMedia *pIWMPMedia,
+            [out, retval] VARIANT_BOOL *pvbool);
+
+        [id(0x02ef), propget]
+        HRESULT sourceURL([out, retval] BSTR *pbstrSourceURL);
+
+        [id(0x02fc), propget]
+        HRESULT name([out, retval] BSTR *pbstrName);
+        [id(0x02fc), propput]
+        HRESULT name([in] BSTR pbstrName);
+
+        [id(0x02f0), propget]
+        HRESULT imageSourceWidth([out, retval] long *pWidth);
+
+        [id(0x02f1), propget]
+        HRESULT imageSourceHeight([out, retval] long *pHeight);
+
+        [id(0x02f2), propget]
+        HRESULT markerCount([out, retval] long *pMarkerCount);
+
+        [id(0x02f3)]
+        HRESULT getMarkerTime(
+            [in] long MarkerNum,
+            [out, retval] double *pMarkerTime);
+
+        [id(0x02f4)]
+        HRESULT getMarkerName(
+            [in] long MarkerNum,
+            [out, retval] BSTR *pbstrMarkerName);
+
+        [id(0x02f5), propget]
+        HRESULT duration([out, retval] double *pDuration);
+
+        [id(0x02f6), propget]
+        HRESULT durationString([out, retval] BSTR *pbstrDuration);
+
+        [id(0x02f7), propget]
+        HRESULT attributeCount([out, retval] long *plCount);
+
+        [id(0x02f8)]
+        HRESULT getAttributeName(
+            [in] long lIndex,
+            [out, retval] BSTR *pbstrItemName);
+
+        [id(0x02f9)]
+        HRESULT getItemInfo(
+            [in] BSTR bstrItemName,
+            [out, retval] BSTR *pbstrVal);
+
+        [id(0x02fa)]
+        HRESULT setItemInfo(
+            [in] BSTR bstrItemName,
+            [in] BSTR bstrVal);
+
+        [id(0x02fd)]
+        HRESULT getItemInfoByAtom(
+            [in] long lAtom,
+            [out, retval] BSTR *pbstrVal);
+
+        [id(0x02fe)]
+        HRESULT isMemberOf(
+            [in] IWMPPlaylist *pPlaylist,
+            [out, retval] VARIANT_BOOL *pvarfIsMemberOf);
+
+        [id(0x02ff)]
+        HRESULT isReadOnlyItem(
+            [in] BSTR bstrItemName,
+            [out, retval] VARIANT_BOOL *pvarfIsReadOnly);
+    }
+
+    [
+        odl,
+        uuid(74c09E02-f828-11d2-a74b-00a0c905f36e),
+        dual,
+        oleautomation
+    ]
+    interface IWMPControls : IDispatch {
+        [id(0x003e), propget]
+        HRESULT isAvailable(
+            [in] BSTR bstrItem,
+            [out, retval] VARIANT_BOOL *pIsAvailable);
+
+        [id(0x0033)]
+        HRESULT play();
+
+        [id(0x0034)]
+        HRESULT stop();
+
+        [id(0x0035)]
+        HRESULT pause();
+
+        [id(0x0036)]
+        HRESULT fastForward();
+
+        [id(0x0037)]
+        HRESULT fastReverse();
+
+        [id(0x0038), propget]
+        HRESULT currentPosition([out, retval] double *pdCurrentPosition);
+        [id(0x0038), propput]
+        HRESULT currentPosition([in] double pdCurrentPosition);
+
+        [id(0x0039), propget]
+        HRESULT currentPositionString([out, retval] BSTR *pbstrCurrentPosition);
+
+        [id(0x003a)]
+        HRESULT next();
+
+        [id(0x003b)]
+        HRESULT previous();
+
+        [id(0x003c)]
+        HRESULT currentItem([out, retval] IWMPMedia **ppIWMPMedia);
+
+        [id(0x003c), propput]
+        HRESULT currentItem([in] IWMPMedia *ppIWMPMedia);
+
+        [id(0x003d), propget]
+        HRESULT currentMarker([out, retval] long *plMarker);
+
+        [id(0x003d), propput]
+        HRESULT currentMarker([in] long plMarker);
+
+        [id(0x003f)]
+        HRESULT playItem([in] IWMPMedia *pIWMPMedia);
+    }
+
+    [
+        odl,
+        uuid(6f030d25-0890-480f-9775-1f7e40ab5b8e),
+        dual,
+        oleautomation
+    ]
+    interface IWMPControls2 : IWMPControls
+    {
+        [id(0x0040)]
+        HRESULT step([in] long lStep);
+    }
+
+    [
+        odl,
+        uuid(cbb92747-741f-44fe-ab5b-f1a48f3b2a59),
+        oleautomation
+    ]
+    interface IWMPRemoteMediaServices : IUnknown
+    {
+        HRESULT GetServiceType([out, retval] BSTR *type);
+
+        HRESULT GetApplicationName([out, retval] BSTR *name);
+
+        HRESULT GetScriptableObject([out, retval] BSTR *name, [out, retval] IDispatch **out);
+
+        HRESULT GetCustomUIMode([out, retval] BSTR *file);
+    }
+
+    [
+        odl,
+        uuid(9104d1ab-80c9-4fed-abf0-2e6417a6df14),
+        dual,
+        oleautomation
+    ]
+    interface IWMPSettings : IDispatch
+    {
+        [id(0x0071), propget]
+        HRESULT isAvailable(
+            [in] BSTR bstrItem,
+            [out, retval] VARIANT_BOOL *pIsAvailable);
+
+        [id(0x0065), propget]
+        HRESULT autoStart([out, retval] VARIANT_BOOL *pfAutoStart);
+        [id(0x0065), propput]
+        HRESULT autoStart([in] VARIANT_BOOL pfAutoStart);
+
+        [id(0x006c), propget]
+        HRESULT baseURL([out, retval] BSTR *pbstrBaseURL);
+        [id(0x006c), propput]
+        HRESULT baseURL([in] BSTR pbstrBaseURL);
+
+        [id(0x006d), propget]
+        HRESULT defaultFrame([out, retval] BSTR *pbstrDefaultFrame);
+        [id(0x006d), propput]
+        HRESULT defaultFrame([in] BSTR pbstrDefaultFrame);
+
+        [id(0x0067), propget]
+        HRESULT invokeURLs([out, retval] VARIANT_BOOL *pfInvokeURLs);
+        [id(0x0067), propput]
+        HRESULT invokeURLs([in] VARIANT_BOOL pfInvokeURLs);
+
+        [id(0x0068), propget]
+        HRESULT mute([out, retval] VARIANT_BOOL *pfMute);
+        [id(0x0068), propput]
+        HRESULT mute([in] VARIANT_BOOL pfMute);
+
+        [id(0x0069), propget]
+        HRESULT playCount([out, retval] long *plCount);
+        [id(0x0069), propput]
+        HRESULT playCount([in] long plCount);
+
+        [id(0x006a), propget]
+        HRESULT rate([out, retval] double *pdRate);
+        [id(0x006a), propput]
+        HRESULT rate([in] double pdRate);
+
+        [id(0x0066), propget]
+        HRESULT balance([out, retval] long *plBalance);
+        [id(0x0066), propput]
+        HRESULT balance([in] long plBalance);
+
+        [id(0x006b), propget]
+        HRESULT volume([out, retval] long *plVolume);
+        [id(0x006b), propput]
+        HRESULT volume([in] long plVolume);
+
+        [id(0x006e)]
+        HRESULT getMode(
+            [in] BSTR bstrMode,
+            [out, retval] VARIANT_BOOL *pvarfMode);
+
+        [id(0x006f)]
+        HRESULT setMode(
+            [in] BSTR bstrMode,
+            [in] VARIANT_BOOL varfMode);
+
+        [id(0x0070), propget]
+        HRESULT enableErrorDialogs([out, retval] VARIANT_BOOL *pfEnableErrorDialogs);
+
+        [id(0x0070), propput]
+        HRESULT enableErrorDialogs([in] VARIANT_BOOL pfEnableErrorDialogs);
+    }
+
+    [
+        odl,
+        uuid(4a976298-8c0d-11d3-b389-00c04f68574b),
+        dual,
+        oleautomation
+    ]
+    interface IWMPStringCollection : IDispatch
+    {
+        [id(0x0191), propget]
+        HRESULT count([out, retval] long *plCount);
+
+        [id(0x0192)]
+        HRESULT Item(
+            [in] long lIndex,
+            [out, retval] BSTR *pbstrString);
+    }
+
+    [
+        odl,
+        uuid(8363bc22-b4b4-4b19-989d-1cd765749dd1),
+        dual,
+        oleautomation
+    ]
+    interface IWMPMediaCollection : IDispatch
+    {
+        [id(0x01c4)]
+        HRESULT add(
+            [in] BSTR bstrURL,
+            [out, retval] IWMPMedia **ppItem);
+
+        [id(0x01c5)]
+        HRESULT getAll([out, retval] IWMPPlaylist **ppMediaItems);
+
+        [id(0x01c6)]
+        HRESULT getByName(
+            [in] BSTR bstrName,
+            [out, retval] IWMPPlaylist **ppMediaItems);
+
+        [id(0x01c7)]
+        HRESULT getByGenre(
+            [in] BSTR bstrGenre,
+            [out, retval] IWMPPlaylist **ppMediaItems);
+
+        [id(0x01c8)]
+        HRESULT getByAuthor(
+            [in] BSTR bstrAuthor,
+            [out, retval] IWMPPlaylist **ppMediaItems);
+
+        [id(0x01c9)]
+        HRESULT getByAlbum(
+            [in] BSTR bstrAlbum,
+            [out, retval] IWMPPlaylist **ppMediaItems);
+
+        [id(0x01ca)]
+        HRESULT getByAttribute(
+            [in] BSTR bstrAttribute,
+            [in] BSTR bstrValue,
+            [out, retval] IWMPPlaylist **ppMediaItems);
+
+        [id(0x01cb)]
+        HRESULT remove(
+            [in] IWMPMedia *pItem,
+            [in] VARIANT_BOOL varfDeleteFile);
+
+        [id(0x01cd)]
+        HRESULT getAttributeStringCollection(
+            [in] BSTR bstrAttribute,
+            [in] BSTR bstrMediaType,
+            [out, retval] IWMPStringCollection **ppStringCollection);
+
+        [id(0x01d6)]
+        HRESULT getMediaAtom(
+            [in] BSTR bstrItemName,
+            [out, retval] long *plAtom);
+
+        [id(0x01d7)]
+        HRESULT setDeleted(
+            [in] IWMPMedia *pItem,
+            [in] VARIANT_BOOL varfIsDeleted);
+
+        [id(0x01d8)]
+        HRESULT isDeleted(
+            [in] IWMPMedia *pItem,
+            [out, retval] VARIANT_BOOL *pvarfIsDeleted);
+    }
+
+    [
+        odl,
+        uuid(679409c0-99f7-11d3-9fb7-00105aa620bb),
+        dual,
+        oleautomation
+    ]
+    interface IWMPPlaylistArray : IDispatch
+    {
+        [id(0x01f5), propget]
+        HRESULT count([out, retval] long *plCount);
+
+        [id(0x01f6)]
+        HRESULT Item(
+            [in] long lIndex,
+            [out, retval] IWMPPlaylist **ppItem);
+    }
+
+    [
+        odl,
+        uuid(10a13217-23a7-439b-b1c0-d847c79b7774),
+        dual,
+        oleautomation
+    ]
+    interface IWMPPlaylistCollection : IDispatch
+    {
+        [id(0x0228)]
+        HRESULT newPlaylist(
+            [in] BSTR bstrName,
+            [out, retval] IWMPPlaylist **ppItem);
+
+        [id(0x0229)]
+        HRESULT getAll([out, retval] IWMPPlaylistArray **ppPlaylistArray);
+
+        [id(0x022a)]
+        HRESULT getByName(
+            [in] BSTR bstrName,
+            [out, retval] IWMPPlaylistArray **ppPlaylistArray);
+
+        [id(0x022c)]
+        HRESULT remove([in] IWMPPlaylist *pItem);
+
+        [id(0x0230)]
+        HRESULT setDeleted(
+            [in] IWMPPlaylist *pItem,
+            [in] VARIANT_BOOL varfIsDeleted);
+
+        [id(0x0231)]
+        HRESULT isDeleted(
+            [in] IWMPPlaylist *pItem,
+            [out, retval] VARIANT_BOOL *pvarfIsDeleted);
+
+        [id(0x0232)]
+        HRESULT importPlaylist(
+            [in] IWMPPlaylist *pItem,
+            [out, retval] IWMPPlaylist **ppImportedItem);
+    }
+
+    [
+        odl,
+        uuid(ec21b779-edef-462d-bba4-ad9dde2b29a7),
+        dual,
+        oleautomation
+    ]
+    interface IWMPNetwork : IDispatch
+    {
+        [id(0x0321), propget]
+        HRESULT bandWidth([out, retval] long *plBandwidth);
+
+        [id(0x0322), propget]
+        HRESULT recoveredPackets([out, retval] long *plRecoveredPackets);
+
+        [id(0x0323), propget]
+        HRESULT sourceProtocol([out, retval] BSTR *pbstrSourceProtocol);
+
+        [id(0x0324), propget]
+        HRESULT receivedPackets([out, retval] long *plReceivedPackets);
+
+        [id(0x0325), propget]
+        HRESULT lostPackets([out, retval] long *plLostPackets);
+
+        [id(0x0326), propget]
+        HRESULT receptionQuality([out, retval] long *plReceptionQuality);
+
+        [id(0x0327), propget]
+        HRESULT bufferingCount([out, retval] long *plBufferingCount);
+
+        [id(0x0328), propget]
+        HRESULT bufferingProgress([out, retval] long *plBufferingProgress);
+
+        [id(0x0329), propget]
+        HRESULT bufferingTime([out, retval] long *plBufferingTime);
+
+        [id(0x0329), propput]
+        HRESULT bufferingTime([in] long plBufferingTime);
+
+        [id(0x032a), propget]
+        HRESULT frameRate([out, retval] long *plFrameRate);
+
+        [id(0x032b), propget]
+        HRESULT maxBitRate([out, retval] long *plBitRate);
+
+        [id(0x032c), propget]
+        HRESULT bitRate([out, retval] long *plBitRate);
+
+        [id(0x032d)]
+        HRESULT getProxySettings(
+            [in] BSTR bstrProtocol,
+            [out, retval] long *plProxySetting);
+
+        [id(0x032e)]
+        HRESULT setProxySettings(
+            [in] BSTR bstrProtocol,
+            [in] long lProxySetting);
+
+        [id(0x032f)]
+        HRESULT getProxyName(
+            [in] BSTR bstrProtocol,
+            [out, retval] BSTR *pbstrProxyName);
+
+        [id(0x0330)]
+        HRESULT setProxyName(
+            [in] BSTR bstrProtocol,
+            [in] BSTR bstrProxyName);
+
+        [id(0x0331)]
+        HRESULT getProxyPort(
+            [in] BSTR bstrProtocol,
+            [out, retval] long *lProxyPort);
+
+        [id(0x0332)]
+        HRESULT setProxyPort(
+            [in] BSTR bstrProtocol,
+            [in] long lProxyPort);
+
+        [id(0x0333)]
+        HRESULT getProxyExceptionList(
+            [in] BSTR bstrProtocol,
+            [out, retval] BSTR *pbstrExceptionList);
+
+        [id(0x0334)]
+        HRESULT setProxyExceptionList(
+            [in] BSTR bstrProtocol,
+            [in] BSTR pbstrExceptionList);
+
+        [id(0x0335)]
+        HRESULT getProxyBypassForLocal(
+            [in] BSTR bstrProtocol,
+            [out, retval] VARIANT_BOOL *pfBypassForLocal);
+
+        [id(0x0336)]
+        HRESULT setProxyBypassForLocal(
+            [in] BSTR bstrProtocol,
+            [in] VARIANT_BOOL fBypassForLocal);
+
+        [id(0x0337), propget]
+        HRESULT maxBandwidth([out, retval] long *lMaxBandwidth);
+        [id(0x0337), propput]
+        HRESULT maxBandwidth([in] long lMaxBandwidth);
+
+        [id(0x0338), propget]
+        HRESULT downloadProgress([out, retval] long *plDownloadProgress);
+
+        [id(0x0339), propget]
+        HRESULT encodedFrameRate([out, retval] long *plFrameRate);
+
+        [id(0x033a), propget]
+        HRESULT framesSkipped([out, retval] long *plFrames);
+    }
+
+    [
+        odl,
+        uuid(cfab6e98-8730-11d3-b388-00c04f68574b),
+        dual,
+        oleautomation
+    ]
+    interface IWMPCdrom : IDispatch
+    {
+        [id(0x00fb), propget]
+        HRESULT driveSpecifier([out, retval] BSTR *pbstrDrive);
+
+        [id(0x00fc), propget]
+        HRESULT Playlist([out, retval] IWMPPlaylist **ppPlaylist);
+
+        [id(0x00fd)]
+        HRESULT eject();
+    }
+
+    [
+        odl,
+        uuid(ee4c8fe2-34b2-11d3-a3bf-006097c9b344),
+        dual,
+        oleautomation
+    ]
+    interface IWMPCdromCollection : IDispatch
+    {
+        [id(0x012d), propget]
+        HRESULT count([out, retval] long *plCount);
+
+        [id(0x012e)]
+        HRESULT Item(
+            [in] long lIndex,
+            [out, retval] IWMPCdrom **ppItem);
+
+        [id(0x012f)]
+        HRESULT getByDriveSpecifier(
+            [in] BSTR bstrDriveSpecifier,
+            [out, retval] IWMPCdrom **ppCdrom);
+    }
+
+    [
+        odl,
+        uuid(8da61686-4668-4a5c-ae5d-803193293dbe),
+        dual,
+        oleautomation
+    ]
+    interface IWMPDVD : IDispatch
+    {
+        [id(0x03e9), propget]
+        HRESULT isAvailable(
+            [in] BSTR bstrItem,
+            [out, retval] VARIANT_BOOL *pIsAvailable);
+
+        [id(0x03ea), propget]
+        HRESULT domain([out, retval] BSTR *strDomain);
+
+        [id(0x03eb)]
+        HRESULT topMenu();
+
+        [id(0x03ec)]
+        HRESULT titleMenu();
+
+        [id(0x03ed)]
+        HRESULT back();
+
+        [id(0x03ee)]
+        HRESULT resume();
+    }
+
+    [
+        odl,
+        uuid(4f2df574-c588-11d3-9ed0-00c04fb6e937),
+        dual,
+        oleautomation
+    ]
+    interface IWMPClosedCaption : IDispatch
+    {
+        [id(0x03b7), propget]
+        HRESULT SAMIStyle([out, retval] BSTR *pbstrSAMIStyle);
+        [id(0x03b7), propput]
+        HRESULT SAMIStyle([in] BSTR pbstrSAMIStyle);
+
+        [id(0x03b8), propget]
+        HRESULT SAMILang([out, retval] BSTR *pbstrSAMILang);
+
+        [id(0x03b8), propput]
+        HRESULT SAMILang([in] BSTR pbstrSAMILang);
+
+        [id(0x03b9), propget]
+        HRESULT SAMIFileName([out, retval] BSTR *pbstrSAMIFileName);
+
+        [id(0x03b9), propput]
+        HRESULT SAMIFileName([in] BSTR pbstrSAMIFileName);
+
+        [id(0x03ba), propget]
+        HRESULT captioningId([out, retval] BSTR *pbstrCaptioningID);
+
+        [id(0x03ba), propput]
+        HRESULT captioningId([in] BSTR pbstrCaptioningID);
+    }
+
+    [
+        odl,
+        uuid(3614c646-3b3b-4de7-a81e-930e3f2127b3),
+        dual,
+        oleautomation
+    ]
+    interface IWMPErrorItem : IDispatch
+    {
+        [id(0x0385), propget]
+        HRESULT errorCode([out, retval] long *phr);
+
+        [id(0x0386), propget]
+        HRESULT errorDescription([out, retval] BSTR *pbstrDescription);
+
+        [id(0x0387), propget]
+        HRESULT errorContext([out, retval] VARIANT *pvarContext);
+
+        [id(0x0388), propget]
+        HRESULT remedy([out, retval] long *plRemedy);
+
+        [id(0x0389), propget]
+        HRESULT customUrl([out, retval] BSTR *pbstrCustomUrl);
+    }
+
+    [
+        odl,
+        uuid(ab7c88bb-143e-4ea4-acc3-e4350b2106c3),
+        dual,
+        oleautomation
+    ]
+    interface IWMPMedia2 : IWMPMedia
+    {
+        [id(0x0300), propget]
+        HRESULT error([out, retval] IWMPErrorItem **out);
+    }
+
+    [
+        odl,
+        uuid(f118efc7-f03a-4fb4-99c9-1c02a5c1065b),
+        dual,
+        oleautomation
+    ]
+    interface IWMPMedia3 : IWMPMedia2
+    {
+        [id(0x0301)]
+        HRESULT getAttributeCountByType([in] BSTR type, [in] BSTR language, [out, retval] long *out);
+
+        [id(0x0302)]
+        HRESULT getItemInfoByType([in] BSTR type, [in] BSTR language, [in] long index, [out, retval] VARIANT *out);
+    }
+
+    [
+        odl,
+        uuid(a12dcf7d-14ab-4c1b-a8cd-63909f06025b),
+        dual,
+        oleautomation
+    ]
+    interface IWMPError : IDispatch
+    {
+        [id(0x0353)]
+        HRESULT clearErrorQueue();
+
+        [id(0x0354), propget]
+        HRESULT errorCount([out, retval] long *plNumErrors);
+
+        [id(0x0355), propget]
+        HRESULT Item(
+            [in] long dwIndex,
+            [out, retval] IWMPErrorItem **ppErrorItem);
+
+        [id(0x0356)]
+        HRESULT webHelp();
+    }
+
+    [
+        odl,
+        uuid(40897764-ceab-47be-ad4a-8e28537f9bbf),
+        dual,
+        oleautomation
+    ]
+    interface IWMPPlayerApplication : IDispatch
+    {
+        [id(0x044d)]
+        HRESULT switchToPlayerApplication();
+
+        [id(0x044e)]
+        HRESULT switchToControl();
+
+        [id(0x044f), propget]
+        HRESULT playerDocked([out, retval] VARIANT_BOOL* pbPlayerDocked);
+
+        [id(0x0450), propget]
+        HRESULT hasDisplay([out, retval] VARIANT_BOOL *pbHasDisplay);
+    }
+
+    [
+        odl,
+        uuid(d84cca99-cce2-11d2-9ecc-0000f8085981),
+        dual,
+        oleautomation
+    ]
+    interface IWMPCore : IDispatch
+    {
+        [id(0x0003)]
+        HRESULT close();
+
+        [id(0x0001), propget]
+        HRESULT URL([out, retval] BSTR *pbstrURL);
+        [id(0x0001), propput]
+        HRESULT URL([in] BSTR pbstrURL);
+
+        [id(0x0002), propget]
+        HRESULT openState([out, retval] WMPOpenState *pwmpos);
+
+        [id(0x000a), propget]
+        HRESULT playState([out, retval] WMPPlayState *pwmpps);
+
+        [id(0x0004), propget]
+        HRESULT controls([out, retval] IWMPControls **ppControl);
+
+        [id(0x0005), propget]
+        HRESULT settings([out, retval] IWMPSettings **ppSettings);
+
+        [id(0x0006), propget]
+        HRESULT currentMedia([out, retval] IWMPMedia **ppMedia);
+        [id(0x0006), propput]
+        HRESULT currentMedia([in] IWMPMedia *ppMedia);
+
+        [id(0x0008), propget]
+        HRESULT mediaCollection([out, retval] IWMPMediaCollection **ppMediaCollection);
+
+        [id(0x0009), propget]
+        HRESULT playlistCollection([out, retval] IWMPPlaylistCollection **ppPlaylistCollection);
+
+        [id(0x000b), propget]
+        HRESULT versionInfo([out, retval] BSTR *pbstrVersionInfo);
+
+        [id(0x000c)]
+        HRESULT launchURL([in] BSTR bstrURL);
+
+        [id(0x0007), propget]
+        HRESULT network([out, retval] IWMPNetwork **ppQNI);
+
+        [id(0x000d), propget]
+        HRESULT currentPlaylist([out, retval] IWMPPlaylist **ppPL);
+        [id(0x000d), propput]
+        HRESULT currentPlaylist([in] IWMPPlaylist *ppPL);
+
+        [id(0x000e), propget]
+        HRESULT cdromCollection([out, retval] IWMPCdromCollection **ppCdromCollection);
+
+        [id(0x000f), propget]
+        HRESULT closedCaption([out, retval] IWMPClosedCaption **ppClosedCaption);
+
+        [id(0x0010), propget]
+        HRESULT isOnline([out, retval] VARIANT_BOOL *pfOnline);
+
+        [id(0x0011), propget]
+        HRESULT Error([out, retval] IWMPError **ppError);
+
+        [id(0x0012), propget]
+        HRESULT status([out, retval] BSTR *pbstrStatus);
+    }
+
+    [
+        odl,
+        uuid(bc17e5B7-7561-4c18-bb90-17d485775659),
+        dual,
+        oleautomation
+    ]
+    interface IWMPCore2 : IWMPCore {
+        [id(0x0028), propget]
+        HRESULT dvd([out, retval] IWMPDVD **ppDVD);
+    }
+
+    [
+        odl,
+        uuid(7587c667-628f-499f-88e7-6A6f4e888464),
+        dual,
+        oleautomation
+    ]
+    interface IWMPCore3 : IWMPCore2
+    {
+        [id(0x0029)]
+        HRESULT newPlaylist(
+            [in] BSTR bstrName,
+            [in] BSTR bstrURL,
+            [out, retval] IWMPPlaylist **ppPlaylist);
+
+        [id(0x002a)]
+        HRESULT newMedia(
+            [in] BSTR bstrURL,
+            [out, retval] IWMPMedia **ppMedia);
+    }
+
+    [
+        odl,
+        uuid(6c497d62-8919-413c-82db-e935fb3ec584),
+        dual,
+        oleautomation
+    ]
+    interface IWMPPlayer4 : IWMPCore3
+    {
+        [id(0x0013), propget]
+        HRESULT enabled([out, retval] VARIANT_BOOL *pbEnabled);
+        [id(0x0013), propput]
+        HRESULT enabled([in] VARIANT_BOOL pbEnabled);
+
+        [id(0x0015), propget]
+        HRESULT fullScreen([out, retval] VARIANT_BOOL *pbFullScreen);
+        [id(0x0015), propput]
+        HRESULT fullScreen(VARIANT_BOOL pbFullScreen);
+
+        [id(0x0016), propget]
+        HRESULT enableContextMenu([out, retval] VARIANT_BOOL *pbEnableContextMenu);
+        [id(0x0016), propput]
+        HRESULT enableContextMenu(VARIANT_BOOL pbEnableContextMenu);
+
+        [id(0x0017), propput]
+        HRESULT uiMode([in] BSTR pbstrMode);
+        [id(0x0017), propget]
+        HRESULT uiMode([out, retval] BSTR *pbstrMode);
+
+        [id(0x0018), propget]
+        HRESULT stretchToFit([out, retval] VARIANT_BOOL *pbEnabled);
+        [id(0x0018), propput]
+        HRESULT stretchToFit([in] VARIANT_BOOL pbEnabled);
+
+        [id(0x0019), propget]
+        HRESULT windowlessVideo([out, retval] VARIANT_BOOL *pbEnabled);
+        [id(0x0019), propput]
+        HRESULT windowlessVideo([in] VARIANT_BOOL pbEnabled);
+
+        [id(0x001a), propget]
+        HRESULT isRemote([out, retval] VARIANT_BOOL *pvarfIsRemote);
+
+        [id(0x001b), propget]
+        HRESULT playerApplication([out, retval] IWMPPlayerApplication **ppIWMPPlayerApplication);
+
+        [id(0x001c)]
+        HRESULT openPlayer([in] BSTR bstrURL);
+    }
+
+    [
+      odl,
+      uuid(6BF52A4F-394A-11D3-B153-00C04F79FAA6),
+      dual,
+      oleautomation
+    ]
+    interface IWMPPlayer : IWMPCore {
+        [id(0x00000013), propget]
+        HRESULT enabled([out, retval] VARIANT_BOOL* pbEnabled);
+        [id(0x00000013), propput]
+        HRESULT enabled([in] VARIANT_BOOL pbEnabled);
+        [id(0x00000015), propget]
+        HRESULT fullScreen([out, retval] VARIANT_BOOL* pbFullScreen);
+        [id(0x00000015), propput]
+        HRESULT fullScreen(VARIANT_BOOL pbFullScreen);
+        [id(0x00000016), propget]
+        HRESULT enableContextMenu([out, retval] VARIANT_BOOL* pbEnableContextMenu);
+        [id(0x00000016), propput]
+        HRESULT enableContextMenu(VARIANT_BOOL pbEnableContextMenu);
+        [id(0x00000017), propput]
+        HRESULT uiMode([in] BSTR pbstrMode);
+        [id(0x00000017), propget]
+        HRESULT uiMode([out, retval] BSTR* pbstrMode);
+    };
+
+    [
+        odl,
+        uuid(82a2986c-0293-4fd0-b279-b21b86c058be),
+        oleautomation
+    ]
+    interface IWMPSyncDevice : IUnknown
+    {
+        [propget]
+        HRESULT friendlyName([out, retval] BSTR *name);
+
+        [propput]
+        HRESULT friendlyName([in] BSTR name);
+
+        [propget]
+        HRESULT deviceName([out, retval] BSTR *name);
+
+        [propget]
+        HRESULT deviceId([out, retval] BSTR *device);
+
+        [propget]
+        HRESULT partnershipIndex([out, retval] long *index);
+
+        [propget]
+        HRESULT connected([out, retval] VARIANT_BOOL *connected);
+
+        [propget]
+        HRESULT status([out, retval] WMPDeviceStatus *status);
+
+        [propget]
+        HRESULT syncState([out, retval] WMPSyncState *state);
+
+        [propget]
+        HRESULT progress([out, retval] long *progress);
+
+        HRESULT getItemInfo(
+            [in] BSTR name,
+            [out, retval] BSTR *val);
+
+        HRESULT createPartnership([in] VARIANT_BOOL showui);
+
+        HRESULT deletePartnership();
+
+        HRESULT start();
+
+        HRESULT stop();
+
+        HRESULT showSettings();
+
+        HRESULT isIdentical(
+            [in] IWMPSyncDevice *device,
+            [out, retval] VARIANT_BOOL *ret);
+    }
+
+    [
+        odl,
+        uuid(88afb4b2-140a-44d2-91e6-4543da467cd1),
+        oleautomation
+    ]
+    interface IWMPSyncDevice2 : IWMPSyncDevice
+    {
+        HRESULT setItemInfo(
+            [in] BSTR name,
+            [in] BSTR val);
+    }
+
+    [
+      odl,
+      uuid(56e2294f-69ed-4629-a869-aea72c0dcc2c),
+      oleautomation
+    ]
+    interface IWMPCdromRip : IUnknown
+    {
+        [propget]
+        HRESULT ripState([out, retval] WMPRipState *state);
+
+        [propget]
+        HRESULT ripProgress([out, retval] long *progress);
+
+        HRESULT startRip();
+
+        HRESULT stopRip();
+    }
+
+    [
+        odl,
+        uuid(bd94dbeb-417f-4928-aa06-087d56ed9b59),
+        oleautomation
+    ]
+    interface IWMPCdromBurn : IUnknown
+    {
+        HRESULT isAvailable(
+            [in] BSTR item,
+            [out, retval] VARIANT_BOOL *available);
+
+        HRESULT getItemInfo(
+            [in] BSTR item,
+            [out, retval] BSTR *val);
+
+        [propget]
+        HRESULT label([out, retval] BSTR *label);
+
+        [propput]
+        HRESULT label([in] BSTR label);
+
+        [propget]
+        HRESULT burnFormat([out, retval] WMPBurnFormat *format);
+
+        [propput]
+        HRESULT burnFormat([in] WMPBurnFormat format);
+
+        [propget]
+        HRESULT burnPlaylist([out, retval] IWMPPlaylist **playlist);
+
+        [propput]
+        HRESULT burnPlaylist([in] IWMPPlaylist *playlist);
+
+        HRESULT refreshStatus();
+
+        [propget]
+        HRESULT burnState([out, retval] WMPBurnState *state);
+
+        [propget]
+        HRESULT burnProgress([out, retval] long *progress);
+
+        HRESULT startBurn();
+
+        HRESULT stopBurn();
+
+        HRESULT erase();
+    }
+
+    [
+        odl,
+        uuid(3df47861-7df1-4c1f-a81b-4c26f0f7a7c6),
+        oleautomation
+    ]
+    interface IWMPLibrary : IUnknown
+    {
+        [propget]
+        HRESULT name([out, retval] BSTR *name);
+
+        [propget]
+        HRESULT type([out, retval] WMPLibraryType *type);
+
+        [propget]
+        HRESULT mediaCollection([out, retval] IWMPMediaCollection **collection);
+
+        HRESULT isIdentical(
+            [in] IWMPLibrary *wmplibrary,
+            [out, retval] VARIANT_BOOL *ret);
+    }
+
+    [
+        uuid(19a6627b-da9e-47c1-bb23-00b5e668236a),
+        odl
+    ]
+    interface IWMPEvents : IUnknown
+    {
+        void OpenStateChange([in] long state);
+
+        void PlayStateChange([in] long state);
+
+        void AudioLanguageChange([in] long lang);
+
+        void StatusChange();
+
+        void ScriptCommand(
+            [in] BSTR type,
+            [in] BSTR param);
+
+        void NewStream();
+
+        void Disconnect([in] long result);
+
+        void Buffering([in] VARIANT_BOOL start);
+
+        void Error();
+
+        void Warning(
+            [in] long warning,
+            [in] long param,
+            [in] BSTR description);
+
+        void EndOfStream([in] long result);
+
+        void PositionChange(
+            [in] double old_position,
+            [in] double new_position);
+
+        void MarkerHit([in] long marker);
+
+        void DurationUnitChange([in] long duration);
+
+        void CdromMediaChange([in] long num);
+
+        void PlaylistChange(
+            [in] IDispatch *playlist,
+            [in] WMPPlaylistChangeEventType change);
+
+        void CurrentPlaylistChange([in] WMPPlaylistChangeEventType change);
+
+        void CurrentPlaylistItemAvailable([in] BSTR item);
+
+        void MediaChange([in] IDispatch *item);
+
+        void CurrentMediaItemAvailable([in] BSTR name);
+
+        void CurrentItemChange([in] IDispatch *media);
+
+        void MediaCollectionChange();
+
+        void MediaCollectionAttributeStringAdded(
+            [in] BSTR name,
+            [in] BSTR val);
+
+        void MediaCollectionAttributeStringRemoved(
+            [in] BSTR name,
+            [in] BSTR val);
+
+        void MediaCollectionAttributeStringChanged(
+            [in] BSTR name,
+            [in] BSTR old_val,
+            [in] BSTR new_val);
+
+        void PlaylistCollectionChange();
+
+        void PlaylistCollectionPlaylistAdded([in] BSTR name);
+
+        void PlaylistCollectionPlaylistRemoved([in] BSTR name);
+
+        void PlaylistCollectionPlaylistSetAsDeleted(
+            [in] BSTR name,
+            [in] VARIANT_BOOL deleted);
+
+        void ModeChange(
+            [in] BSTR ModeName,
+            [in] VARIANT_BOOL value);
+
+        void MediaError([in] IDispatch *media);
+
+        void OpenPlaylistSwitch([in] IDispatch *item);
+
+        void DomainChange([in] BSTR domain);
+
+        void SwitchedToPlayerApplication();
+
+        void SwitchedToControl();
+
+        void PlayerDockedStateChange();
+
+        void PlayerReconnect();
+
+        void Click(
+            [in] short button,
+            [in] short shift_state,
+            [in] long x,
+            [in] long y);
+
+        void DoubleClick(
+            [in] short button,
+            [in] short shift_state,
+            [in] long fX,
+            [in] long fY);
+
+        void KeyDown(
+            [in] short keycode,
+            [in] short shift_state);
+
+        void KeyPress([in] short ascii);
+
+        void KeyUp(
+            [in] short keycode,
+            [in] short shift_state);
+
+        void MouseDown(
+            [in] short button,
+            [in] short nShiftState,
+            [in] long x,
+            [in] long y);
+
+        void MouseMove(
+            [in] short button,
+            [in] short shift_state,
+            [in] long x,
+            [in] long y);
+
+        void MouseUp(
+            [in] short button,
+            [in] short shift_state,
+            [in] long x,
+            [in] long y);
+    }
+
+    [
+        uuid(1e7601fa-47ea-4107-9ea9-9004ed9684ff),
+        odl
+    ]
+    interface IWMPEvents2 : IWMPEvents
+    {
+        void DeviceConnect([in] IWMPSyncDevice *device);
+
+        void DeviceDisconnect([in] IWMPSyncDevice *device);
+
+        void DeviceStatusChange(
+            [in] IWMPSyncDevice *device,
+            [in] WMPDeviceStatus status);
+
+        void DeviceSyncStateChange(
+            [in] IWMPSyncDevice *device,
+            [in] WMPSyncState state);
+
+        void DeviceSyncError(
+            [in] IWMPSyncDevice *device,
+            [in] IDispatch *media);
+
+        void CreatePartnershipComplete(
+            [in] IWMPSyncDevice *device,
+            [in] HRESULT result);
+    }
+
+    [
+        uuid(1f504270-a66b-4223-8e96-26a06c63d69f),
+        odl
+    ]
+    interface IWMPEvents3 : IWMPEvents2
+    {
+        void CdromRipStateChange(
+            [in] IWMPCdromRip *rip,
+            [in] WMPRipState state);
+
+        void CdromRipMediaError(
+            [in] IWMPCdromRip *rip,
+            [in] IDispatch *media);
+
+        void CdromBurnStateChange(
+            [in] IWMPCdromBurn *burn,
+            [in] WMPBurnState state);
+
+        void CdromBurnMediaError(
+            [in] IWMPCdromBurn *burn,
+            [in] IDispatch *media);
+
+        void CdromBurnError(
+            [in] IWMPCdromBurn *burn,
+            [in] HRESULT error);
+
+        void LibraryConnect(
+            [in] IWMPLibrary *wmplibrary);
+
+        void LibraryDisconnect(
+            [in] IWMPLibrary *wmplibrary);
+
+        void FolderScanStateChange(
+            [in] WMPFolderScanState state);
+
+        void StringCollectionChange(
+            [in] IDispatch *collection,
+            [in] WMPStringCollectionChangeEventType change,
+            [in] long index);
+
+        void MediaCollectionMediaAdded(
+            [in] IDispatch *media);
+
+        void MediaCollectionMediaRemoved(
+            [in] IDispatch *media);
+    }
+
+    [
+        uuid(26dabcfa-306b-404d-9a6f-630a8405048d),
+        odl
+    ]
+    interface IWMPEvents4 : IWMPEvents3
+    {
+        void DeviceEstimation(
+            [in] IWMPSyncDevice *device,
+            [in] HRESULT result,
+            [in] LONGLONG used_space,
+            [in] LONGLONG estimated_space);
+    }
+
+    [
+        hidden,
+        uuid(6bf52a51-394a-11d3-b153-00c04f79faa6)
+    ]
+    interface _WMPOCXEvents : IDispatch
+    {}
+
+    [
+        helpstring("Windows Media Player"),
+        threading(apartment),
+        progid("WMPlayer.OCX.7"),
+        vi_progid("WMPlayer.OCX"),
+        uuid(6bf52a52-394a-11d3-b153-00c04f79faa6)
+     ]
+     coclass WindowsMediaPlayer
+     {
+        [default] interface IWMPPlayer4;
+        /* interface IWMPPlayer3; */
+        /* interface IWMPPlayer2; */
+        interface IWMPPlayer;
+        interface IWMPControls;
+        interface IWMPSettings;
+        interface IWMPPlaylist;
+        interface IWMPMedia;
+        interface IWMPMediaCollection;
+        interface IWMPPlaylistCollection;
+        interface IWMPCdromCollection;
+        interface IWMPError;
+        interface IWMPErrorItem;
+        /* interface IWMPErrorItem2; */
+        interface IWMPClosedCaption;
+        interface IWMPDVD;
+        interface IWMPControls2;
+        interface IWMPMedia2;
+        interface IWMPMedia3;
+        /* interface IWMPMetadataPicture; */
+        /* interface IWMPMetadataText; */
+        /* interface IWMPSettings2; */
+        /* interface IWMPControls3; */
+        /* interface IWMPClosedCaption2; */
+        /* interface IWMPMediaCollection2; */
+        /* interface IWMPStringCollection2; */
+        [default, source] dispinterface _WMPOCXEvents;
+     }
+}
diff --git a/mingw-w64-headers/wine-import.sh b/mingw-w64-headers/wine-import.sh
index 7847a84..f1859cb 100755
--- a/mingw-w64-headers/wine-import.sh
+++ b/mingw-w64-headers/wine-import.sh
@@ -192,6 +192,7 @@
 	wincodec \
 	wincodecsdk \
 	wmdrmsdk \
+	wmp \
 	wmsbuffer \
 	wmsdkidl \
 	wpcapi \