diff --git a/mingw-w64-headers/include/activation.h b/mingw-w64-headers/include/activation.h
index 48538d2..14e2d56 100644
--- a/mingw-w64-headers/include/activation.h
+++ b/mingw-w64-headers/include/activation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/activation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/activation.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/activaut.h b/mingw-w64-headers/include/activaut.h
index 1043fe5..8dd94e4 100644
--- a/mingw-w64-headers/include/activaut.h
+++ b/mingw-w64-headers/include/activaut.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/activaut.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/activaut.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/activdbg.h b/mingw-w64-headers/include/activdbg.h
index fe1371a..85dc8fe 100644
--- a/mingw-w64-headers/include/activdbg.h
+++ b/mingw-w64-headers/include/activdbg.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/activdbg.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/activdbg.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/activdbg100.h b/mingw-w64-headers/include/activdbg100.h
index 9cf8064..408ba40 100644
--- a/mingw-w64-headers/include/activdbg100.h
+++ b/mingw-w64-headers/include/activdbg100.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/activdbg100.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/activdbg100.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/activprof.h b/mingw-w64-headers/include/activprof.h
index 8942ac6..d867751 100644
--- a/mingw-w64-headers/include/activprof.h
+++ b/mingw-w64-headers/include/activprof.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/activprof.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/activprof.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/activscp.h b/mingw-w64-headers/include/activscp.h
index b7230d1..32f0009 100644
--- a/mingw-w64-headers/include/activscp.h
+++ b/mingw-w64-headers/include/activscp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/activscp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/activscp.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/adhoc.h b/mingw-w64-headers/include/adhoc.h
index 4a588d3..829b443 100644
--- a/mingw-w64-headers/include/adhoc.h
+++ b/mingw-w64-headers/include/adhoc.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/adhoc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/adhoc.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/alg.h b/mingw-w64-headers/include/alg.h
index 4095d28..266b423 100644
--- a/mingw-w64-headers/include/alg.h
+++ b/mingw-w64-headers/include/alg.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/alg.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/alg.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/amstream.h b/mingw-w64-headers/include/amstream.h
index 6cc88a4..1ef842a 100644
--- a/mingw-w64-headers/include/amstream.h
+++ b/mingw-w64-headers/include/amstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/amstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/amstream.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/amvideo.h b/mingw-w64-headers/include/amvideo.h
index 36485ab..401cdc2 100644
--- a/mingw-w64-headers/include/amvideo.h
+++ b/mingw-w64-headers/include/amvideo.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/amvideo.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/amvideo.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/audioclient.h b/mingw-w64-headers/include/audioclient.h
index 2fe3017..5784bfa 100644
--- a/mingw-w64-headers/include/audioclient.h
+++ b/mingw-w64-headers/include/audioclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 5.19 from audioclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/audioclient.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/audioendpoints.h b/mingw-w64-headers/include/audioendpoints.h
index 6ccd4a4..82bdf37 100644
--- a/mingw-w64-headers/include/audioendpoints.h
+++ b/mingw-w64-headers/include/audioendpoints.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/audioendpoints.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/audioendpoints.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/audiopolicy.h b/mingw-w64-headers/include/audiopolicy.h
index cacb7f9..4b5bc7d 100644
--- a/mingw-w64-headers/include/audiopolicy.h
+++ b/mingw-w64-headers/include/audiopolicy.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/audiopolicy.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/audiopolicy.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/austream.h b/mingw-w64-headers/include/austream.h
index 7f7a0f3..0a0191b 100644
--- a/mingw-w64-headers/include/austream.h
+++ b/mingw-w64-headers/include/austream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/austream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/austream.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/bdaiface.h b/mingw-w64-headers/include/bdaiface.h
index 8db19af..4cbc897 100644
--- a/mingw-w64-headers/include/bdaiface.h
+++ b/mingw-w64-headers/include/bdaiface.h
@@ -1,11 +1,12 @@
-/*** Autogenerated by WIDL 1.6 from include/bdaiface.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/bdaiface.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>
@@ -20,231 +21,369 @@
 #ifndef __IBDA_NetworkProvider_FWD_DEFINED__
 #define __IBDA_NetworkProvider_FWD_DEFINED__
 typedef interface IBDA_NetworkProvider IBDA_NetworkProvider;
+#ifdef __cplusplus
+interface IBDA_NetworkProvider;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_EthernetFilter_FWD_DEFINED__
 #define __IBDA_EthernetFilter_FWD_DEFINED__
 typedef interface IBDA_EthernetFilter IBDA_EthernetFilter;
+#ifdef __cplusplus
+interface IBDA_EthernetFilter;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_IPV4Filter_FWD_DEFINED__
 #define __IBDA_IPV4Filter_FWD_DEFINED__
 typedef interface IBDA_IPV4Filter IBDA_IPV4Filter;
+#ifdef __cplusplus
+interface IBDA_IPV4Filter;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_IPV6Filter_FWD_DEFINED__
 #define __IBDA_IPV6Filter_FWD_DEFINED__
 typedef interface IBDA_IPV6Filter IBDA_IPV6Filter;
+#ifdef __cplusplus
+interface IBDA_IPV6Filter;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DeviceControl_FWD_DEFINED__
 #define __IBDA_DeviceControl_FWD_DEFINED__
 typedef interface IBDA_DeviceControl IBDA_DeviceControl;
+#ifdef __cplusplus
+interface IBDA_DeviceControl;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_PinControl_FWD_DEFINED__
 #define __IBDA_PinControl_FWD_DEFINED__
 typedef interface IBDA_PinControl IBDA_PinControl;
+#ifdef __cplusplus
+interface IBDA_PinControl;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_SignalProperties_FWD_DEFINED__
 #define __IBDA_SignalProperties_FWD_DEFINED__
 typedef interface IBDA_SignalProperties IBDA_SignalProperties;
+#ifdef __cplusplus
+interface IBDA_SignalProperties;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_SignalStatistics_FWD_DEFINED__
 #define __IBDA_SignalStatistics_FWD_DEFINED__
 typedef interface IBDA_SignalStatistics IBDA_SignalStatistics;
+#ifdef __cplusplus
+interface IBDA_SignalStatistics;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_Topology_FWD_DEFINED__
 #define __IBDA_Topology_FWD_DEFINED__
 typedef interface IBDA_Topology IBDA_Topology;
+#ifdef __cplusplus
+interface IBDA_Topology;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_VoidTransform_FWD_DEFINED__
 #define __IBDA_VoidTransform_FWD_DEFINED__
 typedef interface IBDA_VoidTransform IBDA_VoidTransform;
+#ifdef __cplusplus
+interface IBDA_VoidTransform;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_NullTransform_FWD_DEFINED__
 #define __IBDA_NullTransform_FWD_DEFINED__
 typedef interface IBDA_NullTransform IBDA_NullTransform;
+#ifdef __cplusplus
+interface IBDA_NullTransform;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_FrequencyFilter_FWD_DEFINED__
 #define __IBDA_FrequencyFilter_FWD_DEFINED__
 typedef interface IBDA_FrequencyFilter IBDA_FrequencyFilter;
+#ifdef __cplusplus
+interface IBDA_FrequencyFilter;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_LNBInfo_FWD_DEFINED__
 #define __IBDA_LNBInfo_FWD_DEFINED__
 typedef interface IBDA_LNBInfo IBDA_LNBInfo;
+#ifdef __cplusplus
+interface IBDA_LNBInfo;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DiseqCommand_FWD_DEFINED__
 #define __IBDA_DiseqCommand_FWD_DEFINED__
 typedef interface IBDA_DiseqCommand IBDA_DiseqCommand;
+#ifdef __cplusplus
+interface IBDA_DiseqCommand;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_AutoDemodulate_FWD_DEFINED__
 #define __IBDA_AutoDemodulate_FWD_DEFINED__
 typedef interface IBDA_AutoDemodulate IBDA_AutoDemodulate;
+#ifdef __cplusplus
+interface IBDA_AutoDemodulate;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_AutoDemodulateEx_FWD_DEFINED__
 #define __IBDA_AutoDemodulateEx_FWD_DEFINED__
 typedef interface IBDA_AutoDemodulateEx IBDA_AutoDemodulateEx;
+#ifdef __cplusplus
+interface IBDA_AutoDemodulateEx;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DigitalDemodulator_FWD_DEFINED__
 #define __IBDA_DigitalDemodulator_FWD_DEFINED__
 typedef interface IBDA_DigitalDemodulator IBDA_DigitalDemodulator;
+#ifdef __cplusplus
+interface IBDA_DigitalDemodulator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DigitalDemodulator2_FWD_DEFINED__
 #define __IBDA_DigitalDemodulator2_FWD_DEFINED__
 typedef interface IBDA_DigitalDemodulator2 IBDA_DigitalDemodulator2;
+#ifdef __cplusplus
+interface IBDA_DigitalDemodulator2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DigitalDemodulator3_FWD_DEFINED__
 #define __IBDA_DigitalDemodulator3_FWD_DEFINED__
 typedef interface IBDA_DigitalDemodulator3 IBDA_DigitalDemodulator3;
+#ifdef __cplusplus
+interface IBDA_DigitalDemodulator3;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ICCSubStreamFiltering_FWD_DEFINED__
 #define __ICCSubStreamFiltering_FWD_DEFINED__
 typedef interface ICCSubStreamFiltering ICCSubStreamFiltering;
+#ifdef __cplusplus
+interface ICCSubStreamFiltering;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_IPSinkControl_FWD_DEFINED__
 #define __IBDA_IPSinkControl_FWD_DEFINED__
 typedef interface IBDA_IPSinkControl IBDA_IPSinkControl;
+#ifdef __cplusplus
+interface IBDA_IPSinkControl;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_IPSinkInfo_FWD_DEFINED__
 #define __IBDA_IPSinkInfo_FWD_DEFINED__
 typedef interface IBDA_IPSinkInfo IBDA_IPSinkInfo;
+#ifdef __cplusplus
+interface IBDA_IPSinkInfo;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumPIDMap_FWD_DEFINED__
 #define __IEnumPIDMap_FWD_DEFINED__
 typedef interface IEnumPIDMap IEnumPIDMap;
+#ifdef __cplusplus
+interface IEnumPIDMap;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMPEG2PIDMap_FWD_DEFINED__
 #define __IMPEG2PIDMap_FWD_DEFINED__
 typedef interface IMPEG2PIDMap IMPEG2PIDMap;
+#ifdef __cplusplus
+interface IMPEG2PIDMap;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IFrequencyMap_FWD_DEFINED__
 #define __IFrequencyMap_FWD_DEFINED__
 typedef interface IFrequencyMap IFrequencyMap;
+#ifdef __cplusplus
+interface IFrequencyMap;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_EasMessage_FWD_DEFINED__
 #define __IBDA_EasMessage_FWD_DEFINED__
 typedef interface IBDA_EasMessage IBDA_EasMessage;
+#ifdef __cplusplus
+interface IBDA_EasMessage;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_TransportStreamInfo_FWD_DEFINED__
 #define __IBDA_TransportStreamInfo_FWD_DEFINED__
 typedef interface IBDA_TransportStreamInfo IBDA_TransportStreamInfo;
+#ifdef __cplusplus
+interface IBDA_TransportStreamInfo;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_ConditionalAccess_FWD_DEFINED__
 #define __IBDA_ConditionalAccess_FWD_DEFINED__
 typedef interface IBDA_ConditionalAccess IBDA_ConditionalAccess;
+#ifdef __cplusplus
+interface IBDA_ConditionalAccess;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DiagnosticProperties_FWD_DEFINED__
 #define __IBDA_DiagnosticProperties_FWD_DEFINED__
 typedef interface IBDA_DiagnosticProperties IBDA_DiagnosticProperties;
+#ifdef __cplusplus
+interface IBDA_DiagnosticProperties;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DRM_FWD_DEFINED__
 #define __IBDA_DRM_FWD_DEFINED__
 typedef interface IBDA_DRM IBDA_DRM;
+#ifdef __cplusplus
+interface IBDA_DRM;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_NameValueService_FWD_DEFINED__
 #define __IBDA_NameValueService_FWD_DEFINED__
 typedef interface IBDA_NameValueService IBDA_NameValueService;
+#ifdef __cplusplus
+interface IBDA_NameValueService;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_ConditionalAccessEx_FWD_DEFINED__
 #define __IBDA_ConditionalAccessEx_FWD_DEFINED__
 typedef interface IBDA_ConditionalAccessEx IBDA_ConditionalAccessEx;
+#ifdef __cplusplus
+interface IBDA_ConditionalAccessEx;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_ISDBConditionalAccess_FWD_DEFINED__
 #define __IBDA_ISDBConditionalAccess_FWD_DEFINED__
 typedef interface IBDA_ISDBConditionalAccess IBDA_ISDBConditionalAccess;
+#ifdef __cplusplus
+interface IBDA_ISDBConditionalAccess;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_EventingService_FWD_DEFINED__
 #define __IBDA_EventingService_FWD_DEFINED__
 typedef interface IBDA_EventingService IBDA_EventingService;
+#ifdef __cplusplus
+interface IBDA_EventingService;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_AUX_FWD_DEFINED__
 #define __IBDA_AUX_FWD_DEFINED__
 typedef interface IBDA_AUX IBDA_AUX;
+#ifdef __cplusplus
+interface IBDA_AUX;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_Encoder_FWD_DEFINED__
 #define __IBDA_Encoder_FWD_DEFINED__
 typedef interface IBDA_Encoder IBDA_Encoder;
+#ifdef __cplusplus
+interface IBDA_Encoder;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_FDC_FWD_DEFINED__
 #define __IBDA_FDC_FWD_DEFINED__
 typedef interface IBDA_FDC IBDA_FDC;
+#ifdef __cplusplus
+interface IBDA_FDC;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_GuideDataDeliveryService_FWD_DEFINED__
 #define __IBDA_GuideDataDeliveryService_FWD_DEFINED__
 typedef interface IBDA_GuideDataDeliveryService IBDA_GuideDataDeliveryService;
+#ifdef __cplusplus
+interface IBDA_GuideDataDeliveryService;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DRMService_FWD_DEFINED__
 #define __IBDA_DRMService_FWD_DEFINED__
 typedef interface IBDA_DRMService IBDA_DRMService;
+#ifdef __cplusplus
+interface IBDA_DRMService;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_WMDRMSession_FWD_DEFINED__
 #define __IBDA_WMDRMSession_FWD_DEFINED__
 typedef interface IBDA_WMDRMSession IBDA_WMDRMSession;
+#ifdef __cplusplus
+interface IBDA_WMDRMSession;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_WMDRMTuner_FWD_DEFINED__
 #define __IBDA_WMDRMTuner_FWD_DEFINED__
 typedef interface IBDA_WMDRMTuner IBDA_WMDRMTuner;
+#ifdef __cplusplus
+interface IBDA_WMDRMTuner;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DRIDRMService_FWD_DEFINED__
 #define __IBDA_DRIDRMService_FWD_DEFINED__
 typedef interface IBDA_DRIDRMService IBDA_DRIDRMService;
+#ifdef __cplusplus
+interface IBDA_DRIDRMService;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_DRIWMDRMSession_FWD_DEFINED__
 #define __IBDA_DRIWMDRMSession_FWD_DEFINED__
 typedef interface IBDA_DRIWMDRMSession IBDA_DRIWMDRMSession;
+#ifdef __cplusplus
+interface IBDA_DRIWMDRMSession;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_MUX_FWD_DEFINED__
 #define __IBDA_MUX_FWD_DEFINED__
 typedef interface IBDA_MUX IBDA_MUX;
+#ifdef __cplusplus
+interface IBDA_MUX;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_TransportStreamSelector_FWD_DEFINED__
 #define __IBDA_TransportStreamSelector_FWD_DEFINED__
 typedef interface IBDA_TransportStreamSelector IBDA_TransportStreamSelector;
+#ifdef __cplusplus
+interface IBDA_TransportStreamSelector;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDA_UserActivityService_FWD_DEFINED__
 #define __IBDA_UserActivityService_FWD_DEFINED__
 typedef interface IBDA_UserActivityService IBDA_UserActivityService;
+#ifdef __cplusplus
+interface IBDA_UserActivityService;
+#endif /* __cplusplus */
 #endif
 
 /* Headers for imported files */
@@ -324,7 +463,7 @@
 #define PBDA_Encoder_BitrateMode_Constant 1
 #define PBDA_Encoder_BitrateMode_Variable 2
 #define PBDA_Encoder_BitrateMode_Average 3
-typedef enum __WIDL_bdaiface_generated_name_0000000F {
+typedef enum __WIDL_bdaiface_generated_name_00000017 {
     KSPROPERTY_IPSINK_MULTICASTLIST = 0,
     KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION = 1,
     KSPROPERTY_IPSINK_ADAPTER_ADDRESS = 2
@@ -372,48 +511,49 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_NetworkProvider* This,
+        IBDA_NetworkProvider *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_NetworkProvider* This);
+        IBDA_NetworkProvider *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_NetworkProvider* This);
+        IBDA_NetworkProvider *This);
 
     /*** IBDA_NetworkProvider methods ***/
     HRESULT (STDMETHODCALLTYPE *PutSignalSource)(
-        IBDA_NetworkProvider* This,
+        IBDA_NetworkProvider *This,
         ULONG ulSignalSource);
 
     HRESULT (STDMETHODCALLTYPE *GetSignalSource)(
-        IBDA_NetworkProvider* This,
+        IBDA_NetworkProvider *This,
         ULONG *pulSignalSource);
 
     HRESULT (STDMETHODCALLTYPE *GetNetworkType)(
-        IBDA_NetworkProvider* This,
+        IBDA_NetworkProvider *This,
         GUID *pguidNetworkType);
 
     HRESULT (STDMETHODCALLTYPE *PutTuningSpace)(
-        IBDA_NetworkProvider* This,
+        IBDA_NetworkProvider *This,
         REFGUID guidTuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *GetTuningSpace)(
-        IBDA_NetworkProvider* This,
+        IBDA_NetworkProvider *This,
         GUID *pguidTuingSpace);
 
     HRESULT (STDMETHODCALLTYPE *RegisterDeviceFilter)(
-        IBDA_NetworkProvider* This,
+        IBDA_NetworkProvider *This,
         IUnknown *pUnkFilterControl,
         ULONG *ppvRegisitrationContext);
 
     HRESULT (STDMETHODCALLTYPE *UnRegisterDeviceFilter)(
-        IBDA_NetworkProvider* This,
+        IBDA_NetworkProvider *This,
         ULONG pvRegistrationContext);
 
     END_INTERFACE
 } IBDA_NetworkProviderVtbl;
+
 interface IBDA_NetworkProvider {
     CONST_VTBL IBDA_NetworkProviderVtbl* lpVtbl;
 };
@@ -511,41 +651,42 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_EthernetFilter* This,
+        IBDA_EthernetFilter *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_EthernetFilter* This);
+        IBDA_EthernetFilter *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_EthernetFilter* This);
+        IBDA_EthernetFilter *This);
 
     /*** IBDA_EthernetFilter methods ***/
     HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
-        IBDA_EthernetFilter* This,
+        IBDA_EthernetFilter *This,
         ULONG *pulcbAddresses);
 
     HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
-        IBDA_EthernetFilter* This,
+        IBDA_EthernetFilter *This,
         ULONG ulcbAddresses,
         BYTE pAddressList[]);
 
     HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
-        IBDA_EthernetFilter* This,
+        IBDA_EthernetFilter *This,
         ULONG *pulcbAddresses,
         BYTE pAddressList[]);
 
     HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
-        IBDA_EthernetFilter* This,
+        IBDA_EthernetFilter *This,
         ULONG ulModeMask);
 
     HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
-        IBDA_EthernetFilter* This,
+        IBDA_EthernetFilter *This,
         ULONG *pulModeMask);
 
     END_INTERFACE
 } IBDA_EthernetFilterVtbl;
+
 interface IBDA_EthernetFilter {
     CONST_VTBL IBDA_EthernetFilterVtbl* lpVtbl;
 };
@@ -635,41 +776,42 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_IPV4Filter* This,
+        IBDA_IPV4Filter *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_IPV4Filter* This);
+        IBDA_IPV4Filter *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_IPV4Filter* This);
+        IBDA_IPV4Filter *This);
 
     /*** IBDA_IPV4Filter methods ***/
     HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
-        IBDA_IPV4Filter* This,
+        IBDA_IPV4Filter *This,
         ULONG *pulcbAddresses);
 
     HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
-        IBDA_IPV4Filter* This,
+        IBDA_IPV4Filter *This,
         ULONG ulcbAddresses,
         BYTE pAddressList[]);
 
     HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
-        IBDA_IPV4Filter* This,
+        IBDA_IPV4Filter *This,
         ULONG *pulcbAddresses,
         BYTE pAddressList[]);
 
     HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
-        IBDA_IPV4Filter* This,
+        IBDA_IPV4Filter *This,
         ULONG ulModeMask);
 
     HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
-        IBDA_IPV4Filter* This,
+        IBDA_IPV4Filter *This,
         ULONG *pulModeMask);
 
     END_INTERFACE
 } IBDA_IPV4FilterVtbl;
+
 interface IBDA_IPV4Filter {
     CONST_VTBL IBDA_IPV4FilterVtbl* lpVtbl;
 };
@@ -759,41 +901,42 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_IPV6Filter* This,
+        IBDA_IPV6Filter *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_IPV6Filter* This);
+        IBDA_IPV6Filter *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_IPV6Filter* This);
+        IBDA_IPV6Filter *This);
 
     /*** IBDA_IPV6Filter methods ***/
     HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
-        IBDA_IPV6Filter* This,
+        IBDA_IPV6Filter *This,
         ULONG *pulcbAddresses);
 
     HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
-        IBDA_IPV6Filter* This,
+        IBDA_IPV6Filter *This,
         ULONG ulcbAddresses,
         BYTE pAddressList[]);
 
     HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
-        IBDA_IPV6Filter* This,
+        IBDA_IPV6Filter *This,
         ULONG *pulcbAddresses,
         BYTE pAddressList[]);
 
     HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
-        IBDA_IPV6Filter* This,
+        IBDA_IPV6Filter *This,
         ULONG ulModeMask);
 
     HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
-        IBDA_IPV6Filter* This,
+        IBDA_IPV6Filter *This,
         ULONG *pulModeMask);
 
     END_INTERFACE
 } IBDA_IPV6FilterVtbl;
+
 interface IBDA_IPV6Filter {
     CONST_VTBL IBDA_IPV6FilterVtbl* lpVtbl;
 };
@@ -878,32 +1021,33 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DeviceControl* This,
+        IBDA_DeviceControl *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DeviceControl* This);
+        IBDA_DeviceControl *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DeviceControl* This);
+        IBDA_DeviceControl *This);
 
     /*** IBDA_DeviceControl methods ***/
     HRESULT (STDMETHODCALLTYPE *StartChanges)(
-        IBDA_DeviceControl* This);
+        IBDA_DeviceControl *This);
 
     HRESULT (STDMETHODCALLTYPE *CheckChanges)(
-        IBDA_DeviceControl* This);
+        IBDA_DeviceControl *This);
 
     HRESULT (STDMETHODCALLTYPE *CommitChanges)(
-        IBDA_DeviceControl* This);
+        IBDA_DeviceControl *This);
 
     HRESULT (STDMETHODCALLTYPE *GetChangeState)(
-        IBDA_DeviceControl* This,
+        IBDA_DeviceControl *This,
         ULONG *pState);
 
     END_INTERFACE
 } IBDA_DeviceControlVtbl;
+
 interface IBDA_DeviceControl {
     CONST_VTBL IBDA_DeviceControlVtbl* lpVtbl;
 };
@@ -981,31 +1125,32 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_PinControl* This,
+        IBDA_PinControl *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_PinControl* This);
+        IBDA_PinControl *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_PinControl* This);
+        IBDA_PinControl *This);
 
     /*** IBDA_PinControl methods ***/
     HRESULT (STDMETHODCALLTYPE *GetPinID)(
-        IBDA_PinControl* This,
+        IBDA_PinControl *This,
         ULONG *pulPinID);
 
     HRESULT (STDMETHODCALLTYPE *GetPinType)(
-        IBDA_PinControl* This,
+        IBDA_PinControl *This,
         ULONG *pulPinType);
 
     HRESULT (STDMETHODCALLTYPE *RegistrationContext)(
-        IBDA_PinControl* This,
+        IBDA_PinControl *This,
         ULONG *pulRegistrationCtx);
 
     END_INTERFACE
 } IBDA_PinControlVtbl;
+
 interface IBDA_PinControl {
     CONST_VTBL IBDA_PinControlVtbl* lpVtbl;
 };
@@ -1088,43 +1233,44 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_SignalProperties* This,
+        IBDA_SignalProperties *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_SignalProperties* This);
+        IBDA_SignalProperties *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_SignalProperties* This);
+        IBDA_SignalProperties *This);
 
     /*** IBDA_SignalProperties methods ***/
     HRESULT (STDMETHODCALLTYPE *PutNetworkType)(
-        IBDA_SignalProperties* This,
+        IBDA_SignalProperties *This,
         REFGUID guidNetworkType);
 
     HRESULT (STDMETHODCALLTYPE *GetNetworkType)(
-        IBDA_SignalProperties* This,
+        IBDA_SignalProperties *This,
         GUID *pguidNetworkType);
 
     HRESULT (STDMETHODCALLTYPE *PutSignalSource)(
-        IBDA_SignalProperties* This,
+        IBDA_SignalProperties *This,
         ULONG ulSignalSource);
 
     HRESULT (STDMETHODCALLTYPE *GetSignalSource)(
-        IBDA_SignalProperties* This,
+        IBDA_SignalProperties *This,
         ULONG *pulSignalSource);
 
     HRESULT (STDMETHODCALLTYPE *PutTuningSpace)(
-        IBDA_SignalProperties* This,
+        IBDA_SignalProperties *This,
         REFGUID guidTuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *GetTuningSpace)(
-        IBDA_SignalProperties* This,
+        IBDA_SignalProperties *This,
         GUID *pguidTuingSpace);
 
     END_INTERFACE
 } IBDA_SignalPropertiesVtbl;
+
 interface IBDA_SignalProperties {
     CONST_VTBL IBDA_SignalPropertiesVtbl* lpVtbl;
 };
@@ -1231,59 +1377,60 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_SignalStatistics* This);
+        IBDA_SignalStatistics *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_SignalStatistics* This);
+        IBDA_SignalStatistics *This);
 
     /*** IBDA_SignalStatistics methods ***/
     HRESULT (STDMETHODCALLTYPE *put_SignalStrength)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         LONG lDbStrength);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         LONG *plDbStrength);
 
     HRESULT (STDMETHODCALLTYPE *put_SignalQuality)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         LONG lPercentQuality);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalQuality)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         LONG *plPercentQuality);
 
     HRESULT (STDMETHODCALLTYPE *put_SignalPresent)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         BOOLEAN fPresent);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalPresent)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         BOOLEAN *pfPresent);
 
     HRESULT (STDMETHODCALLTYPE *put_SignalLocked)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         BOOLEAN fLocked);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalLocked)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         BOOLEAN *pfLocked);
 
     HRESULT (STDMETHODCALLTYPE *put_SampleTime)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         LONG lmsSampleTime);
 
     HRESULT (STDMETHODCALLTYPE *get_SampleTime)(
-        IBDA_SignalStatistics* This,
+        IBDA_SignalStatistics *This,
         LONG *plmsSampleTime);
 
     END_INTERFACE
 } IBDA_SignalStatisticsVtbl;
+
 interface IBDA_SignalStatistics {
     CONST_VTBL IBDA_SignalStatisticsVtbl* lpVtbl;
 };
@@ -1427,74 +1574,74 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_Topology* This);
+        IBDA_Topology *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_Topology* This);
+        IBDA_Topology *This);
 
     /*** IBDA_Topology methods ***/
     HRESULT (STDMETHODCALLTYPE *GetNodeTypes)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG *pulcNodeTypes,
         ULONG ulcNodeTypesMax,
         ULONG rgulNodeTypes[]);
 
     HRESULT (STDMETHODCALLTYPE *GetNodeDescriptors)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG *ulcNodeDescriptors,
         ULONG ulcNodeDescriptorsMax,
         BDANODE_DESCRIPTOR rgNodeDescriptors[]);
 
     HRESULT (STDMETHODCALLTYPE *GetNodeInterfaces)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG ulNodeType,
         ULONG *pulcInterfaces,
         ULONG ulcInterfacesMax,
         GUID rgguidInterfaces[]);
 
     HRESULT (STDMETHODCALLTYPE *GetPinTypes)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG *pulcPinTypes,
         ULONG ulcPinTypesMax,
         ULONG rgulPinTypes[]);
 
     HRESULT (STDMETHODCALLTYPE *GetTemplateConnections)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG *pulcConnections,
         ULONG ulcConnectionsMax,
         BDA_TEMPLATE_CONNECTION rgConnections[]);
 
     HRESULT (STDMETHODCALLTYPE *CreatePin)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG ulPinType,
         ULONG *pulPinId);
 
     HRESULT (STDMETHODCALLTYPE *DeletePin)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG ulPinId);
 
     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG ulPinId,
         AM_MEDIA_TYPE *pMediaType);
 
     HRESULT (STDMETHODCALLTYPE *SetMedium)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG ulPinId,
         REGPINMEDIUM *pMedium);
 
     HRESULT (STDMETHODCALLTYPE *CreateTopology)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG ulInputPinId,
         ULONG ulOutputPinId);
 
     HRESULT (STDMETHODCALLTYPE *GetControlNode)(
-        IBDA_Topology* This,
+        IBDA_Topology *This,
         ULONG ulInputPinId,
         ULONG ulOutputPinId,
         ULONG ulNodeType,
@@ -1502,6 +1649,7 @@
 
     END_INTERFACE
 } IBDA_TopologyVtbl;
+
 interface IBDA_Topology {
     CONST_VTBL IBDA_TopologyVtbl* lpVtbl;
 };
@@ -1604,25 +1752,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_VoidTransform* This,
+        IBDA_VoidTransform *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_VoidTransform* This);
+        IBDA_VoidTransform *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_VoidTransform* This);
+        IBDA_VoidTransform *This);
 
     /*** IBDA_VoidTransform methods ***/
     HRESULT (STDMETHODCALLTYPE *Start)(
-        IBDA_VoidTransform* This);
+        IBDA_VoidTransform *This);
 
     HRESULT (STDMETHODCALLTYPE *Stop)(
-        IBDA_VoidTransform* This);
+        IBDA_VoidTransform *This);
 
     END_INTERFACE
 } IBDA_VoidTransformVtbl;
+
 interface IBDA_VoidTransform {
     CONST_VTBL IBDA_VoidTransformVtbl* lpVtbl;
 };
@@ -1689,25 +1838,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_NullTransform* This,
+        IBDA_NullTransform *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_NullTransform* This);
+        IBDA_NullTransform *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_NullTransform* This);
+        IBDA_NullTransform *This);
 
     /*** IBDA_NullTransform methods ***/
     HRESULT (STDMETHODCALLTYPE *Start)(
-        IBDA_NullTransform* This);
+        IBDA_NullTransform *This);
 
     HRESULT (STDMETHODCALLTYPE *Stop)(
-        IBDA_NullTransform* This);
+        IBDA_NullTransform *This);
 
     END_INTERFACE
 } IBDA_NullTransformVtbl;
+
 interface IBDA_NullTransform {
     CONST_VTBL IBDA_NullTransformVtbl* lpVtbl;
 };
@@ -1804,67 +1954,68 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_FrequencyFilter* This);
+        IBDA_FrequencyFilter *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_FrequencyFilter* This);
+        IBDA_FrequencyFilter *This);
 
     /*** IBDA_FrequencyFilter methods ***/
     HRESULT (STDMETHODCALLTYPE *put_Autotune)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG ulTransponder);
 
     HRESULT (STDMETHODCALLTYPE *get_Autotune)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG *pulTransponder);
 
     HRESULT (STDMETHODCALLTYPE *put_Frequency)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG ulFrequency);
 
     HRESULT (STDMETHODCALLTYPE *get_Frequency)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG *pulFrequency);
 
     HRESULT (STDMETHODCALLTYPE *put_Polarity)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         Polarisation Polarity);
 
     HRESULT (STDMETHODCALLTYPE *get_Polarity)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         Polarisation *pPolarity);
 
     HRESULT (STDMETHODCALLTYPE *put_Range)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG ulRange);
 
     HRESULT (STDMETHODCALLTYPE *get_Range)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG *pulRange);
 
     HRESULT (STDMETHODCALLTYPE *put_Bandwidth)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG ulBandwidth);
 
     HRESULT (STDMETHODCALLTYPE *get_Bandwidth)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG *pulBandwidth);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMultiplier)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG ulMultiplier);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMultiplier)(
-        IBDA_FrequencyFilter* This,
+        IBDA_FrequencyFilter *This,
         ULONG *pulMultiplier);
 
     END_INTERFACE
 } IBDA_FrequencyFilterVtbl;
+
 interface IBDA_FrequencyFilter {
     CONST_VTBL IBDA_FrequencyFilterVtbl* lpVtbl;
 };
@@ -1983,43 +2134,44 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_LNBInfo* This,
+        IBDA_LNBInfo *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_LNBInfo* This);
+        IBDA_LNBInfo *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_LNBInfo* This);
+        IBDA_LNBInfo *This);
 
     /*** IBDA_LNBInfo methods ***/
     HRESULT (STDMETHODCALLTYPE *put_LocalOscilatorFrequencyLowBand)(
-        IBDA_LNBInfo* This,
+        IBDA_LNBInfo *This,
         ULONG ulLOFLow);
 
     HRESULT (STDMETHODCALLTYPE *get_LocalOscilatorFrequencyLowBand)(
-        IBDA_LNBInfo* This,
+        IBDA_LNBInfo *This,
         ULONG *pulLOFLow);
 
     HRESULT (STDMETHODCALLTYPE *put_LocalOscilatorFrequencyHighBand)(
-        IBDA_LNBInfo* This,
+        IBDA_LNBInfo *This,
         ULONG ulLOFHigh);
 
     HRESULT (STDMETHODCALLTYPE *get_LocalOscilatorFrequencyHighBand)(
-        IBDA_LNBInfo* This,
+        IBDA_LNBInfo *This,
         ULONG *pulLOFHigh);
 
     HRESULT (STDMETHODCALLTYPE *put_HighLowSwitchFrequency)(
-        IBDA_LNBInfo* This,
+        IBDA_LNBInfo *This,
         ULONG ulSwitchFrequency);
 
     HRESULT (STDMETHODCALLTYPE *get_HighLowSwitchFrequency)(
-        IBDA_LNBInfo* This,
+        IBDA_LNBInfo *This,
         ULONG *pulSwitchFrequency);
 
     END_INTERFACE
 } IBDA_LNBInfoVtbl;
+
 interface IBDA_LNBInfo {
     CONST_VTBL IBDA_LNBInfoVtbl* lpVtbl;
 };
@@ -2118,47 +2270,48 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DiseqCommand* This,
+        IBDA_DiseqCommand *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DiseqCommand* This);
+        IBDA_DiseqCommand *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DiseqCommand* This);
+        IBDA_DiseqCommand *This);
 
     /*** IBDA_DiseqCommand methods ***/
     HRESULT (STDMETHODCALLTYPE *put_EnableDiseqCommands)(
-        IBDA_DiseqCommand* This,
+        IBDA_DiseqCommand *This,
         BOOLEAN bEnable);
 
     HRESULT (STDMETHODCALLTYPE *put_DiseqLNBSource)(
-        IBDA_DiseqCommand* This,
+        IBDA_DiseqCommand *This,
         ULONG ulLNBSource);
 
     HRESULT (STDMETHODCALLTYPE *put_DiseqUseToneBurst)(
-        IBDA_DiseqCommand* This,
+        IBDA_DiseqCommand *This,
         BOOLEAN bUseToneBurst);
 
     HRESULT (STDMETHODCALLTYPE *put_DiseqRepeats)(
-        IBDA_DiseqCommand* This,
+        IBDA_DiseqCommand *This,
         ULONG ulRepeats);
 
     HRESULT (STDMETHODCALLTYPE *put_DiseqSendCommand)(
-        IBDA_DiseqCommand* This,
+        IBDA_DiseqCommand *This,
         ULONG ulRequestId,
         ULONG ulcbCommandLen,
         BYTE *pbCommand);
 
     HRESULT (STDMETHODCALLTYPE *get_DiseqResponse)(
-        IBDA_DiseqCommand* This,
+        IBDA_DiseqCommand *This,
         ULONG ulRequestId,
         ULONG *pulcbResponseLen,
         BYTE pbResponse[]);
 
     END_INTERFACE
 } IBDA_DiseqCommandVtbl;
+
 interface IBDA_DiseqCommand {
     CONST_VTBL IBDA_DiseqCommandVtbl* lpVtbl;
 };
@@ -2238,22 +2391,23 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_AutoDemodulate* This,
+        IBDA_AutoDemodulate *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_AutoDemodulate* This);
+        IBDA_AutoDemodulate *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_AutoDemodulate* This);
+        IBDA_AutoDemodulate *This);
 
     /*** IBDA_AutoDemodulate methods ***/
     HRESULT (STDMETHODCALLTYPE *put_AutoDemodulate)(
-        IBDA_AutoDemodulate* This);
+        IBDA_AutoDemodulate *This);
 
     END_INTERFACE
 } IBDA_AutoDemodulateVtbl;
+
 interface IBDA_AutoDemodulate {
     CONST_VTBL IBDA_AutoDemodulateVtbl* lpVtbl;
 };
@@ -2323,39 +2477,40 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_AutoDemodulateEx* This,
+        IBDA_AutoDemodulateEx *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_AutoDemodulateEx* This);
+        IBDA_AutoDemodulateEx *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_AutoDemodulateEx* This);
+        IBDA_AutoDemodulateEx *This);
 
     /*** IBDA_AutoDemodulate methods ***/
     HRESULT (STDMETHODCALLTYPE *put_AutoDemodulate)(
-        IBDA_AutoDemodulateEx* This);
+        IBDA_AutoDemodulateEx *This);
 
     /*** IBDA_AutoDemodulateEx methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SupportedDeviceNodeTypes)(
-        IBDA_AutoDemodulateEx* This,
+        IBDA_AutoDemodulateEx *This,
         ULONG ulcDeviceNodeTypesMax,
         ULONG *pulcDeviceNodeTypes,
         GUID *pguidDeviceNodeTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_SupportedVideoFormats)(
-        IBDA_AutoDemodulateEx* This,
+        IBDA_AutoDemodulateEx *This,
         ULONG *pulAMTunerModeType,
         ULONG *pulAnalogVideoStandard);
 
     HRESULT (STDMETHODCALLTYPE *get_AuxInputCount)(
-        IBDA_AutoDemodulateEx* This,
+        IBDA_AutoDemodulateEx *This,
         ULONG *pulCompositeCount,
         ULONG *pulSvideoCount);
 
     END_INTERFACE
 } IBDA_AutoDemodulateExVtbl;
+
 interface IBDA_AutoDemodulateEx {
     CONST_VTBL IBDA_AutoDemodulateExVtbl* lpVtbl;
 };
@@ -2468,75 +2623,76 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DigitalDemodulator* This);
+        IBDA_DigitalDemodulator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DigitalDemodulator* This);
+        IBDA_DigitalDemodulator *This);
 
     /*** IBDA_DigitalDemodulator methods ***/
     HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         ModulationType *pModulationType);
 
     HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         ModulationType *pModulationType);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         ULONG *pSymbolRate);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         ULONG *pSymbolRate);
 
     HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         SpectralInversion *pSpectralInversion);
 
     HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
-        IBDA_DigitalDemodulator* This,
+        IBDA_DigitalDemodulator *This,
         SpectralInversion *pSpectralInversion);
 
     END_INTERFACE
 } IBDA_DigitalDemodulatorVtbl;
+
 interface IBDA_DigitalDemodulator {
     CONST_VTBL IBDA_DigitalDemodulatorVtbl* lpVtbl;
 };
@@ -2669,108 +2825,109 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DigitalDemodulator2* This);
+        IBDA_DigitalDemodulator2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DigitalDemodulator2* This);
+        IBDA_DigitalDemodulator2 *This);
 
     /*** IBDA_DigitalDemodulator methods ***/
     HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         ModulationType *pModulationType);
 
     HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         ModulationType *pModulationType);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         ULONG *pSymbolRate);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         ULONG *pSymbolRate);
 
     HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         SpectralInversion *pSpectralInversion);
 
     HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         SpectralInversion *pSpectralInversion);
 
     /*** IBDA_DigitalDemodulator2 methods ***/
     HRESULT (STDMETHODCALLTYPE *put_GuardInterval)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         GuardInterval *pGuardInterval);
 
     HRESULT (STDMETHODCALLTYPE *get_GuardInterval)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         GuardInterval *pGuardInterval);
 
     HRESULT (STDMETHODCALLTYPE *put_TransmissionMode)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         TransmissionMode *pTransmissionMode);
 
     HRESULT (STDMETHODCALLTYPE *get_TransmissionMode)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         TransmissionMode *pTransmissionMode);
 
     HRESULT (STDMETHODCALLTYPE *put_RollOff)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         RollOff *pRollOff);
 
     HRESULT (STDMETHODCALLTYPE *get_RollOff)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         RollOff *pRollOff);
 
     HRESULT (STDMETHODCALLTYPE *put_Pilot)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         Pilot *pPilot);
 
     HRESULT (STDMETHODCALLTYPE *get_Pilot)(
-        IBDA_DigitalDemodulator2* This,
+        IBDA_DigitalDemodulator2 *This,
         Pilot *pPilot);
 
     END_INTERFACE
 } IBDA_DigitalDemodulator2Vtbl;
+
 interface IBDA_DigitalDemodulator2 {
     CONST_VTBL IBDA_DigitalDemodulator2Vtbl* lpVtbl;
 };
@@ -2925,125 +3082,126 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DigitalDemodulator3* This);
+        IBDA_DigitalDemodulator3 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DigitalDemodulator3* This);
+        IBDA_DigitalDemodulator3 *This);
 
     /*** IBDA_DigitalDemodulator methods ***/
     HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         ModulationType *pModulationType);
 
     HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         ModulationType *pModulationType);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         FECMethod *pFECMethod);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         BinaryConvolutionCodeRate *pFECRate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         ULONG *pSymbolRate);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         ULONG *pSymbolRate);
 
     HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         SpectralInversion *pSpectralInversion);
 
     HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         SpectralInversion *pSpectralInversion);
 
     /*** IBDA_DigitalDemodulator2 methods ***/
     HRESULT (STDMETHODCALLTYPE *put_GuardInterval)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         GuardInterval *pGuardInterval);
 
     HRESULT (STDMETHODCALLTYPE *get_GuardInterval)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         GuardInterval *pGuardInterval);
 
     HRESULT (STDMETHODCALLTYPE *put_TransmissionMode)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         TransmissionMode *pTransmissionMode);
 
     HRESULT (STDMETHODCALLTYPE *get_TransmissionMode)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         TransmissionMode *pTransmissionMode);
 
     HRESULT (STDMETHODCALLTYPE *put_RollOff)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         RollOff *pRollOff);
 
     HRESULT (STDMETHODCALLTYPE *get_RollOff)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         RollOff *pRollOff);
 
     HRESULT (STDMETHODCALLTYPE *put_Pilot)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         Pilot *pPilot);
 
     HRESULT (STDMETHODCALLTYPE *get_Pilot)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         Pilot *pPilot);
 
     /*** IBDA_DigitalDemodulator3 methods ***/
     HRESULT (STDMETHODCALLTYPE *put_SignalTimeouts)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalTimeouts)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);
 
     HRESULT (STDMETHODCALLTYPE *put_PLPNumber)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         ULONG *pPLPNumber);
 
     HRESULT (STDMETHODCALLTYPE *get_PLPNumber)(
-        IBDA_DigitalDemodulator3* This,
+        IBDA_DigitalDemodulator3 *This,
         ULONG *pPLPNumber);
 
     END_INTERFACE
 } IBDA_DigitalDemodulator3Vtbl;
+
 interface IBDA_DigitalDemodulator3 {
     CONST_VTBL IBDA_DigitalDemodulator3Vtbl* lpVtbl;
 };
@@ -3210,27 +3368,28 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ICCSubStreamFiltering* This,
+        ICCSubStreamFiltering *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ICCSubStreamFiltering* This);
+        ICCSubStreamFiltering *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ICCSubStreamFiltering* This);
+        ICCSubStreamFiltering *This);
 
     /*** ICCSubStreamFiltering methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SubstreamTypes)(
-        ICCSubStreamFiltering* This,
+        ICCSubStreamFiltering *This,
         LONG *pTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_SubstreamTypes)(
-        ICCSubStreamFiltering* This,
+        ICCSubStreamFiltering *This,
         LONG Types);
 
     END_INTERFACE
 } ICCSubStreamFilteringVtbl;
+
 interface ICCSubStreamFiltering {
     CONST_VTBL ICCSubStreamFilteringVtbl* lpVtbl;
 };
@@ -3299,29 +3458,30 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_IPSinkControl* This,
+        IBDA_IPSinkControl *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_IPSinkControl* This);
+        IBDA_IPSinkControl *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_IPSinkControl* This);
+        IBDA_IPSinkControl *This);
 
     /*** IBDA_IPSinkControl methods ***/
     HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
-        IBDA_IPSinkControl* This,
+        IBDA_IPSinkControl *This,
         ULONG *pulcbSize,
         BYTE **pbBuffer);
 
     HRESULT (STDMETHODCALLTYPE *GetAdapterIPAddress)(
-        IBDA_IPSinkControl* This,
+        IBDA_IPSinkControl *This,
         ULONG *pulcbSize,
         BYTE **pbBuffer);
 
     END_INTERFACE
 } IBDA_IPSinkControlVtbl;
+
 interface IBDA_IPSinkControl {
     CONST_VTBL IBDA_IPSinkControlVtbl* lpVtbl;
 };
@@ -3392,32 +3552,33 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_IPSinkInfo* This,
+        IBDA_IPSinkInfo *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_IPSinkInfo* This);
+        IBDA_IPSinkInfo *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_IPSinkInfo* This);
+        IBDA_IPSinkInfo *This);
 
     /*** IBDA_IPSinkInfo methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MulticastList)(
-        IBDA_IPSinkInfo* This,
+        IBDA_IPSinkInfo *This,
         ULONG *pulcbAddresses,
         BYTE **ppbAddressList);
 
     HRESULT (STDMETHODCALLTYPE *get_AdapterIPAddress)(
-        IBDA_IPSinkInfo* This,
+        IBDA_IPSinkInfo *This,
         BSTR *pbstrBuffer);
 
     HRESULT (STDMETHODCALLTYPE *get_AdapterDescription)(
-        IBDA_IPSinkInfo* This,
+        IBDA_IPSinkInfo *This,
         BSTR *pbstrBuffer);
 
     END_INTERFACE
 } IBDA_IPSinkInfoVtbl;
+
 interface IBDA_IPSinkInfo {
     CONST_VTBL IBDA_IPSinkInfoVtbl* lpVtbl;
 };
@@ -3496,36 +3657,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumPIDMap* This,
+        IEnumPIDMap *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumPIDMap* This);
+        IEnumPIDMap *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumPIDMap* This);
+        IEnumPIDMap *This);
 
     /*** IEnumPIDMap methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumPIDMap* This,
+        IEnumPIDMap *This,
         ULONG cRequest,
         PID_MAP *pPIDMap,
         ULONG *pcReceived);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumPIDMap* This,
+        IEnumPIDMap *This,
         ULONG cRecords);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumPIDMap* This);
+        IEnumPIDMap *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumPIDMap* This,
+        IEnumPIDMap *This,
         IEnumPIDMap **ppIEnumPIDMap);
 
     END_INTERFACE
 } IEnumPIDMapVtbl;
+
 interface IEnumPIDMap {
     CONST_VTBL IEnumPIDMapVtbl* lpVtbl;
 };
@@ -3606,34 +3768,35 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMPEG2PIDMap* This,
+        IMPEG2PIDMap *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMPEG2PIDMap* This);
+        IMPEG2PIDMap *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMPEG2PIDMap* This);
+        IMPEG2PIDMap *This);
 
     /*** IMPEG2PIDMap methods ***/
     HRESULT (STDMETHODCALLTYPE *MapPID)(
-        IMPEG2PIDMap* This,
+        IMPEG2PIDMap *This,
         ULONG culPID,
         ULONG *pulPID,
         MEDIA_SAMPLE_CONTENT MediaSampleContent);
 
     HRESULT (STDMETHODCALLTYPE *UnmapPID)(
-        IMPEG2PIDMap* This,
+        IMPEG2PIDMap *This,
         ULONG culPID,
         ULONG *pulPID);
 
     HRESULT (STDMETHODCALLTYPE *EnumPIDMap)(
-        IMPEG2PIDMap* This,
+        IMPEG2PIDMap *This,
         IEnumPIDMap **pIEnumPIDMap);
 
     END_INTERFACE
 } IMPEG2PIDMapVtbl;
+
 interface IMPEG2PIDMap {
     CONST_VTBL IMPEG2PIDMapVtbl* lpVtbl;
 };
@@ -3721,48 +3884,49 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IFrequencyMap* This,
+        IFrequencyMap *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IFrequencyMap* This);
+        IFrequencyMap *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IFrequencyMap* This);
+        IFrequencyMap *This);
 
     /*** IFrequencyMap methods ***/
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IFrequencyMap* This,
+        IFrequencyMap *This,
         ULONG *ulCount,
         ULONG **ppulList);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IFrequencyMap* This,
+        IFrequencyMap *This,
         ULONG ulCount,
         ULONG pList[]);
 
     HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
-        IFrequencyMap* This,
+        IFrequencyMap *This,
         ULONG *pulCountryCode);
 
     HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
-        IFrequencyMap* This,
+        IFrequencyMap *This,
         ULONG ulCountryCode);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultFrequencyMapping)(
-        IFrequencyMap* This,
+        IFrequencyMap *This,
         ULONG ulCountryCode,
         ULONG *pulCount,
         ULONG **ppulList);
 
     HRESULT (STDMETHODCALLTYPE *get_CountryCodeList)(
-        IFrequencyMap* This,
+        IFrequencyMap *This,
         ULONG *pulCount,
         ULONG **ppulList);
 
     END_INTERFACE
 } IFrequencyMapVtbl;
+
 interface IFrequencyMap {
     CONST_VTBL IFrequencyMapVtbl* lpVtbl;
 };
@@ -3843,24 +4007,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_EasMessage* This,
+        IBDA_EasMessage *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_EasMessage* This);
+        IBDA_EasMessage *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_EasMessage* This);
+        IBDA_EasMessage *This);
 
     /*** IBDA_EasMessage methods ***/
     HRESULT (STDMETHODCALLTYPE *get_EasMessage)(
-        IBDA_EasMessage* This,
+        IBDA_EasMessage *This,
         ULONG ulEventID,
         IUnknown **ppEASObject);
 
     END_INTERFACE
 } IBDA_EasMessageVtbl;
+
 interface IBDA_EasMessage {
     CONST_VTBL IBDA_EasMessageVtbl* lpVtbl;
 };
@@ -3920,23 +4085,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_TransportStreamInfo* This,
+        IBDA_TransportStreamInfo *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_TransportStreamInfo* This);
+        IBDA_TransportStreamInfo *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_TransportStreamInfo* This);
+        IBDA_TransportStreamInfo *This);
 
     /*** IBDA_TransportStreamInfo methods ***/
     HRESULT (STDMETHODCALLTYPE *get_PatTableTickCount)(
-        IBDA_TransportStreamInfo* This,
+        IBDA_TransportStreamInfo *This,
         ULONG *pPatTickCount);
 
     END_INTERFACE
 } IBDA_TransportStreamInfoVtbl;
+
 interface IBDA_TransportStreamInfo {
     CONST_VTBL IBDA_TransportStreamInfoVtbl* lpVtbl;
 };
@@ -4037,26 +4203,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_ConditionalAccess* This);
+        IBDA_ConditionalAccess *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_ConditionalAccess* This);
+        IBDA_ConditionalAccess *This);
 
     /*** IBDA_ConditionalAccess methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SmartCardStatus)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         SmartCardStatusType *pCardStatus,
         SmartCardAssociationType *pCardAssociation,
         BSTR *pbstrCardError,
         VARIANT_BOOL *pfOOBLocked);
 
     HRESULT (STDMETHODCALLTYPE *get_SmartCardInfo)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         BSTR *pbstrCardName,
         BSTR *pbstrCardManufacturer,
         VARIANT_BOOL *pfDaylightSavings,
@@ -4066,44 +4232,45 @@
         EALocationCodeType *pEALocationCode);
 
     HRESULT (STDMETHODCALLTYPE *get_SmartCardApplications)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         ULONG *pulcApplications,
         ULONG ulcApplicationsMax,
         SmartCardApplication rgApplications[]);
 
     HRESULT (STDMETHODCALLTYPE *get_Entitlement)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         USHORT usVirtualChannel,
         EntitlementType *pEntitlement);
 
     HRESULT (STDMETHODCALLTYPE *TuneByChannel)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         USHORT usVirtualChannel);
 
     HRESULT (STDMETHODCALLTYPE *SetProgram)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         USHORT usProgramNumber);
 
     HRESULT (STDMETHODCALLTYPE *AddProgram)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         USHORT usProgramNumber);
 
     HRESULT (STDMETHODCALLTYPE *RemoveProgram)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         USHORT usProgramNumber);
 
     HRESULT (STDMETHODCALLTYPE *GetModuleUI)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         BYTE byDialogNumber,
         BSTR *pbstrURL);
 
     HRESULT (STDMETHODCALLTYPE *InformUIClosed)(
-        IBDA_ConditionalAccess* This,
+        IBDA_ConditionalAccess *This,
         BYTE byDialogNumber,
         UICloseReasonType CloseReason);
 
     END_INTERFACE
 } IBDA_ConditionalAccessVtbl;
+
 interface IBDA_ConditionalAccess {
     CONST_VTBL IBDA_ConditionalAccessVtbl* lpVtbl;
 };
@@ -4196,30 +4363,31 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DiagnosticProperties* This,
+        IBDA_DiagnosticProperties *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DiagnosticProperties* This);
+        IBDA_DiagnosticProperties *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DiagnosticProperties* This);
+        IBDA_DiagnosticProperties *This);
 
     /*** IPropertyBag methods ***/
     HRESULT (STDMETHODCALLTYPE *Read)(
-        IBDA_DiagnosticProperties* This,
+        IBDA_DiagnosticProperties *This,
         LPCOLESTR pszPropName,
         VARIANT *pVar,
         IErrorLog *pErrorLog);
 
     HRESULT (STDMETHODCALLTYPE *Write)(
-        IBDA_DiagnosticProperties* This,
+        IBDA_DiagnosticProperties *This,
         LPCOLESTR pszPropName,
         VARIANT *pVar);
 
     END_INTERFACE
 } IBDA_DiagnosticPropertiesVtbl;
+
 interface IBDA_DiagnosticProperties {
     CONST_VTBL IBDA_DiagnosticPropertiesVtbl* lpVtbl;
 };
@@ -4287,28 +4455,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DRM* This,
+        IBDA_DRM *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DRM* This);
+        IBDA_DRM *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DRM* This);
+        IBDA_DRM *This);
 
     /*** IBDA_DRM methods ***/
     HRESULT (STDMETHODCALLTYPE *GetDRMPairingStatus)(
-        IBDA_DRM* This,
+        IBDA_DRM *This,
         DWORD *pdwStatus,
         HRESULT *phError);
 
     HRESULT (STDMETHODCALLTYPE *PerformDRMPairing)(
-        IBDA_DRM* This,
+        IBDA_DRM *This,
         WINBOOL fSync);
 
     END_INTERFACE
 } IBDA_DRMVtbl;
+
 interface IBDA_DRM {
     CONST_VTBL IBDA_DRMVtbl* lpVtbl;
 };
@@ -4385,30 +4554,30 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_NameValueService* This,
+        IBDA_NameValueService *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_NameValueService* This);
+        IBDA_NameValueService *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_NameValueService* This);
+        IBDA_NameValueService *This);
 
     /*** IBDA_NameValueService methods ***/
     HRESULT (STDMETHODCALLTYPE *GetValueNameByIndex)(
-        IBDA_NameValueService* This,
+        IBDA_NameValueService *This,
         ULONG ulIndex,
         BSTR *pbstrName);
 
     HRESULT (STDMETHODCALLTYPE *GetValue)(
-        IBDA_NameValueService* This,
+        IBDA_NameValueService *This,
         BSTR bstrName,
         BSTR bstrLanguage,
         BSTR *pbstrValue);
 
     HRESULT (STDMETHODCALLTYPE *SetValue)(
-        IBDA_NameValueService* This,
+        IBDA_NameValueService *This,
         ULONG ulDialogRequest,
         BSTR bstrLanguage,
         BSTR bstrName,
@@ -4417,6 +4586,7 @@
 
     END_INTERFACE
 } IBDA_NameValueServiceVtbl;
+
 interface IBDA_NameValueService {
     CONST_VTBL IBDA_NameValueServiceVtbl* lpVtbl;
 };
@@ -4508,19 +4678,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_ConditionalAccessEx* This,
+        IBDA_ConditionalAccessEx *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_ConditionalAccessEx* This);
+        IBDA_ConditionalAccessEx *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_ConditionalAccessEx* This);
+        IBDA_ConditionalAccessEx *This);
 
     /*** IBDA_ConditionalAccessEx methods ***/
     HRESULT (STDMETHODCALLTYPE *CheckEntitlementToken)(
-        IBDA_ConditionalAccessEx* This,
+        IBDA_ConditionalAccessEx *This,
         ULONG ulDialogRequest,
         BSTR bstrLanguage,
         BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,
@@ -4529,18 +4699,18 @@
         ULONG *pulDescrambleStatus);
 
     HRESULT (STDMETHODCALLTYPE *SetCaptureToken)(
-        IBDA_ConditionalAccessEx* This,
+        IBDA_ConditionalAccessEx *This,
         ULONG ulcbCaptureTokenLen,
         BYTE *pbCaptureToken);
 
     HRESULT (STDMETHODCALLTYPE *OpenBroadcastMmi)(
-        IBDA_ConditionalAccessEx* This,
+        IBDA_ConditionalAccessEx *This,
         ULONG ulDialogRequest,
         BSTR bstrLanguage,
         ULONG EventId);
 
     HRESULT (STDMETHODCALLTYPE *CloseMmiDialog)(
-        IBDA_ConditionalAccessEx* This,
+        IBDA_ConditionalAccessEx *This,
         ULONG ulDialogRequest,
         BSTR bstrLanguage,
         ULONG ulDialogNumber,
@@ -4548,11 +4718,12 @@
         ULONG *pulSessionResult);
 
     HRESULT (STDMETHODCALLTYPE *CreateDialogRequestNumber)(
-        IBDA_ConditionalAccessEx* This,
+        IBDA_ConditionalAccessEx *This,
         ULONG *pulDialogRequestNumber);
 
     END_INTERFACE
 } IBDA_ConditionalAccessExVtbl;
+
 interface IBDA_ConditionalAccessEx {
     CONST_VTBL IBDA_ConditionalAccessExVtbl* lpVtbl;
 };
@@ -4630,25 +4801,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_ISDBConditionalAccess* This,
+        IBDA_ISDBConditionalAccess *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_ISDBConditionalAccess* This);
+        IBDA_ISDBConditionalAccess *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_ISDBConditionalAccess* This);
+        IBDA_ISDBConditionalAccess *This);
 
     /*** IBDA_ISDBConditionalAccess methods ***/
     HRESULT (STDMETHODCALLTYPE *SetIsdbCasRequest)(
-        IBDA_ISDBConditionalAccess* This,
+        IBDA_ISDBConditionalAccess *This,
         ULONG ulRequestId,
         ULONG ulcbRequestBufferLen,
         BYTE *pbRequestBuffer);
 
     END_INTERFACE
 } IBDA_ISDBConditionalAccessVtbl;
+
 interface IBDA_ISDBConditionalAccess {
     CONST_VTBL IBDA_ISDBConditionalAccessVtbl* lpVtbl;
 };
@@ -4709,24 +4881,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_EventingService* This,
+        IBDA_EventingService *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_EventingService* This);
+        IBDA_EventingService *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_EventingService* This);
+        IBDA_EventingService *This);
 
     /*** IBDA_EventingService methods ***/
     HRESULT (STDMETHODCALLTYPE *CompleteEvent)(
-        IBDA_EventingService* This,
+        IBDA_EventingService *This,
         ULONG ulEventID,
         ULONG ulEventResult);
 
     END_INTERFACE
 } IBDA_EventingServiceVtbl;
+
 interface IBDA_EventingService {
     CONST_VTBL IBDA_EventingServiceVtbl* lpVtbl;
 };
@@ -4794,23 +4967,23 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_AUX* This,
+        IBDA_AUX *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_AUX* This);
+        IBDA_AUX *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_AUX* This);
+        IBDA_AUX *This);
 
     /*** IBDA_AUX methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryCapabilities)(
-        IBDA_AUX* This,
+        IBDA_AUX *This,
         DWORD *pdwNumAuxInputsBSTR);
 
     HRESULT (STDMETHODCALLTYPE *EnumCapability)(
-        IBDA_AUX* This,
+        IBDA_AUX *This,
         DWORD dwIndex,
         DWORD *dwInputID,
         GUID *pConnectorType,
@@ -4820,6 +4993,7 @@
 
     END_INTERFACE
 } IBDA_AUXVtbl;
+
 interface IBDA_AUX {
     CONST_VTBL IBDA_AUXVtbl* lpVtbl;
 };
@@ -4932,24 +5106,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_Encoder* This,
+        IBDA_Encoder *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_Encoder* This);
+        IBDA_Encoder *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_Encoder* This);
+        IBDA_Encoder *This);
 
     /*** IBDA_Encoder methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryCapabilities)(
-        IBDA_Encoder* This,
+        IBDA_Encoder *This,
         DWORD *NumAudioFmts,
         DWORD *NumVideoFmts);
 
     HRESULT (STDMETHODCALLTYPE *EnumAudioCapability)(
-        IBDA_Encoder* This,
+        IBDA_Encoder *This,
         DWORD FmtIndex,
         DWORD *MethodID,
         DWORD *AlgorithmType,
@@ -4958,7 +5132,7 @@
         DWORD *NumChannels);
 
     HRESULT (STDMETHODCALLTYPE *EnumVideoCapability)(
-        IBDA_Encoder* This,
+        IBDA_Encoder *This,
         DWORD FmtIndex,
         DWORD *MethodID,
         DWORD *AlgorithmType,
@@ -4969,7 +5143,7 @@
         DWORD *ProgressiveSequence);
 
     HRESULT (STDMETHODCALLTYPE *SetParameters)(
-        IBDA_Encoder* This,
+        IBDA_Encoder *This,
         DWORD AudioBitrateMode,
         DWORD AudioBitrate,
         DWORD AudioMethodID,
@@ -4979,7 +5153,7 @@
         DWORD VideoMethodID);
 
     HRESULT (STDMETHODCALLTYPE *GetState)(
-        IBDA_Encoder* This,
+        IBDA_Encoder *This,
         DWORD *AudioBitrateMax,
         DWORD *AudioBitrateMin,
         DWORD *AudioBitrateMode,
@@ -5002,6 +5176,7 @@
 
     END_INTERFACE
 } IBDA_EncoderVtbl;
+
 interface IBDA_Encoder {
     CONST_VTBL IBDA_EncoderVtbl* lpVtbl;
 };
@@ -5106,19 +5281,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_FDC* This,
+        IBDA_FDC *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_FDC* This);
+        IBDA_FDC *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_FDC* This);
+        IBDA_FDC *This);
 
     /*** IBDA_FDC methods ***/
     HRESULT (STDMETHODCALLTYPE *GetStatus)(
-        IBDA_FDC* This,
+        IBDA_FDC *This,
         DWORD *CurrentBitrate,
         WINBOOL *CarrierLock,
         DWORD *CurrentFrequency,
@@ -5128,29 +5303,29 @@
         WINBOOL *Overflow);
 
     HRESULT (STDMETHODCALLTYPE *RequestTables)(
-        IBDA_FDC* This,
+        IBDA_FDC *This,
         BSTR TableIDs);
 
     HRESULT (STDMETHODCALLTYPE *AddPid)(
-        IBDA_FDC* This,
+        IBDA_FDC *This,
         BSTR PidsToAdd,
         DWORD *RemainingFilterEntries);
 
     HRESULT (STDMETHODCALLTYPE *RemovePid)(
-        IBDA_FDC* This,
+        IBDA_FDC *This,
         BSTR PidsToRemove);
 
     HRESULT (STDMETHODCALLTYPE *AddTid)(
-        IBDA_FDC* This,
+        IBDA_FDC *This,
         BSTR TidsToAdd,
         BSTR *CurrentTidList);
 
     HRESULT (STDMETHODCALLTYPE *RemoveTid)(
-        IBDA_FDC* This,
+        IBDA_FDC *This,
         BSTR TidsToRemove);
 
     HRESULT (STDMETHODCALLTYPE *GetTableSection)(
-        IBDA_FDC* This,
+        IBDA_FDC *This,
         DWORD *Pid,
         DWORD MaxBufferSize,
         DWORD *ActualSize,
@@ -5158,6 +5333,7 @@
 
     END_INTERFACE
 } IBDA_FDCVtbl;
+
 interface IBDA_FDC {
     CONST_VTBL IBDA_FDCVtbl* lpVtbl;
 };
@@ -5261,47 +5437,48 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_GuideDataDeliveryService* This,
+        IBDA_GuideDataDeliveryService *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_GuideDataDeliveryService* This);
+        IBDA_GuideDataDeliveryService *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_GuideDataDeliveryService* This);
+        IBDA_GuideDataDeliveryService *This);
 
     /*** IBDA_GuideDataDeliveryService methods ***/
     HRESULT (STDMETHODCALLTYPE *GetGuideDataType)(
-        IBDA_GuideDataDeliveryService* This,
+        IBDA_GuideDataDeliveryService *This,
         GUID *pguidDataType);
 
     HRESULT (STDMETHODCALLTYPE *GetGuideData)(
-        IBDA_GuideDataDeliveryService* This,
+        IBDA_GuideDataDeliveryService *This,
         ULONG *pulcbBufferLen,
         BYTE *pbBuffer,
         ULONG *pulGuideDataPercentageProgress);
 
     HRESULT (STDMETHODCALLTYPE *RequestGuideDataUpdate)(
-        IBDA_GuideDataDeliveryService* This);
+        IBDA_GuideDataDeliveryService *This);
 
     HRESULT (STDMETHODCALLTYPE *GetTuneXmlFromServiceIdx)(
-        IBDA_GuideDataDeliveryService* This,
+        IBDA_GuideDataDeliveryService *This,
         ULONG64 ul64ServiceIdx,
         BSTR *pbstrTuneXml);
 
     HRESULT (STDMETHODCALLTYPE *GetServices)(
-        IBDA_GuideDataDeliveryService* This,
+        IBDA_GuideDataDeliveryService *This,
         ULONG *pulcbBufferLen,
         BYTE *pbBuffer);
 
     HRESULT (STDMETHODCALLTYPE *GetServiceInfoFromTuneXml)(
-        IBDA_GuideDataDeliveryService* This,
+        IBDA_GuideDataDeliveryService *This,
         BSTR bstrTuneXml,
         BSTR *pbstrServiceDescription);
 
     END_INTERFACE
 } IBDA_GuideDataDeliveryServiceVtbl;
+
 interface IBDA_GuideDataDeliveryService {
     CONST_VTBL IBDA_GuideDataDeliveryServiceVtbl* lpVtbl;
 };
@@ -5385,28 +5562,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DRMService* This,
+        IBDA_DRMService *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DRMService* This);
+        IBDA_DRMService *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DRMService* This);
+        IBDA_DRMService *This);
 
     /*** IBDA_DRMService methods ***/
     HRESULT (STDMETHODCALLTYPE *SetDRM)(
-        IBDA_DRMService* This,
+        IBDA_DRMService *This,
         GUID *puuidNewDrm);
 
     HRESULT (STDMETHODCALLTYPE *GetDRMStatus)(
-        IBDA_DRMService* This,
+        IBDA_DRMService *This,
         BSTR *pbstrDrmUuidList,
         GUID *DrmUuid);
 
     END_INTERFACE
 } IBDA_DRMServiceVtbl;
+
 interface IBDA_DRMService {
     CONST_VTBL IBDA_DRMServiceVtbl* lpVtbl;
 };
@@ -5513,19 +5691,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_WMDRMSession* This);
+        IBDA_WMDRMSession *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_WMDRMSession* This);
+        IBDA_WMDRMSession *This);
 
     /*** IBDA_WMDRMSession methods ***/
     HRESULT (STDMETHODCALLTYPE *GetStatus)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         ULONG *MaxCaptureToken,
         ULONG *MaxStreamingPid,
         ULONG *MaxLicense,
@@ -5537,34 +5715,34 @@
         ULONG *ulState);
 
     HRESULT (STDMETHODCALLTYPE *SetRevInfo)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         ULONG ulRevInfoLen,
         BYTE *pbRevInfo);
 
     HRESULT (STDMETHODCALLTYPE *SetCrl)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         ULONG ulCrlLen,
         BYTE *pbCrlLen);
 
     HRESULT (STDMETHODCALLTYPE *TransactMessage)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         ULONG ulcbRequest,
         BYTE *pbRequest,
         ULONG *pulcbResponse,
         BYTE *pbResponse);
 
     HRESULT (STDMETHODCALLTYPE *GetLicense)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         GUID *uuidKey,
         ULONG *pulPackageLen,
         BYTE *pbPackage);
 
     HRESULT (STDMETHODCALLTYPE *ReissueLicense)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         GUID *uuidKey);
 
     HRESULT (STDMETHODCALLTYPE *RenewLicense)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         ULONG ulInXmrLicenseLen,
         BYTE *pbInXmrLicense,
         ULONG ulEntitlementTokenLen,
@@ -5574,12 +5752,13 @@
         BYTE *pbOutXmrLicense);
 
     HRESULT (STDMETHODCALLTYPE *GetKeyInfo)(
-        IBDA_WMDRMSession* This,
+        IBDA_WMDRMSession *This,
         ULONG *pulKeyInfoLen,
         BYTE *pbKeyInfo);
 
     END_INTERFACE
 } IBDA_WMDRMSessionVtbl;
+
 interface IBDA_WMDRMSession {
     CONST_VTBL IBDA_WMDRMSessionVtbl* lpVtbl;
 };
@@ -5692,19 +5871,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_WMDRMTuner* This,
+        IBDA_WMDRMTuner *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_WMDRMTuner* This);
+        IBDA_WMDRMTuner *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_WMDRMTuner* This);
+        IBDA_WMDRMTuner *This);
 
     /*** IBDA_WMDRMTuner methods ***/
     HRESULT (STDMETHODCALLTYPE *PurchaseEntitlement)(
-        IBDA_WMDRMTuner* This,
+        IBDA_WMDRMTuner *This,
         ULONG ulDialogRequest,
         BSTR bstrLanguage,
         ULONG ulPurchaseTokenLen,
@@ -5714,31 +5893,32 @@
         BYTE *pbCaptureToken);
 
     HRESULT (STDMETHODCALLTYPE *CancelCaptureToken)(
-        IBDA_WMDRMTuner* This,
+        IBDA_WMDRMTuner *This,
         ULONG ulCaptureTokenLen,
         BYTE *pbCaptureToken);
 
     HRESULT (STDMETHODCALLTYPE *SetPidProtection)(
-        IBDA_WMDRMTuner* This,
+        IBDA_WMDRMTuner *This,
         ULONG ulPid,
         GUID *uuidKey);
 
     HRESULT (STDMETHODCALLTYPE *GetPidProtection)(
-        IBDA_WMDRMTuner* This,
+        IBDA_WMDRMTuner *This,
         ULONG pulPid,
         GUID *uuidKey);
 
     HRESULT (STDMETHODCALLTYPE *SetSyncValue)(
-        IBDA_WMDRMTuner* This,
+        IBDA_WMDRMTuner *This,
         ULONG ulSyncValue);
 
     HRESULT (STDMETHODCALLTYPE *GetStartCodeProfile)(
-        IBDA_WMDRMTuner* This,
+        IBDA_WMDRMTuner *This,
         ULONG *pulStartCodeProfileLen,
         BYTE *pbStartCodeProfile);
 
     END_INTERFACE
 } IBDA_WMDRMTunerVtbl;
+
 interface IBDA_WMDRMTuner {
     CONST_VTBL IBDA_WMDRMTunerVtbl* lpVtbl;
 };
@@ -5825,32 +6005,33 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DRIDRMService* This,
+        IBDA_DRIDRMService *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DRIDRMService* This);
+        IBDA_DRIDRMService *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DRIDRMService* This);
+        IBDA_DRIDRMService *This);
 
     /*** IBDA_DRIDRMService methods ***/
     HRESULT (STDMETHODCALLTYPE *SetDRM)(
-        IBDA_DRIDRMService* This,
+        IBDA_DRIDRMService *This,
         BSTR bstrNewDrm);
 
     HRESULT (STDMETHODCALLTYPE *GetDRMStatus)(
-        IBDA_DRIDRMService* This,
+        IBDA_DRIDRMService *This,
         BSTR *pbstrDrmUuidList,
         GUID *DrmUuid);
 
     HRESULT (STDMETHODCALLTYPE *GetPairingStatus)(
-        IBDA_DRIDRMService* This,
+        IBDA_DRIDRMService *This,
         BDA_DrmPairingError *penumPairingStatus);
 
     END_INTERFACE
 } IBDA_DRIDRMServiceVtbl;
+
 interface IBDA_DRIDRMService {
     CONST_VTBL IBDA_DRIDRMServiceVtbl* lpVtbl;
 };
@@ -5946,56 +6127,57 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_DRIWMDRMSession* This,
+        IBDA_DRIWMDRMSession *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_DRIWMDRMSession* This);
+        IBDA_DRIWMDRMSession *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_DRIWMDRMSession* This);
+        IBDA_DRIWMDRMSession *This);
 
     /*** IBDA_DRIWMDRMSession methods ***/
     HRESULT (STDMETHODCALLTYPE *AcknowledgeLicense)(
-        IBDA_DRIWMDRMSession* This,
+        IBDA_DRIWMDRMSession *This,
         HRESULT hrLicenseAck);
 
     HRESULT (STDMETHODCALLTYPE *ProcessLicenseChallenge)(
-        IBDA_DRIWMDRMSession* This,
+        IBDA_DRIWMDRMSession *This,
         DWORD dwcbLicenseMessage,
         BYTE *pbLicenseMessage,
         DWORD *pdwcbLicenseResponse,
         BYTE **ppbLicenseResponse);
 
     HRESULT (STDMETHODCALLTYPE *ProcessRegistrationChallenge)(
-        IBDA_DRIWMDRMSession* This,
+        IBDA_DRIWMDRMSession *This,
         DWORD dwcbRegistrationMessage,
         BYTE *pbRegistrationMessage,
         DWORD *pdwcbRegistrationResponse,
         BYTE **ppbRegistrationResponse);
 
     HRESULT (STDMETHODCALLTYPE *SetRevInfo)(
-        IBDA_DRIWMDRMSession* This,
+        IBDA_DRIWMDRMSession *This,
         DWORD dwRevInfoLen,
         BYTE *pbRevInfo,
         DWORD *pdwResponse);
 
     HRESULT (STDMETHODCALLTYPE *SetCrl)(
-        IBDA_DRIWMDRMSession* This,
+        IBDA_DRIWMDRMSession *This,
         DWORD dwCrlLen,
         BYTE *pbCrlLen,
         DWORD *pdwResponse);
 
     HRESULT (STDMETHODCALLTYPE *GetHMSAssociationData)(
-        IBDA_DRIWMDRMSession* This);
+        IBDA_DRIWMDRMSession *This);
 
     HRESULT (STDMETHODCALLTYPE *GetLastCardeaError)(
-        IBDA_DRIWMDRMSession* This,
+        IBDA_DRIWMDRMSession *This,
         DWORD *pdwError);
 
     END_INTERFACE
 } IBDA_DRIWMDRMSessionVtbl;
+
 interface IBDA_DRIWMDRMSession {
     CONST_VTBL IBDA_DRIWMDRMSessionVtbl* lpVtbl;
 };
@@ -6084,29 +6266,30 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_MUX* This,
+        IBDA_MUX *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_MUX* This);
+        IBDA_MUX *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_MUX* This);
+        IBDA_MUX *This);
 
     /*** IBDA_MUX methods ***/
     HRESULT (STDMETHODCALLTYPE *SetPidList)(
-        IBDA_MUX* This,
+        IBDA_MUX *This,
         ULONG ulPidListCount,
         BDA_MUX_PIDLISTITEM *pbPidListBuffer);
 
     HRESULT (STDMETHODCALLTYPE *GetPidList)(
-        IBDA_MUX* This,
+        IBDA_MUX *This,
         ULONG *pulPidListCount,
         BDA_MUX_PIDLISTITEM *pbPidListBuffer);
 
     END_INTERFACE
 } IBDA_MUXVtbl;
+
 interface IBDA_MUX {
     CONST_VTBL IBDA_MUXVtbl* lpVtbl;
 };
@@ -6174,28 +6357,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_TransportStreamSelector* This,
+        IBDA_TransportStreamSelector *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_TransportStreamSelector* This);
+        IBDA_TransportStreamSelector *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_TransportStreamSelector* This);
+        IBDA_TransportStreamSelector *This);
 
     /*** IBDA_TransportStreamSelector methods ***/
     HRESULT (STDMETHODCALLTYPE *SetTSID)(
-        IBDA_TransportStreamSelector* This,
+        IBDA_TransportStreamSelector *This,
         USHORT usTSID);
 
     HRESULT (STDMETHODCALLTYPE *GetTSInformation)(
-        IBDA_TransportStreamSelector* This,
+        IBDA_TransportStreamSelector *This,
         ULONG *pulTSInformationBufferLen,
         BYTE *pbTSInformationBuffer);
 
     END_INTERFACE
 } IBDA_TransportStreamSelectorVtbl;
+
 interface IBDA_TransportStreamSelector {
     CONST_VTBL IBDA_TransportStreamSelectorVtbl* lpVtbl;
 };
@@ -6265,30 +6449,31 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDA_UserActivityService* This,
+        IBDA_UserActivityService *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDA_UserActivityService* This);
+        IBDA_UserActivityService *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDA_UserActivityService* This);
+        IBDA_UserActivityService *This);
 
     /*** IBDA_UserActivityService methods ***/
     HRESULT (STDMETHODCALLTYPE *SetCurrentTunerUseReason)(
-        IBDA_UserActivityService* This,
+        IBDA_UserActivityService *This,
         DWORD dwUseReason);
 
     HRESULT (STDMETHODCALLTYPE *GetUserActivityInterval)(
-        IBDA_UserActivityService* This,
+        IBDA_UserActivityService *This,
         DWORD *pdwActivityInterval);
 
     HRESULT (STDMETHODCALLTYPE *UserActivityDetected)(
-        IBDA_UserActivityService* This);
+        IBDA_UserActivityService *This);
 
     END_INTERFACE
 } IBDA_UserActivityServiceVtbl;
+
 interface IBDA_UserActivityService {
     CONST_VTBL IBDA_UserActivityServiceVtbl* lpVtbl;
 };
diff --git a/mingw-w64-headers/include/comadmin.h b/mingw-w64-headers/include/comadmin.h
index 3d1d574..1c9212a 100644
--- a/mingw-w64-headers/include/comadmin.h
+++ b/mingw-w64-headers/include/comadmin.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/comadmin.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/comadmin.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/comcat.h b/mingw-w64-headers/include/comcat.h
index 9c492e6..6d7e76f 100644
--- a/mingw-w64-headers/include/comcat.h
+++ b/mingw-w64-headers/include/comcat.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/comcat.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/comcat.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/commoncontrols.h b/mingw-w64-headers/include/commoncontrols.h
index 5ddd8bf..1306d07 100644
--- a/mingw-w64-headers/include/commoncontrols.h
+++ b/mingw-w64-headers/include/commoncontrols.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/commoncontrols.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/commoncontrols.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/control.h b/mingw-w64-headers/include/control.h
index 3144550..d9f317e 100644
--- a/mingw-w64-headers/include/control.h
+++ b/mingw-w64-headers/include/control.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/control.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/control.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/ctfutb.h b/mingw-w64-headers/include/ctfutb.h
index 7b72a8c..09e8d45 100644
--- a/mingw-w64-headers/include/ctfutb.h
+++ b/mingw-w64-headers/include/ctfutb.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/ctfutb.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/ctfutb.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d10.h b/mingw-w64-headers/include/d3d10.h
index e6ab436..f4d8091 100644
--- a/mingw-w64-headers/include/d3d10.h
+++ b/mingw-w64-headers/include/d3d10.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d10.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d10.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d10_1.h b/mingw-w64-headers/include/d3d10_1.h
index 6e969be..4ce0796 100644
--- a/mingw-w64-headers/include/d3d10_1.h
+++ b/mingw-w64-headers/include/d3d10_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d10_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d10_1.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d10sdklayers.h b/mingw-w64-headers/include/d3d10sdklayers.h
index eaf2fdc..a33d95c 100644
--- a/mingw-w64-headers/include/d3d10sdklayers.h
+++ b/mingw-w64-headers/include/d3d10sdklayers.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d10sdklayers.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d10sdklayers.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d11.h b/mingw-w64-headers/include/d3d11.h
index 3d6ee25..89e9214 100644
--- a/mingw-w64-headers/include/d3d11.h
+++ b/mingw-w64-headers/include/d3d11.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d11.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d11.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d11_1.h b/mingw-w64-headers/include/d3d11_1.h
index 25e83e0..4ea047f 100644
--- a/mingw-w64-headers/include/d3d11_1.h
+++ b/mingw-w64-headers/include/d3d11_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d11_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d11_1.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d11_2.h b/mingw-w64-headers/include/d3d11_2.h
index 68983be..f4e6080 100644
--- a/mingw-w64-headers/include/d3d11_2.h
+++ b/mingw-w64-headers/include/d3d11_2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d11_2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d11_2.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d11_3.h b/mingw-w64-headers/include/d3d11_3.h
index e212028..d850222 100644
--- a/mingw-w64-headers/include/d3d11_3.h
+++ b/mingw-w64-headers/include/d3d11_3.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d11_3.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d11_3.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d11_4.h b/mingw-w64-headers/include/d3d11_4.h
index 0985c5d..428d516 100644
--- a/mingw-w64-headers/include/d3d11_4.h
+++ b/mingw-w64-headers/include/d3d11_4.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d11_4.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d11_4.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d11on12.h b/mingw-w64-headers/include/d3d11on12.h
index d1423ab..9675090 100644
--- a/mingw-w64-headers/include/d3d11on12.h
+++ b/mingw-w64-headers/include/d3d11on12.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d11on12.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d11on12.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d11sdklayers.h b/mingw-w64-headers/include/d3d11sdklayers.h
index 3656093..810018d 100644
--- a/mingw-w64-headers/include/d3d11sdklayers.h
+++ b/mingw-w64-headers/include/d3d11sdklayers.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d11sdklayers.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d11sdklayers.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d12.h b/mingw-w64-headers/include/d3d12.h
index a292bc2..0a90902 100644
--- a/mingw-w64-headers/include/d3d12.h
+++ b/mingw-w64-headers/include/d3d12.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d12.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d12.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d12sdklayers.h b/mingw-w64-headers/include/d3d12sdklayers.h
index e064a0c..d4ba730 100644
--- a/mingw-w64-headers/include/d3d12sdklayers.h
+++ b/mingw-w64-headers/include/d3d12sdklayers.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d12sdklayers.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d12sdklayers.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3d12shader.h b/mingw-w64-headers/include/d3d12shader.h
index f6d62e2..1e5f12e 100644
--- a/mingw-w64-headers/include/d3d12shader.h
+++ b/mingw-w64-headers/include/d3d12shader.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3d12shader.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3d12shader.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/d3dcommon.h b/mingw-w64-headers/include/d3dcommon.h
index 2291cf8..8b80f95 100644
--- a/mingw-w64-headers/include/d3dcommon.h
+++ b/mingw-w64-headers/include/d3dcommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/d3dcommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/d3dcommon.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dbgprop.h b/mingw-w64-headers/include/dbgprop.h
index 7bc9c07..4858329 100644
--- a/mingw-w64-headers/include/dbgprop.h
+++ b/mingw-w64-headers/include/dbgprop.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dbgprop.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dbgprop.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dcommon.h b/mingw-w64-headers/include/dcommon.h
index 62b78eb..0e5640b 100644
--- a/mingw-w64-headers/include/dcommon.h
+++ b/mingw-w64-headers/include/dcommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dcommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dcommon.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dcompanimation.h b/mingw-w64-headers/include/dcompanimation.h
index 5580797..e75adf0 100644
--- a/mingw-w64-headers/include/dcompanimation.h
+++ b/mingw-w64-headers/include/dcompanimation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dcompanimation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dcompanimation.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/ddstream.h b/mingw-w64-headers/include/ddstream.h
index 74b552f..4c5f389 100644
--- a/mingw-w64-headers/include/ddstream.h
+++ b/mingw-w64-headers/include/ddstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/ddstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/ddstream.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/devicetopology.h b/mingw-w64-headers/include/devicetopology.h
index f59ce3a..d95078a 100644
--- a/mingw-w64-headers/include/devicetopology.h
+++ b/mingw-w64-headers/include/devicetopology.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/devicetopology.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/devicetopology.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dimm.h b/mingw-w64-headers/include/dimm.h
index d6aac38..20075ee 100644
--- a/mingw-w64-headers/include/dimm.h
+++ b/mingw-w64-headers/include/dimm.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dimm.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dimm.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dinputd.h b/mingw-w64-headers/include/dinputd.h
index 409f5bf..bee8507 100644
--- a/mingw-w64-headers/include/dinputd.h
+++ b/mingw-w64-headers/include/dinputd.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dinputd.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dinputd.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/directmanipulation.h b/mingw-w64-headers/include/directmanipulation.h
index befd15f..d02c2b9 100644
--- a/mingw-w64-headers/include/directmanipulation.h
+++ b/mingw-w64-headers/include/directmanipulation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/directmanipulation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/directmanipulation.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dispex.h b/mingw-w64-headers/include/dispex.h
index 8057dac..c15a565 100644
--- a/mingw-w64-headers/include/dispex.h
+++ b/mingw-w64-headers/include/dispex.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dispex.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dispex.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dmodshow.h b/mingw-w64-headers/include/dmodshow.h
index 1f02341..27da7c0 100644
--- a/mingw-w64-headers/include/dmodshow.h
+++ b/mingw-w64-headers/include/dmodshow.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dmodshow.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dmodshow.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/docobj.h b/mingw-w64-headers/include/docobj.h
index 7bc47b3..65fc017 100644
--- a/mingw-w64-headers/include/docobj.h
+++ b/mingw-w64-headers/include/docobj.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/docobj.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/docobj.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/docobjectservice.h b/mingw-w64-headers/include/docobjectservice.h
index ae813a9..7c99404 100644
--- a/mingw-w64-headers/include/docobjectservice.h
+++ b/mingw-w64-headers/include/docobjectservice.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/docobjectservice.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/docobjectservice.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/documenttarget.h b/mingw-w64-headers/include/documenttarget.h
index 17b2d14..19c575d 100644
--- a/mingw-w64-headers/include/documenttarget.h
+++ b/mingw-w64-headers/include/documenttarget.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/documenttarget.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/documenttarget.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/downloadmgr.h b/mingw-w64-headers/include/downloadmgr.h
index 8ad1acd..015da52 100644
--- a/mingw-w64-headers/include/downloadmgr.h
+++ b/mingw-w64-headers/include/downloadmgr.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/downloadmgr.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/downloadmgr.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/drmexternals.h b/mingw-w64-headers/include/drmexternals.h
index 5a68248..45ec3ff 100644
--- a/mingw-w64-headers/include/drmexternals.h
+++ b/mingw-w64-headers/include/drmexternals.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/drmexternals.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/drmexternals.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dvdif.h b/mingw-w64-headers/include/dvdif.h
index 3808294..0fd4e99 100644
--- a/mingw-w64-headers/include/dvdif.h
+++ b/mingw-w64-headers/include/dvdif.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dvdif.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dvdif.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dwrite.h b/mingw-w64-headers/include/dwrite.h
index ce37573..593051f 100644
--- a/mingw-w64-headers/include/dwrite.h
+++ b/mingw-w64-headers/include/dwrite.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dwrite.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dwrite.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dwrite_1.h b/mingw-w64-headers/include/dwrite_1.h
index fcf04fb..63296c5 100644
--- a/mingw-w64-headers/include/dwrite_1.h
+++ b/mingw-w64-headers/include/dwrite_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dwrite_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dwrite_1.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dwrite_2.h b/mingw-w64-headers/include/dwrite_2.h
index 7a60d11..ff23c4e 100644
--- a/mingw-w64-headers/include/dwrite_2.h
+++ b/mingw-w64-headers/include/dwrite_2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dwrite_2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dwrite_2.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dwrite_3.h b/mingw-w64-headers/include/dwrite_3.h
index e66d9a0..2efd888 100644
--- a/mingw-w64-headers/include/dwrite_3.h
+++ b/mingw-w64-headers/include/dwrite_3.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dwrite_3.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dwrite_3.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgi.h b/mingw-w64-headers/include/dxgi.h
index 66b5f29..7543969 100644
--- a/mingw-w64-headers/include/dxgi.h
+++ b/mingw-w64-headers/include/dxgi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgi.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgi1_2.h b/mingw-w64-headers/include/dxgi1_2.h
index baae231..24d1dff 100644
--- a/mingw-w64-headers/include/dxgi1_2.h
+++ b/mingw-w64-headers/include/dxgi1_2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgi1_2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgi1_2.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgi1_3.h b/mingw-w64-headers/include/dxgi1_3.h
index 3051661..4a06429 100644
--- a/mingw-w64-headers/include/dxgi1_3.h
+++ b/mingw-w64-headers/include/dxgi1_3.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgi1_3.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgi1_3.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgi1_4.h b/mingw-w64-headers/include/dxgi1_4.h
index 8ea9246..064d40e 100644
--- a/mingw-w64-headers/include/dxgi1_4.h
+++ b/mingw-w64-headers/include/dxgi1_4.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgi1_4.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgi1_4.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgi1_5.h b/mingw-w64-headers/include/dxgi1_5.h
index b4f870a..3c2321b 100644
--- a/mingw-w64-headers/include/dxgi1_5.h
+++ b/mingw-w64-headers/include/dxgi1_5.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgi1_5.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgi1_5.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgi1_6.h b/mingw-w64-headers/include/dxgi1_6.h
index 11092b4..adb370a 100644
--- a/mingw-w64-headers/include/dxgi1_6.h
+++ b/mingw-w64-headers/include/dxgi1_6.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgi1_6.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgi1_6.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgicommon.h b/mingw-w64-headers/include/dxgicommon.h
index 9a1cfd7..39be977 100644
--- a/mingw-w64-headers/include/dxgicommon.h
+++ b/mingw-w64-headers/include/dxgicommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgicommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgicommon.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgidebug.h b/mingw-w64-headers/include/dxgidebug.h
index 5e657cd..10fef17 100644
--- a/mingw-w64-headers/include/dxgidebug.h
+++ b/mingw-w64-headers/include/dxgidebug.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgidebug.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgidebug.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgiformat.h b/mingw-w64-headers/include/dxgiformat.h
index c731dd9..af92b7b 100644
--- a/mingw-w64-headers/include/dxgiformat.h
+++ b/mingw-w64-headers/include/dxgiformat.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgiformat.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgiformat.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxgitype.h b/mingw-w64-headers/include/dxgitype.h
index 3da6f93..702a409 100644
--- a/mingw-w64-headers/include/dxgitype.h
+++ b/mingw-w64-headers/include/dxgitype.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxgitype.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxgitype.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxva2api.h b/mingw-w64-headers/include/dxva2api.h
index 161ad70..8404d7c 100644
--- a/mingw-w64-headers/include/dxva2api.h
+++ b/mingw-w64-headers/include/dxva2api.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxva2api.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxva2api.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/dxvahd.h b/mingw-w64-headers/include/dxvahd.h
index bacf127..4fd9247 100644
--- a/mingw-w64-headers/include/dxvahd.h
+++ b/mingw-w64-headers/include/dxvahd.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/dxvahd.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/dxvahd.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/endpointvolume.h b/mingw-w64-headers/include/endpointvolume.h
index 1ec9b26..cf3cb54 100644
--- a/mingw-w64-headers/include/endpointvolume.h
+++ b/mingw-w64-headers/include/endpointvolume.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/endpointvolume.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/endpointvolume.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/evr.h b/mingw-w64-headers/include/evr.h
index 936dedf..234c8e2 100644
--- a/mingw-w64-headers/include/evr.h
+++ b/mingw-w64-headers/include/evr.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/evr.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/evr.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/exdisp.h b/mingw-w64-headers/include/exdisp.h
index eeffd26..9e55d68 100644
--- a/mingw-w64-headers/include/exdisp.h
+++ b/mingw-w64-headers/include/exdisp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/exdisp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/exdisp.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/filter.h b/mingw-w64-headers/include/filter.h
index 64def55..a912892 100644
--- a/mingw-w64-headers/include/filter.h
+++ b/mingw-w64-headers/include/filter.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/filter.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/filter.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/fsrm.h b/mingw-w64-headers/include/fsrm.h
index f27d000..e3f8b20 100644
--- a/mingw-w64-headers/include/fsrm.h
+++ b/mingw-w64-headers/include/fsrm.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/fsrm.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/fsrm.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/fsrmenums.h b/mingw-w64-headers/include/fsrmenums.h
index 09c2cbd..7795530 100644
--- a/mingw-w64-headers/include/fsrmenums.h
+++ b/mingw-w64-headers/include/fsrmenums.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/fsrmenums.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/fsrmenums.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/fsrmquota.h b/mingw-w64-headers/include/fsrmquota.h
index d7a5355..5122499 100644
--- a/mingw-w64-headers/include/fsrmquota.h
+++ b/mingw-w64-headers/include/fsrmquota.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/fsrmquota.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/fsrmquota.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/fsrmreports.h b/mingw-w64-headers/include/fsrmreports.h
index 65bf8af..4aa9627 100644
--- a/mingw-w64-headers/include/fsrmreports.h
+++ b/mingw-w64-headers/include/fsrmreports.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/fsrmreports.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/fsrmreports.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/fsrmscreen.h b/mingw-w64-headers/include/fsrmscreen.h
index 6bd9eb9..54af7db 100644
--- a/mingw-w64-headers/include/fsrmscreen.h
+++ b/mingw-w64-headers/include/fsrmscreen.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/fsrmscreen.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/fsrmscreen.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/fusion.h b/mingw-w64-headers/include/fusion.h
index bd64b71..cab6f59 100644
--- a/mingw-w64-headers/include/fusion.h
+++ b/mingw-w64-headers/include/fusion.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/fusion.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/fusion.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/fwptypes.h b/mingw-w64-headers/include/fwptypes.h
index a652b8c..b2f70bd 100644
--- a/mingw-w64-headers/include/fwptypes.h
+++ b/mingw-w64-headers/include/fwptypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/fwptypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/fwptypes.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/hstring.h b/mingw-w64-headers/include/hstring.h
index 5257859..8592087 100644
--- a/mingw-w64-headers/include/hstring.h
+++ b/mingw-w64-headers/include/hstring.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/hstring.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/hstring.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/icftypes.h b/mingw-w64-headers/include/icftypes.h
index 3e692d2..cacc0a5 100644
--- a/mingw-w64-headers/include/icftypes.h
+++ b/mingw-w64-headers/include/icftypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/icftypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/icftypes.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/icodecapi.h b/mingw-w64-headers/include/icodecapi.h
index eda5f97..06bc4b2 100644
--- a/mingw-w64-headers/include/icodecapi.h
+++ b/mingw-w64-headers/include/icodecapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/icodecapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/icodecapi.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/iketypes.h b/mingw-w64-headers/include/iketypes.h
index 64d97cb..f919962 100644
--- a/mingw-w64-headers/include/iketypes.h
+++ b/mingw-w64-headers/include/iketypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/iketypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/iketypes.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/inputscope.h b/mingw-w64-headers/include/inputscope.h
index 0d9963b..8bacfaf 100644
--- a/mingw-w64-headers/include/inputscope.h
+++ b/mingw-w64-headers/include/inputscope.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/inputscope.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/inputscope.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/inspectable.h b/mingw-w64-headers/include/inspectable.h
index 3e9ec10..81a53fb 100644
--- a/mingw-w64-headers/include/inspectable.h
+++ b/mingw-w64-headers/include/inspectable.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/inspectable.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/inspectable.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/locationapi.h b/mingw-w64-headers/include/locationapi.h
index e8e0dc7..2926c15 100644
--- a/mingw-w64-headers/include/locationapi.h
+++ b/mingw-w64-headers/include/locationapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/locationapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/locationapi.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mediaobj.h b/mingw-w64-headers/include/mediaobj.h
index 121b3a4..797f8b8 100644
--- a/mingw-w64-headers/include/mediaobj.h
+++ b/mingw-w64-headers/include/mediaobj.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mediaobj.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mediaobj.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/medparam.h b/mingw-w64-headers/include/medparam.h
index f221faa..4be96de 100644
--- a/mingw-w64-headers/include/medparam.h
+++ b/mingw-w64-headers/include/medparam.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/medparam.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/medparam.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mfidl.h b/mingw-w64-headers/include/mfidl.h
index ffd17dc..dbf8336 100644
--- a/mingw-w64-headers/include/mfidl.h
+++ b/mingw-w64-headers/include/mfidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mfidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mfidl.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mfobjects.h b/mingw-w64-headers/include/mfobjects.h
index bd43efa..0a44a5a 100644
--- a/mingw-w64-headers/include/mfobjects.h
+++ b/mingw-w64-headers/include/mfobjects.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mfobjects.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mfobjects.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mfplay.h b/mingw-w64-headers/include/mfplay.h
index 6e40578..6a6e63b 100644
--- a/mingw-w64-headers/include/mfplay.h
+++ b/mingw-w64-headers/include/mfplay.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mfplay.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mfplay.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mfreadwrite.h b/mingw-w64-headers/include/mfreadwrite.h
index 1193096..d814c17 100644
--- a/mingw-w64-headers/include/mfreadwrite.h
+++ b/mingw-w64-headers/include/mfreadwrite.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mfreadwrite.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mfreadwrite.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mftransform.h b/mingw-w64-headers/include/mftransform.h
index d7e3b2d..4000aef 100644
--- a/mingw-w64-headers/include/mftransform.h
+++ b/mingw-w64-headers/include/mftransform.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mftransform.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mftransform.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mmdeviceapi.h b/mingw-w64-headers/include/mmdeviceapi.h
index 119f3a1..9ef61e0 100644
--- a/mingw-w64-headers/include/mmdeviceapi.h
+++ b/mingw-w64-headers/include/mmdeviceapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mmdeviceapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mmdeviceapi.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mmstream.h b/mingw-w64-headers/include/mmstream.h
index 470de51..79e19ce 100644
--- a/mingw-w64-headers/include/mmstream.h
+++ b/mingw-w64-headers/include/mmstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mmstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mmstream.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mscoree.h b/mingw-w64-headers/include/mscoree.h
index 1c0f8d0..2104ab6 100644
--- a/mingw-w64-headers/include/mscoree.h
+++ b/mingw-w64-headers/include/mscoree.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mscoree.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mscoree.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/msctf.h b/mingw-w64-headers/include/msctf.h
index c829ecc..e24795e 100644
--- a/mingw-w64-headers/include/msctf.h
+++ b/mingw-w64-headers/include/msctf.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/msctf.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/msctf.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mshtmhst.h b/mingw-w64-headers/include/mshtmhst.h
index 0e217d3..c47fa17 100644
--- a/mingw-w64-headers/include/mshtmhst.h
+++ b/mingw-w64-headers/include/mshtmhst.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 5.19 from mshtmhst.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mshtmhst.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/mshtml.h b/mingw-w64-headers/include/mshtml.h
index f09b951..8f92c4b 100644
--- a/mingw-w64-headers/include/mshtml.h
+++ b/mingw-w64-headers/include/mshtml.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/mshtml.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/mshtml.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/msinkaut.h b/mingw-w64-headers/include/msinkaut.h
index 677bf99..406ea4e 100644
--- a/mingw-w64-headers/include/msinkaut.h
+++ b/mingw-w64-headers/include/msinkaut.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/msinkaut.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/msinkaut.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/msinkaut_i.c b/mingw-w64-headers/include/msinkaut_i.c
index 1edf4f7..0b78b3c 100644
--- a/mingw-w64-headers/include/msinkaut_i.c
+++ b/mingw-w64-headers/include/msinkaut_i.c
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 1.6 from include/msinkaut.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/msinkaut.idl - Do not edit ***/
 
 #include <rpc.h>
 #include <rpcndr.h>
@@ -16,10 +16,15 @@
 #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
     DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
 
+#elif defined(__cplusplus)
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+    EXTERN_C const type DECLSPEC_SELECTANY name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+
 #else
 
 #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
-    const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+    const type DECLSPEC_SELECTANY name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
 
 #endif
 
diff --git a/mingw-w64-headers/include/msopc.h b/mingw-w64-headers/include/msopc.h
index ece3a09..744a2d4 100644
--- a/mingw-w64-headers/include/msopc.h
+++ b/mingw-w64-headers/include/msopc.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/msopc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/msopc.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/msxml.h b/mingw-w64-headers/include/msxml.h
index f21020a..74af026 100644
--- a/mingw-w64-headers/include/msxml.h
+++ b/mingw-w64-headers/include/msxml.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/msxml.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/msxml.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/napcertrelyingparty.h b/mingw-w64-headers/include/napcertrelyingparty.h
index 368682e..15b1914 100644
--- a/mingw-w64-headers/include/napcertrelyingparty.h
+++ b/mingw-w64-headers/include/napcertrelyingparty.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/napcertrelyingparty.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/napcertrelyingparty.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/napcommon.h b/mingw-w64-headers/include/napcommon.h
index 9897dcf..31c11ef 100644
--- a/mingw-w64-headers/include/napcommon.h
+++ b/mingw-w64-headers/include/napcommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/napcommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/napcommon.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/napenforcementclient.h b/mingw-w64-headers/include/napenforcementclient.h
index 0e18508..3bc4a25 100644
--- a/mingw-w64-headers/include/napenforcementclient.h
+++ b/mingw-w64-headers/include/napenforcementclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/napenforcementclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/napenforcementclient.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/napmanagement.h b/mingw-w64-headers/include/napmanagement.h
index 830ada2..2e5a856 100644
--- a/mingw-w64-headers/include/napmanagement.h
+++ b/mingw-w64-headers/include/napmanagement.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/napmanagement.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/napmanagement.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/napprotocol.h b/mingw-w64-headers/include/napprotocol.h
index 1975cd1..4c960e6 100644
--- a/mingw-w64-headers/include/napprotocol.h
+++ b/mingw-w64-headers/include/napprotocol.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/napprotocol.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/napprotocol.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/napservermanagement.h b/mingw-w64-headers/include/napservermanagement.h
index bb02236..81ef894 100644
--- a/mingw-w64-headers/include/napservermanagement.h
+++ b/mingw-w64-headers/include/napservermanagement.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/napservermanagement.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/napservermanagement.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/napsystemhealthagent.h b/mingw-w64-headers/include/napsystemhealthagent.h
index ab7be5c..ffacca4 100644
--- a/mingw-w64-headers/include/napsystemhealthagent.h
+++ b/mingw-w64-headers/include/napsystemhealthagent.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/napsystemhealthagent.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/napsystemhealthagent.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/napsystemhealthvalidator.h b/mingw-w64-headers/include/napsystemhealthvalidator.h
index 94c13f5..d201d68 100644
--- a/mingw-w64-headers/include/napsystemhealthvalidator.h
+++ b/mingw-w64-headers/include/napsystemhealthvalidator.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/napsystemhealthvalidator.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/napsystemhealthvalidator.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/naptypes.h b/mingw-w64-headers/include/naptypes.h
index 26199e8..9633c74 100644
--- a/mingw-w64-headers/include/naptypes.h
+++ b/mingw-w64-headers/include/naptypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/naptypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/naptypes.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/netcfgn.h b/mingw-w64-headers/include/netcfgn.h
index fcb44cc..4e1de32 100644
--- a/mingw-w64-headers/include/netcfgn.h
+++ b/mingw-w64-headers/include/netcfgn.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/netcfgn.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/netcfgn.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/netcfgx.h b/mingw-w64-headers/include/netcfgx.h
index dcb5354..7347f73 100644
--- a/mingw-w64-headers/include/netcfgx.h
+++ b/mingw-w64-headers/include/netcfgx.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/netcfgx.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/netcfgx.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/netfw.h b/mingw-w64-headers/include/netfw.h
index 9d03622..f74ef8c 100644
--- a/mingw-w64-headers/include/netfw.h
+++ b/mingw-w64-headers/include/netfw.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/netfw.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/netfw.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/netlistmgr.h b/mingw-w64-headers/include/netlistmgr.h
index 48ca17f..d7a4ba5 100644
--- a/mingw-w64-headers/include/netlistmgr.h
+++ b/mingw-w64-headers/include/netlistmgr.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/netlistmgr.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/netlistmgr.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/oaidl.h b/mingw-w64-headers/include/oaidl.h
index 6419cf6..2f03bc9 100644
--- a/mingw-w64-headers/include/oaidl.h
+++ b/mingw-w64-headers/include/oaidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/oaidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/oaidl.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/objectarray.h b/mingw-w64-headers/include/objectarray.h
index 537b35c..10c30ad 100644
--- a/mingw-w64-headers/include/objectarray.h
+++ b/mingw-w64-headers/include/objectarray.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/objectarray.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/objectarray.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/objidl.h b/mingw-w64-headers/include/objidl.h
index 0c5e920..b8a99fe 100644
--- a/mingw-w64-headers/include/objidl.h
+++ b/mingw-w64-headers/include/objidl.h
@@ -1,11 +1,12 @@
-/*** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/objidl.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>
@@ -20,456 +21,737 @@
 #ifndef __IMarshal_FWD_DEFINED__
 #define __IMarshal_FWD_DEFINED__
 typedef interface IMarshal IMarshal;
+#ifdef __cplusplus
+interface IMarshal;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __INoMarshal_FWD_DEFINED__
 #define __INoMarshal_FWD_DEFINED__
 typedef interface INoMarshal INoMarshal;
+#ifdef __cplusplus
+interface INoMarshal;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAgileObject_FWD_DEFINED__
 #define __IAgileObject_FWD_DEFINED__
 typedef interface IAgileObject IAgileObject;
+#ifdef __cplusplus
+interface IAgileObject;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IAgileReference_FWD_DEFINED__
+#define __IAgileReference_FWD_DEFINED__
+typedef interface IAgileReference IAgileReference;
+#ifdef __cplusplus
+interface IAgileReference;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMarshal2_FWD_DEFINED__
 #define __IMarshal2_FWD_DEFINED__
 typedef interface IMarshal2 IMarshal2;
+#ifdef __cplusplus
+interface IMarshal2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMalloc_FWD_DEFINED__
 #define __IMalloc_FWD_DEFINED__
 typedef interface IMalloc IMalloc;
+#ifdef __cplusplus
+interface IMalloc;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IStdMarshalInfo_FWD_DEFINED__
 #define __IStdMarshalInfo_FWD_DEFINED__
 typedef interface IStdMarshalInfo IStdMarshalInfo;
+#ifdef __cplusplus
+interface IStdMarshalInfo;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IExternalConnection_FWD_DEFINED__
 #define __IExternalConnection_FWD_DEFINED__
 typedef interface IExternalConnection IExternalConnection;
+#ifdef __cplusplus
+interface IExternalConnection;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMultiQI_FWD_DEFINED__
 #define __IMultiQI_FWD_DEFINED__
 typedef interface IMultiQI IMultiQI;
+#ifdef __cplusplus
+interface IMultiQI;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __AsyncIMultiQI_FWD_DEFINED__
 #define __AsyncIMultiQI_FWD_DEFINED__
 typedef interface AsyncIMultiQI AsyncIMultiQI;
+#ifdef __cplusplus
+interface AsyncIMultiQI;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IInternalUnknown_FWD_DEFINED__
 #define __IInternalUnknown_FWD_DEFINED__
 typedef interface IInternalUnknown IInternalUnknown;
+#ifdef __cplusplus
+interface IInternalUnknown;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumUnknown_FWD_DEFINED__
 #define __IEnumUnknown_FWD_DEFINED__
 typedef interface IEnumUnknown IEnumUnknown;
+#ifdef __cplusplus
+interface IEnumUnknown;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumString_FWD_DEFINED__
 #define __IEnumString_FWD_DEFINED__
 typedef interface IEnumString IEnumString;
+#ifdef __cplusplus
+interface IEnumString;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISequentialStream_FWD_DEFINED__
 #define __ISequentialStream_FWD_DEFINED__
 typedef interface ISequentialStream ISequentialStream;
+#ifdef __cplusplus
+interface ISequentialStream;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IStream_FWD_DEFINED__
 #define __IStream_FWD_DEFINED__
 typedef interface IStream IStream;
+#ifdef __cplusplus
+interface IStream;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRpcChannelBuffer_FWD_DEFINED__
 #define __IRpcChannelBuffer_FWD_DEFINED__
 typedef interface IRpcChannelBuffer IRpcChannelBuffer;
+#ifdef __cplusplus
+interface IRpcChannelBuffer;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRpcChannelBuffer2_FWD_DEFINED__
 #define __IRpcChannelBuffer2_FWD_DEFINED__
 typedef interface IRpcChannelBuffer2 IRpcChannelBuffer2;
+#ifdef __cplusplus
+interface IRpcChannelBuffer2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAsyncRpcChannelBuffer_FWD_DEFINED__
 #define __IAsyncRpcChannelBuffer_FWD_DEFINED__
 typedef interface IAsyncRpcChannelBuffer IAsyncRpcChannelBuffer;
+#ifdef __cplusplus
+interface IAsyncRpcChannelBuffer;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRpcChannelBuffer3_FWD_DEFINED__
 #define __IRpcChannelBuffer3_FWD_DEFINED__
 typedef interface IRpcChannelBuffer3 IRpcChannelBuffer3;
+#ifdef __cplusplus
+interface IRpcChannelBuffer3;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRpcSyntaxNegotiate_FWD_DEFINED__
 #define __IRpcSyntaxNegotiate_FWD_DEFINED__
 typedef interface IRpcSyntaxNegotiate IRpcSyntaxNegotiate;
+#ifdef __cplusplus
+interface IRpcSyntaxNegotiate;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRpcProxyBuffer_FWD_DEFINED__
 #define __IRpcProxyBuffer_FWD_DEFINED__
 typedef interface IRpcProxyBuffer IRpcProxyBuffer;
+#ifdef __cplusplus
+interface IRpcProxyBuffer;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRpcStubBuffer_FWD_DEFINED__
 #define __IRpcStubBuffer_FWD_DEFINED__
 typedef interface IRpcStubBuffer IRpcStubBuffer;
+#ifdef __cplusplus
+interface IRpcStubBuffer;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPSFactoryBuffer_FWD_DEFINED__
 #define __IPSFactoryBuffer_FWD_DEFINED__
 typedef interface IPSFactoryBuffer IPSFactoryBuffer;
+#ifdef __cplusplus
+interface IPSFactoryBuffer;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IChannelHook_FWD_DEFINED__
 #define __IChannelHook_FWD_DEFINED__
 typedef interface IChannelHook IChannelHook;
+#ifdef __cplusplus
+interface IChannelHook;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IClientSecurity_FWD_DEFINED__
 #define __IClientSecurity_FWD_DEFINED__
 typedef interface IClientSecurity IClientSecurity;
+#ifdef __cplusplus
+interface IClientSecurity;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IServerSecurity_FWD_DEFINED__
 #define __IServerSecurity_FWD_DEFINED__
 typedef interface IServerSecurity IServerSecurity;
+#ifdef __cplusplus
+interface IServerSecurity;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRpcOptions_FWD_DEFINED__
 #define __IRpcOptions_FWD_DEFINED__
 typedef interface IRpcOptions IRpcOptions;
+#ifdef __cplusplus
+interface IRpcOptions;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IGlobalOptions_FWD_DEFINED__
 #define __IGlobalOptions_FWD_DEFINED__
 typedef interface IGlobalOptions IGlobalOptions;
+#ifdef __cplusplus
+interface IGlobalOptions;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISurrogate_FWD_DEFINED__
 #define __ISurrogate_FWD_DEFINED__
 typedef interface ISurrogate ISurrogate;
+#ifdef __cplusplus
+interface ISurrogate;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IGlobalInterfaceTable_FWD_DEFINED__
 #define __IGlobalInterfaceTable_FWD_DEFINED__
 typedef interface IGlobalInterfaceTable IGlobalInterfaceTable;
+#ifdef __cplusplus
+interface IGlobalInterfaceTable;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISynchronize_FWD_DEFINED__
 #define __ISynchronize_FWD_DEFINED__
 typedef interface ISynchronize ISynchronize;
+#ifdef __cplusplus
+interface ISynchronize;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISynchronizeHandle_FWD_DEFINED__
 #define __ISynchronizeHandle_FWD_DEFINED__
 typedef interface ISynchronizeHandle ISynchronizeHandle;
+#ifdef __cplusplus
+interface ISynchronizeHandle;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISynchronizeEvent_FWD_DEFINED__
 #define __ISynchronizeEvent_FWD_DEFINED__
 typedef interface ISynchronizeEvent ISynchronizeEvent;
+#ifdef __cplusplus
+interface ISynchronizeEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISynchronizeContainer_FWD_DEFINED__
 #define __ISynchronizeContainer_FWD_DEFINED__
 typedef interface ISynchronizeContainer ISynchronizeContainer;
+#ifdef __cplusplus
+interface ISynchronizeContainer;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISynchronizeMutex_FWD_DEFINED__
 #define __ISynchronizeMutex_FWD_DEFINED__
 typedef interface ISynchronizeMutex ISynchronizeMutex;
+#ifdef __cplusplus
+interface ISynchronizeMutex;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ICancelMethodCalls_FWD_DEFINED__
 #define __ICancelMethodCalls_FWD_DEFINED__
 typedef interface ICancelMethodCalls ICancelMethodCalls;
+#ifdef __cplusplus
+interface ICancelMethodCalls;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAsyncManager_FWD_DEFINED__
 #define __IAsyncManager_FWD_DEFINED__
 typedef interface IAsyncManager IAsyncManager;
+#ifdef __cplusplus
+interface IAsyncManager;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ICallFactory_FWD_DEFINED__
 #define __ICallFactory_FWD_DEFINED__
 typedef interface ICallFactory ICallFactory;
+#ifdef __cplusplus
+interface ICallFactory;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRpcHelper_FWD_DEFINED__
 #define __IRpcHelper_FWD_DEFINED__
 typedef interface IRpcHelper IRpcHelper;
+#ifdef __cplusplus
+interface IRpcHelper;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IReleaseMarshalBuffers_FWD_DEFINED__
 #define __IReleaseMarshalBuffers_FWD_DEFINED__
 typedef interface IReleaseMarshalBuffers IReleaseMarshalBuffers;
+#ifdef __cplusplus
+interface IReleaseMarshalBuffers;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IWaitMultiple_FWD_DEFINED__
 #define __IWaitMultiple_FWD_DEFINED__
 typedef interface IWaitMultiple IWaitMultiple;
+#ifdef __cplusplus
+interface IWaitMultiple;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAddrTrackingControl_FWD_DEFINED__
 #define __IAddrTrackingControl_FWD_DEFINED__
 typedef interface IAddrTrackingControl IAddrTrackingControl;
+#ifdef __cplusplus
+interface IAddrTrackingControl;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAddrExclusionControl_FWD_DEFINED__
 #define __IAddrExclusionControl_FWD_DEFINED__
 typedef interface IAddrExclusionControl IAddrExclusionControl;
+#ifdef __cplusplus
+interface IAddrExclusionControl;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPipeByte_FWD_DEFINED__
 #define __IPipeByte_FWD_DEFINED__
 typedef interface IPipeByte IPipeByte;
+#ifdef __cplusplus
+interface IPipeByte;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPipeLong_FWD_DEFINED__
 #define __IPipeLong_FWD_DEFINED__
 typedef interface IPipeLong IPipeLong;
+#ifdef __cplusplus
+interface IPipeLong;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPipeDouble_FWD_DEFINED__
 #define __IPipeDouble_FWD_DEFINED__
 typedef interface IPipeDouble IPipeDouble;
+#ifdef __cplusplus
+interface IPipeDouble;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumContextProps_FWD_DEFINED__
 #define __IEnumContextProps_FWD_DEFINED__
 typedef interface IEnumContextProps IEnumContextProps;
+#ifdef __cplusplus
+interface IEnumContextProps;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IContext_FWD_DEFINED__
 #define __IContext_FWD_DEFINED__
 typedef interface IContext IContext;
+#ifdef __cplusplus
+interface IContext;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComThreadingInfo_FWD_DEFINED__
 #define __IComThreadingInfo_FWD_DEFINED__
 typedef interface IComThreadingInfo IComThreadingInfo;
+#ifdef __cplusplus
+interface IComThreadingInfo;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IProcessInitControl_FWD_DEFINED__
 #define __IProcessInitControl_FWD_DEFINED__
 typedef interface IProcessInitControl IProcessInitControl;
+#ifdef __cplusplus
+interface IProcessInitControl;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IFastRundown_FWD_DEFINED__
 #define __IFastRundown_FWD_DEFINED__
 typedef interface IFastRundown IFastRundown;
+#ifdef __cplusplus
+interface IFastRundown;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMarshalingStream_FWD_DEFINED__
 #define __IMarshalingStream_FWD_DEFINED__
 typedef interface IMarshalingStream IMarshalingStream;
+#ifdef __cplusplus
+interface IMarshalingStream;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMallocSpy_FWD_DEFINED__
 #define __IMallocSpy_FWD_DEFINED__
 typedef interface IMallocSpy IMallocSpy;
+#ifdef __cplusplus
+interface IMallocSpy;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBindCtx_FWD_DEFINED__
 #define __IBindCtx_FWD_DEFINED__
 typedef interface IBindCtx IBindCtx;
+#ifdef __cplusplus
+interface IBindCtx;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumMoniker_FWD_DEFINED__
 #define __IEnumMoniker_FWD_DEFINED__
 typedef interface IEnumMoniker IEnumMoniker;
+#ifdef __cplusplus
+interface IEnumMoniker;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRunnableObject_FWD_DEFINED__
 #define __IRunnableObject_FWD_DEFINED__
 typedef interface IRunnableObject IRunnableObject;
+#ifdef __cplusplus
+interface IRunnableObject;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRunningObjectTable_FWD_DEFINED__
 #define __IRunningObjectTable_FWD_DEFINED__
 typedef interface IRunningObjectTable IRunningObjectTable;
+#ifdef __cplusplus
+interface IRunningObjectTable;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPersist_FWD_DEFINED__
 #define __IPersist_FWD_DEFINED__
 typedef interface IPersist IPersist;
+#ifdef __cplusplus
+interface IPersist;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPersistStream_FWD_DEFINED__
 #define __IPersistStream_FWD_DEFINED__
 typedef interface IPersistStream IPersistStream;
+#ifdef __cplusplus
+interface IPersistStream;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMoniker_FWD_DEFINED__
 #define __IMoniker_FWD_DEFINED__
 typedef interface IMoniker IMoniker;
+#ifdef __cplusplus
+interface IMoniker;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IROTData_FWD_DEFINED__
 #define __IROTData_FWD_DEFINED__
 typedef interface IROTData IROTData;
+#ifdef __cplusplus
+interface IROTData;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumSTATSTG_FWD_DEFINED__
 #define __IEnumSTATSTG_FWD_DEFINED__
 typedef interface IEnumSTATSTG IEnumSTATSTG;
+#ifdef __cplusplus
+interface IEnumSTATSTG;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IStorage_FWD_DEFINED__
 #define __IStorage_FWD_DEFINED__
 typedef interface IStorage IStorage;
+#ifdef __cplusplus
+interface IStorage;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPersistFile_FWD_DEFINED__
 #define __IPersistFile_FWD_DEFINED__
 typedef interface IPersistFile IPersistFile;
+#ifdef __cplusplus
+interface IPersistFile;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPersistStorage_FWD_DEFINED__
 #define __IPersistStorage_FWD_DEFINED__
 typedef interface IPersistStorage IPersistStorage;
+#ifdef __cplusplus
+interface IPersistStorage;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ILockBytes_FWD_DEFINED__
 #define __ILockBytes_FWD_DEFINED__
 typedef interface ILockBytes ILockBytes;
+#ifdef __cplusplus
+interface ILockBytes;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumFORMATETC_FWD_DEFINED__
 #define __IEnumFORMATETC_FWD_DEFINED__
 typedef interface IEnumFORMATETC IEnumFORMATETC;
+#ifdef __cplusplus
+interface IEnumFORMATETC;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumSTATDATA_FWD_DEFINED__
 #define __IEnumSTATDATA_FWD_DEFINED__
 typedef interface IEnumSTATDATA IEnumSTATDATA;
+#ifdef __cplusplus
+interface IEnumSTATDATA;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRootStorage_FWD_DEFINED__
 #define __IRootStorage_FWD_DEFINED__
 typedef interface IRootStorage IRootStorage;
+#ifdef __cplusplus
+interface IRootStorage;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAdviseSink_FWD_DEFINED__
 #define __IAdviseSink_FWD_DEFINED__
 typedef interface IAdviseSink IAdviseSink;
+#ifdef __cplusplus
+interface IAdviseSink;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __AsyncIAdviseSink_FWD_DEFINED__
 #define __AsyncIAdviseSink_FWD_DEFINED__
 typedef interface AsyncIAdviseSink AsyncIAdviseSink;
+#ifdef __cplusplus
+interface AsyncIAdviseSink;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAdviseSink2_FWD_DEFINED__
 #define __IAdviseSink2_FWD_DEFINED__
 typedef interface IAdviseSink2 IAdviseSink2;
+#ifdef __cplusplus
+interface IAdviseSink2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __AsyncIAdviseSink2_FWD_DEFINED__
 #define __AsyncIAdviseSink2_FWD_DEFINED__
 typedef interface AsyncIAdviseSink2 AsyncIAdviseSink2;
+#ifdef __cplusplus
+interface AsyncIAdviseSink2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDataObject_FWD_DEFINED__
 #define __IDataObject_FWD_DEFINED__
 typedef interface IDataObject IDataObject;
+#ifdef __cplusplus
+interface IDataObject;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDataAdviseHolder_FWD_DEFINED__
 #define __IDataAdviseHolder_FWD_DEFINED__
 typedef interface IDataAdviseHolder IDataAdviseHolder;
+#ifdef __cplusplus
+interface IDataAdviseHolder;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMessageFilter_FWD_DEFINED__
 #define __IMessageFilter_FWD_DEFINED__
 typedef interface IMessageFilter IMessageFilter;
+#ifdef __cplusplus
+interface IMessageFilter;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IClassActivator_FWD_DEFINED__
 #define __IClassActivator_FWD_DEFINED__
 typedef interface IClassActivator IClassActivator;
+#ifdef __cplusplus
+interface IClassActivator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IFillLockBytes_FWD_DEFINED__
 #define __IFillLockBytes_FWD_DEFINED__
 typedef interface IFillLockBytes IFillLockBytes;
+#ifdef __cplusplus
+interface IFillLockBytes;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IProgressNotify_FWD_DEFINED__
 #define __IProgressNotify_FWD_DEFINED__
 typedef interface IProgressNotify IProgressNotify;
+#ifdef __cplusplus
+interface IProgressNotify;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ILayoutStorage_FWD_DEFINED__
 #define __ILayoutStorage_FWD_DEFINED__
 typedef interface ILayoutStorage ILayoutStorage;
+#ifdef __cplusplus
+interface ILayoutStorage;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBlockingLock_FWD_DEFINED__
 #define __IBlockingLock_FWD_DEFINED__
 typedef interface IBlockingLock IBlockingLock;
+#ifdef __cplusplus
+interface IBlockingLock;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITimeAndNoticeControl_FWD_DEFINED__
 #define __ITimeAndNoticeControl_FWD_DEFINED__
 typedef interface ITimeAndNoticeControl ITimeAndNoticeControl;
+#ifdef __cplusplus
+interface ITimeAndNoticeControl;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IOplockStorage_FWD_DEFINED__
 #define __IOplockStorage_FWD_DEFINED__
 typedef interface IOplockStorage IOplockStorage;
+#ifdef __cplusplus
+interface IOplockStorage;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDirectWriterLock_FWD_DEFINED__
 #define __IDirectWriterLock_FWD_DEFINED__
 typedef interface IDirectWriterLock IDirectWriterLock;
+#ifdef __cplusplus
+interface IDirectWriterLock;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IUrlMon_FWD_DEFINED__
 #define __IUrlMon_FWD_DEFINED__
 typedef interface IUrlMon IUrlMon;
+#ifdef __cplusplus
+interface IUrlMon;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IForegroundTransfer_FWD_DEFINED__
 #define __IForegroundTransfer_FWD_DEFINED__
 typedef interface IForegroundTransfer IForegroundTransfer;
+#ifdef __cplusplus
+interface IForegroundTransfer;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IThumbnailExtractor_FWD_DEFINED__
 #define __IThumbnailExtractor_FWD_DEFINED__
 typedef interface IThumbnailExtractor IThumbnailExtractor;
+#ifdef __cplusplus
+interface IThumbnailExtractor;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDummyHICONIncluder_FWD_DEFINED__
 #define __IDummyHICONIncluder_FWD_DEFINED__
 typedef interface IDummyHICONIncluder IDummyHICONIncluder;
+#ifdef __cplusplus
+interface IDummyHICONIncluder;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IProcessLock_FWD_DEFINED__
 #define __IProcessLock_FWD_DEFINED__
 typedef interface IProcessLock IProcessLock;
+#ifdef __cplusplus
+interface IProcessLock;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISurrogateService_FWD_DEFINED__
 #define __ISurrogateService_FWD_DEFINED__
 typedef interface ISurrogateService ISurrogateService;
+#ifdef __cplusplus
+interface ISurrogateService;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IInitializeSpy_FWD_DEFINED__
 #define __IInitializeSpy_FWD_DEFINED__
 typedef interface IInitializeSpy IInitializeSpy;
+#ifdef __cplusplus
+interface IInitializeSpy;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IApartmentShutdown_FWD_DEFINED__
 #define __IApartmentShutdown_FWD_DEFINED__
 typedef interface IApartmentShutdown IApartmentShutdown;
+#ifdef __cplusplus
+interface IApartmentShutdown;
+#endif /* __cplusplus */
 #endif
 
 /* Headers for imported files */
@@ -521,21 +803,25 @@
 #ifndef __IStream_FWD_DEFINED__
 #define __IStream_FWD_DEFINED__
 typedef interface IStream IStream;
+#ifdef __cplusplus
+interface IStream;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumString_FWD_DEFINED__
 #define __IEnumString_FWD_DEFINED__
 typedef interface IEnumString IEnumString;
+#ifdef __cplusplus
+interface IEnumString;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMultiQI_FWD_DEFINED__
 #define __IMultiQI_FWD_DEFINED__
 typedef interface IMultiQI IMultiQI;
-#endif
-
-#ifndef __AsyncIMultiQI_FWD_DEFINED__
-#define __AsyncIMultiQI_FWD_DEFINED__
-typedef interface AsyncIMultiQI AsyncIMultiQI;
+#ifdef __cplusplus
+interface IMultiQI;
+#endif /* __cplusplus */
 #endif
 
 #endif
@@ -544,16 +830,25 @@
 #ifndef __IAsyncManager_FWD_DEFINED__
 #define __IAsyncManager_FWD_DEFINED__
 typedef interface IAsyncManager IAsyncManager;
+#ifdef __cplusplus
+interface IAsyncManager;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ICallFactory_FWD_DEFINED__
 #define __ICallFactory_FWD_DEFINED__
 typedef interface ICallFactory ICallFactory;
+#ifdef __cplusplus
+interface ICallFactory;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ISynchronize_FWD_DEFINED__
 #define __ISynchronize_FWD_DEFINED__
 typedef interface ISynchronize ISynchronize;
+#ifdef __cplusplus
+interface ISynchronize;
+#endif /* __cplusplus */
 #endif
 
 #endif
@@ -623,19 +918,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMarshal* This,
+        IMarshal *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMarshal* This);
+        IMarshal *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMarshal* This);
+        IMarshal *This);
 
     /*** IMarshal methods ***/
     HRESULT (STDMETHODCALLTYPE *GetUnmarshalClass)(
-        IMarshal* This,
+        IMarshal *This,
         REFIID riid,
         void *pv,
         DWORD dwDestContext,
@@ -644,7 +939,7 @@
         CLSID *pCid);
 
     HRESULT (STDMETHODCALLTYPE *GetMarshalSizeMax)(
-        IMarshal* This,
+        IMarshal *This,
         REFIID riid,
         void *pv,
         DWORD dwDestContext,
@@ -653,7 +948,7 @@
         DWORD *pSize);
 
     HRESULT (STDMETHODCALLTYPE *MarshalInterface)(
-        IMarshal* This,
+        IMarshal *This,
         IStream *pStm,
         REFIID riid,
         void *pv,
@@ -662,21 +957,22 @@
         DWORD mshlflags);
 
     HRESULT (STDMETHODCALLTYPE *UnmarshalInterface)(
-        IMarshal* This,
+        IMarshal *This,
         IStream *pStm,
         REFIID riid,
         void **ppv);
 
     HRESULT (STDMETHODCALLTYPE *ReleaseMarshalData)(
-        IMarshal* This,
+        IMarshal *This,
         IStream *pStm);
 
     HRESULT (STDMETHODCALLTYPE *DisconnectObject)(
-        IMarshal* This,
+        IMarshal *This,
         DWORD dwReserved);
 
     END_INTERFACE
 } IMarshalVtbl;
+
 interface IMarshal {
     CONST_VTBL IMarshalVtbl* lpVtbl;
 };
@@ -754,18 +1050,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        INoMarshal* This,
+        INoMarshal *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        INoMarshal* This);
+        INoMarshal *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        INoMarshal* This);
+        INoMarshal *This);
 
     END_INTERFACE
 } INoMarshalVtbl;
+
 interface INoMarshal {
     CONST_VTBL INoMarshalVtbl* lpVtbl;
 };
@@ -817,18 +1114,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAgileObject* This,
+        IAgileObject *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAgileObject* This);
+        IAgileObject *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAgileObject* This);
+        IAgileObject *This);
 
     END_INTERFACE
 } IAgileObjectVtbl;
+
 interface IAgileObject {
     CONST_VTBL IAgileObjectVtbl* lpVtbl;
 };
@@ -858,6 +1156,85 @@
 
 #endif  /* __IAgileObject_INTERFACE_DEFINED__ */
 
+/*****************************************************************************
+ * IAgileReference interface
+ */
+#ifndef __IAgileReference_INTERFACE_DEFINED__
+#define __IAgileReference_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAgileReference, 0xc03f6a43, 0x65a4, 0x9818, 0x98,0x7e, 0xe0,0xb8,0x10,0xd2,0xa6,0xf2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("c03f6a43-65a4-9818-987e-e0b810d2a6f2")
+IAgileReference : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Resolve(
+        REFIID riid,
+        void **ppv) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAgileReference, 0xc03f6a43, 0x65a4, 0x9818, 0x98,0x7e, 0xe0,0xb8,0x10,0xd2,0xa6,0xf2)
+#endif
+#else
+typedef struct IAgileReferenceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IAgileReference *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IAgileReference *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IAgileReference *This);
+
+    /*** IAgileReference methods ***/
+    HRESULT (STDMETHODCALLTYPE *Resolve)(
+        IAgileReference *This,
+        REFIID riid,
+        void **ppv);
+
+    END_INTERFACE
+} IAgileReferenceVtbl;
+
+interface IAgileReference {
+    CONST_VTBL IAgileReferenceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAgileReference_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAgileReference_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAgileReference_Release(This) (This)->lpVtbl->Release(This)
+/*** IAgileReference methods ***/
+#define IAgileReference_Resolve(This,riid,ppv) (This)->lpVtbl->Resolve(This,riid,ppv)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAgileReference_QueryInterface(IAgileReference* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAgileReference_AddRef(IAgileReference* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAgileReference_Release(IAgileReference* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IAgileReference methods ***/
+static FORCEINLINE HRESULT IAgileReference_Resolve(IAgileReference* This,REFIID riid,void **ppv) {
+    return This->lpVtbl->Resolve(This,riid,ppv);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IAgileReference_INTERFACE_DEFINED__ */
+
 #endif
 
 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
@@ -883,19 +1260,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMarshal2* This,
+        IMarshal2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMarshal2* This);
+        IMarshal2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMarshal2* This);
+        IMarshal2 *This);
 
     /*** IMarshal methods ***/
     HRESULT (STDMETHODCALLTYPE *GetUnmarshalClass)(
-        IMarshal2* This,
+        IMarshal2 *This,
         REFIID riid,
         void *pv,
         DWORD dwDestContext,
@@ -904,7 +1281,7 @@
         CLSID *pCid);
 
     HRESULT (STDMETHODCALLTYPE *GetMarshalSizeMax)(
-        IMarshal2* This,
+        IMarshal2 *This,
         REFIID riid,
         void *pv,
         DWORD dwDestContext,
@@ -913,7 +1290,7 @@
         DWORD *pSize);
 
     HRESULT (STDMETHODCALLTYPE *MarshalInterface)(
-        IMarshal2* This,
+        IMarshal2 *This,
         IStream *pStm,
         REFIID riid,
         void *pv,
@@ -922,21 +1299,22 @@
         DWORD mshlflags);
 
     HRESULT (STDMETHODCALLTYPE *UnmarshalInterface)(
-        IMarshal2* This,
+        IMarshal2 *This,
         IStream *pStm,
         REFIID riid,
         void **ppv);
 
     HRESULT (STDMETHODCALLTYPE *ReleaseMarshalData)(
-        IMarshal2* This,
+        IMarshal2 *This,
         IStream *pStm);
 
     HRESULT (STDMETHODCALLTYPE *DisconnectObject)(
-        IMarshal2* This,
+        IMarshal2 *This,
         DWORD dwReserved);
 
     END_INTERFACE
 } IMarshal2Vtbl;
+
 interface IMarshal2 {
     CONST_VTBL IMarshal2Vtbl* lpVtbl;
 };
@@ -1035,43 +1413,44 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMalloc* This,
+        IMalloc *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMalloc* This);
+        IMalloc *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMalloc* This);
+        IMalloc *This);
 
     /*** IMalloc methods ***/
     void * (STDMETHODCALLTYPE *Alloc)(
-        IMalloc* This,
+        IMalloc *This,
         SIZE_T cb);
 
     void * (STDMETHODCALLTYPE *Realloc)(
-        IMalloc* This,
+        IMalloc *This,
         void *pv,
         SIZE_T cb);
 
     void (STDMETHODCALLTYPE *Free)(
-        IMalloc* This,
+        IMalloc *This,
         void *pv);
 
     SIZE_T (STDMETHODCALLTYPE *GetSize)(
-        IMalloc* This,
+        IMalloc *This,
         void *pv);
 
     int (STDMETHODCALLTYPE *DidAlloc)(
-        IMalloc* This,
+        IMalloc *This,
         void *pv);
 
     void (STDMETHODCALLTYPE *HeapMinimize)(
-        IMalloc* This);
+        IMalloc *This);
 
     END_INTERFACE
 } IMallocVtbl;
+
 interface IMalloc {
     CONST_VTBL IMallocVtbl* lpVtbl;
 };
@@ -1156,25 +1535,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IStdMarshalInfo* This,
+        IStdMarshalInfo *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IStdMarshalInfo* This);
+        IStdMarshalInfo *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IStdMarshalInfo* This);
+        IStdMarshalInfo *This);
 
     /*** IStdMarshalInfo methods ***/
     HRESULT (STDMETHODCALLTYPE *GetClassForHandler)(
-        IStdMarshalInfo* This,
+        IStdMarshalInfo *This,
         DWORD dwDestContext,
         void *pvDestContext,
         CLSID *pClsid);
 
     END_INTERFACE
 } IStdMarshalInfoVtbl;
+
 interface IStdMarshalInfo {
     CONST_VTBL IStdMarshalInfoVtbl* lpVtbl;
 };
@@ -1249,30 +1629,31 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IExternalConnection* This,
+        IExternalConnection *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IExternalConnection* This);
+        IExternalConnection *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IExternalConnection* This);
+        IExternalConnection *This);
 
     /*** IExternalConnection methods ***/
     DWORD (STDMETHODCALLTYPE *AddConnection)(
-        IExternalConnection* This,
+        IExternalConnection *This,
         DWORD extconn,
         DWORD reserved);
 
     DWORD (STDMETHODCALLTYPE *ReleaseConnection)(
-        IExternalConnection* This,
+        IExternalConnection *This,
         DWORD extconn,
         DWORD reserved,
         WINBOOL fLastReleaseCloses);
 
     END_INTERFACE
 } IExternalConnectionVtbl;
+
 interface IExternalConnection {
     CONST_VTBL IExternalConnectionVtbl* lpVtbl;
 };
@@ -1348,24 +1729,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMultiQI* This,
+        IMultiQI *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMultiQI* This);
+        IMultiQI *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMultiQI* This);
+        IMultiQI *This);
 
     /*** IMultiQI methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryMultipleInterfaces)(
-        IMultiQI* This,
+        IMultiQI *This,
         ULONG cMQIs,
         MULTI_QI *pMQIs);
 
     END_INTERFACE
 } IMultiQIVtbl;
+
 interface IMultiQI {
     CONST_VTBL IMultiQIVtbl* lpVtbl;
 };
@@ -1412,7 +1794,7 @@
 MIDL_INTERFACE("000e0020-0000-0000-c000-000000000046")
 AsyncIMultiQI : public IUnknown
 {
-    virtual void STDMETHODCALLTYPE Begin_QueryMultipleInterfaces(
+    virtual HRESULT STDMETHODCALLTYPE Begin_QueryMultipleInterfaces(
         ULONG cMQIs,
         MULTI_QI *pMQIs) = 0;
 
@@ -1429,28 +1811,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        AsyncIMultiQI* This,
+        AsyncIMultiQI *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        AsyncIMultiQI* This);
+        AsyncIMultiQI *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        AsyncIMultiQI* This);
+        AsyncIMultiQI *This);
 
-    /*** IMultiQI methods ***/
-    void (STDMETHODCALLTYPE *Begin_QueryMultipleInterfaces)(
-        AsyncIMultiQI* This,
+    /*** AsyncIMultiQI methods ***/
+    HRESULT (STDMETHODCALLTYPE *Begin_QueryMultipleInterfaces)(
+        AsyncIMultiQI *This,
         ULONG cMQIs,
         MULTI_QI *pMQIs);
 
     HRESULT (STDMETHODCALLTYPE *Finish_QueryMultipleInterfaces)(
-        AsyncIMultiQI* This,
+        AsyncIMultiQI *This,
         MULTI_QI *pMQIs);
 
     END_INTERFACE
 } AsyncIMultiQIVtbl;
+
 interface AsyncIMultiQI {
     CONST_VTBL AsyncIMultiQIVtbl* lpVtbl;
 };
@@ -1461,7 +1844,7 @@
 #define AsyncIMultiQI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define AsyncIMultiQI_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define AsyncIMultiQI_Release(This) (This)->lpVtbl->Release(This)
-/*** IMultiQI methods ***/
+/*** AsyncIMultiQI methods ***/
 #define AsyncIMultiQI_Begin_QueryMultipleInterfaces(This,cMQIs,pMQIs) (This)->lpVtbl->Begin_QueryMultipleInterfaces(This,cMQIs,pMQIs)
 #define AsyncIMultiQI_Finish_QueryMultipleInterfaces(This,pMQIs) (This)->lpVtbl->Finish_QueryMultipleInterfaces(This,pMQIs)
 #else
@@ -1475,12 +1858,12 @@
 static FORCEINLINE ULONG AsyncIMultiQI_Release(AsyncIMultiQI* This) {
     return This->lpVtbl->Release(This);
 }
-/*** IMultiQI methods ***/
-static FORCEINLINE void Begin_AsyncIMultiQI_QueryMultipleInterfaces(AsyncIMultiQI* This,ULONG cMQIs,MULTI_QI *pMQIs) {
-    This->lpVtbl->Begin_QueryMultipleInterfaces(This,cMQIs,pMQIs);
+/*** AsyncIMultiQI methods ***/
+static FORCEINLINE HRESULT AsyncIMultiQI_Begin_QueryMultipleInterfaces(AsyncIMultiQI* This,ULONG cMQIs,MULTI_QI *pMQIs) {
+    return This->lpVtbl->Begin_QueryMultipleInterfaces(This,cMQIs,pMQIs);
 }
-static FORCEINLINE HRESULT Finish_AsyncIMultiQI_QueryMultipleInterfaces(AsyncIMultiQI* This,MULTI_QI *pMQIs) {
-    return This->lpVtbl->Finish_QueryMultipleInterfaces(This);
+static FORCEINLINE HRESULT AsyncIMultiQI_Finish_QueryMultipleInterfaces(AsyncIMultiQI* This,MULTI_QI *pMQIs) {
+    return This->lpVtbl->Finish_QueryMultipleInterfaces(This,pMQIs);
 }
 #endif
 #endif
@@ -1518,24 +1901,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IInternalUnknown* This,
+        IInternalUnknown *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IInternalUnknown* This);
+        IInternalUnknown *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IInternalUnknown* This);
+        IInternalUnknown *This);
 
     /*** IInternalUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInternalInterface)(
-        IInternalUnknown* This,
+        IInternalUnknown *This,
         REFIID riid,
         void **ppv);
 
     END_INTERFACE
 } IInternalUnknownVtbl;
+
 interface IInternalUnknown {
     CONST_VTBL IInternalUnknownVtbl* lpVtbl;
 };
@@ -1611,36 +1995,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumUnknown* This,
+        IEnumUnknown *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumUnknown* This);
+        IEnumUnknown *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumUnknown* This);
+        IEnumUnknown *This);
 
     /*** IEnumUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumUnknown* This,
+        IEnumUnknown *This,
         ULONG celt,
         IUnknown **rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumUnknown* This,
+        IEnumUnknown *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumUnknown* This);
+        IEnumUnknown *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumUnknown* This,
+        IEnumUnknown *This,
         IEnumUnknown **ppenum);
 
     END_INTERFACE
 } IEnumUnknownVtbl;
+
 interface IEnumUnknown {
     CONST_VTBL IEnumUnknownVtbl* lpVtbl;
 };
@@ -1746,36 +2131,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumString* This,
+        IEnumString *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumString* This);
+        IEnumString *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumString* This);
+        IEnumString *This);
 
     /*** IEnumString methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumString* This,
+        IEnumString *This,
         ULONG celt,
         LPOLESTR *rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumString* This,
+        IEnumString *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumString* This);
+        IEnumString *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumString* This,
+        IEnumString *This,
         IEnumString **ppenum);
 
     END_INTERFACE
 } IEnumStringVtbl;
+
 interface IEnumString {
     CONST_VTBL IEnumStringVtbl* lpVtbl;
 };
@@ -1875,31 +2261,32 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ISequentialStream* This,
+        ISequentialStream *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ISequentialStream* This);
+        ISequentialStream *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ISequentialStream* This);
+        ISequentialStream *This);
 
     /*** ISequentialStream methods ***/
     HRESULT (STDMETHODCALLTYPE *Read)(
-        ISequentialStream* This,
+        ISequentialStream *This,
         void *pv,
         ULONG cb,
         ULONG *pcbRead);
 
     HRESULT (STDMETHODCALLTYPE *Write)(
-        ISequentialStream* This,
+        ISequentialStream *This,
         const void *pv,
         ULONG cb,
         ULONG *pcbWritten);
 
     END_INTERFACE
 } ISequentialStreamVtbl;
+
 interface ISequentialStream {
     CONST_VTBL ISequentialStreamVtbl* lpVtbl;
 };
@@ -2073,77 +2460,78 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IStream* This,
+        IStream *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IStream* This);
+        IStream *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IStream* This);
+        IStream *This);
 
     /*** ISequentialStream methods ***/
     HRESULT (STDMETHODCALLTYPE *Read)(
-        IStream* This,
+        IStream *This,
         void *pv,
         ULONG cb,
         ULONG *pcbRead);
 
     HRESULT (STDMETHODCALLTYPE *Write)(
-        IStream* This,
+        IStream *This,
         const void *pv,
         ULONG cb,
         ULONG *pcbWritten);
 
     /*** IStream methods ***/
     HRESULT (STDMETHODCALLTYPE *Seek)(
-        IStream* This,
+        IStream *This,
         LARGE_INTEGER dlibMove,
         DWORD dwOrigin,
         ULARGE_INTEGER *plibNewPosition);
 
     HRESULT (STDMETHODCALLTYPE *SetSize)(
-        IStream* This,
+        IStream *This,
         ULARGE_INTEGER libNewSize);
 
     HRESULT (STDMETHODCALLTYPE *CopyTo)(
-        IStream* This,
+        IStream *This,
         IStream *pstm,
         ULARGE_INTEGER cb,
         ULARGE_INTEGER *pcbRead,
         ULARGE_INTEGER *pcbWritten);
 
     HRESULT (STDMETHODCALLTYPE *Commit)(
-        IStream* This,
+        IStream *This,
         DWORD grfCommitFlags);
 
     HRESULT (STDMETHODCALLTYPE *Revert)(
-        IStream* This);
+        IStream *This);
 
     HRESULT (STDMETHODCALLTYPE *LockRegion)(
-        IStream* This,
+        IStream *This,
         ULARGE_INTEGER libOffset,
         ULARGE_INTEGER cb,
         DWORD dwLockType);
 
     HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
-        IStream* This,
+        IStream *This,
         ULARGE_INTEGER libOffset,
         ULARGE_INTEGER cb,
         DWORD dwLockType);
 
     HRESULT (STDMETHODCALLTYPE *Stat)(
-        IStream* This,
+        IStream *This,
         STATSTG *pstatstg,
         DWORD grfStatFlag);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IStream* This,
+        IStream *This,
         IStream **ppstm);
 
     END_INTERFACE
 } IStreamVtbl;
+
 interface IStream {
     CONST_VTBL IStreamVtbl* lpVtbl;
 };
@@ -2318,41 +2706,42 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRpcChannelBuffer* This,
+        IRpcChannelBuffer *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRpcChannelBuffer* This);
+        IRpcChannelBuffer *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRpcChannelBuffer* This);
+        IRpcChannelBuffer *This);
 
     /*** IRpcChannelBuffer methods ***/
     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
-        IRpcChannelBuffer* This,
+        IRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMessage,
         REFIID riid);
 
     HRESULT (STDMETHODCALLTYPE *SendReceive)(
-        IRpcChannelBuffer* This,
+        IRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMessage,
         ULONG *pStatus);
 
     HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
-        IRpcChannelBuffer* This,
+        IRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMessage);
 
     HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
-        IRpcChannelBuffer* This,
+        IRpcChannelBuffer *This,
         DWORD *pdwDestContext,
         void **ppvDestContext);
 
     HRESULT (STDMETHODCALLTYPE *IsConnected)(
-        IRpcChannelBuffer* This);
+        IRpcChannelBuffer *This);
 
     END_INTERFACE
 } IRpcChannelBufferVtbl;
+
 interface IRpcChannelBuffer {
     CONST_VTBL IRpcChannelBufferVtbl* lpVtbl;
 };
@@ -2431,46 +2820,47 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRpcChannelBuffer2* This,
+        IRpcChannelBuffer2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRpcChannelBuffer2* This);
+        IRpcChannelBuffer2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRpcChannelBuffer2* This);
+        IRpcChannelBuffer2 *This);
 
     /*** IRpcChannelBuffer methods ***/
     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
-        IRpcChannelBuffer2* This,
+        IRpcChannelBuffer2 *This,
         RPCOLEMESSAGE *pMessage,
         REFIID riid);
 
     HRESULT (STDMETHODCALLTYPE *SendReceive)(
-        IRpcChannelBuffer2* This,
+        IRpcChannelBuffer2 *This,
         RPCOLEMESSAGE *pMessage,
         ULONG *pStatus);
 
     HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
-        IRpcChannelBuffer2* This,
+        IRpcChannelBuffer2 *This,
         RPCOLEMESSAGE *pMessage);
 
     HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
-        IRpcChannelBuffer2* This,
+        IRpcChannelBuffer2 *This,
         DWORD *pdwDestContext,
         void **ppvDestContext);
 
     HRESULT (STDMETHODCALLTYPE *IsConnected)(
-        IRpcChannelBuffer2* This);
+        IRpcChannelBuffer2 *This);
 
     /*** IRpcChannelBuffer2 methods ***/
     HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)(
-        IRpcChannelBuffer2* This,
+        IRpcChannelBuffer2 *This,
         DWORD *pdwVersion);
 
     END_INTERFACE
 } IRpcChannelBuffer2Vtbl;
+
 interface IRpcChannelBuffer2 {
     CONST_VTBL IRpcChannelBuffer2Vtbl* lpVtbl;
 };
@@ -2564,64 +2954,65 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAsyncRpcChannelBuffer* This);
+        IAsyncRpcChannelBuffer *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAsyncRpcChannelBuffer* This);
+        IAsyncRpcChannelBuffer *This);
 
     /*** IRpcChannelBuffer methods ***/
     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMessage,
         REFIID riid);
 
     HRESULT (STDMETHODCALLTYPE *SendReceive)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMessage,
         ULONG *pStatus);
 
     HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMessage);
 
     HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         DWORD *pdwDestContext,
         void **ppvDestContext);
 
     HRESULT (STDMETHODCALLTYPE *IsConnected)(
-        IAsyncRpcChannelBuffer* This);
+        IAsyncRpcChannelBuffer *This);
 
     /*** IRpcChannelBuffer2 methods ***/
     HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         DWORD *pdwVersion);
 
     /*** IAsyncRpcChannelBuffer methods ***/
     HRESULT (STDMETHODCALLTYPE *Send)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMsg,
         ISynchronize *pSync,
         ULONG *pulStatus);
 
     HRESULT (STDMETHODCALLTYPE *Receive)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMsg,
         ULONG *pulStatus);
 
     HRESULT (STDMETHODCALLTYPE *GetDestCtxEx)(
-        IAsyncRpcChannelBuffer* This,
+        IAsyncRpcChannelBuffer *This,
         RPCOLEMESSAGE *pMsg,
         DWORD *pdwDestContext,
         void **ppvDestContext);
 
     END_INTERFACE
 } IAsyncRpcChannelBufferVtbl;
+
 interface IAsyncRpcChannelBuffer {
     CONST_VTBL IAsyncRpcChannelBufferVtbl* lpVtbl;
 };
@@ -2745,84 +3136,85 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRpcChannelBuffer3* This);
+        IRpcChannelBuffer3 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRpcChannelBuffer3* This);
+        IRpcChannelBuffer3 *This);
 
     /*** IRpcChannelBuffer methods ***/
     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMessage,
         REFIID riid);
 
     HRESULT (STDMETHODCALLTYPE *SendReceive)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMessage,
         ULONG *pStatus);
 
     HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMessage);
 
     HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         DWORD *pdwDestContext,
         void **ppvDestContext);
 
     HRESULT (STDMETHODCALLTYPE *IsConnected)(
-        IRpcChannelBuffer3* This);
+        IRpcChannelBuffer3 *This);
 
     /*** IRpcChannelBuffer2 methods ***/
     HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         DWORD *pdwVersion);
 
     /*** IRpcChannelBuffer3 methods ***/
     HRESULT (STDMETHODCALLTYPE *Send)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMsg,
         ULONG *pulStatus);
 
     HRESULT (STDMETHODCALLTYPE *Receive)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMsg,
         ULONG ulSize,
         ULONG *pulStatus);
 
     HRESULT (STDMETHODCALLTYPE *Cancel)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMsg);
 
     HRESULT (STDMETHODCALLTYPE *GetCallContext)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMsg,
         REFIID riid,
         void **pInterface);
 
     HRESULT (STDMETHODCALLTYPE *GetDestCtxEx)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMsg,
         DWORD *pdwDestContext,
         void **ppvDestContext);
 
     HRESULT (STDMETHODCALLTYPE *GetState)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMsg,
         DWORD *pState);
 
     HRESULT (STDMETHODCALLTYPE *RegisterAsync)(
-        IRpcChannelBuffer3* This,
+        IRpcChannelBuffer3 *This,
         RPCOLEMESSAGE *pMsg,
         IAsyncManager *pAsyncMgr);
 
     END_INTERFACE
 } IRpcChannelBuffer3Vtbl;
+
 interface IRpcChannelBuffer3 {
     CONST_VTBL IRpcChannelBuffer3Vtbl* lpVtbl;
 };
@@ -2935,23 +3327,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRpcSyntaxNegotiate* This,
+        IRpcSyntaxNegotiate *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRpcSyntaxNegotiate* This);
+        IRpcSyntaxNegotiate *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRpcSyntaxNegotiate* This);
+        IRpcSyntaxNegotiate *This);
 
     /*** IRpcSyntaxNegotiate methods ***/
     HRESULT (STDMETHODCALLTYPE *NegotiateSyntax)(
-        IRpcSyntaxNegotiate* This,
+        IRpcSyntaxNegotiate *This,
         RPCOLEMESSAGE *pMsg);
 
     END_INTERFACE
 } IRpcSyntaxNegotiateVtbl;
+
 interface IRpcSyntaxNegotiate {
     CONST_VTBL IRpcSyntaxNegotiateVtbl* lpVtbl;
 };
@@ -3015,26 +3408,27 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRpcProxyBuffer* This,
+        IRpcProxyBuffer *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRpcProxyBuffer* This);
+        IRpcProxyBuffer *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRpcProxyBuffer* This);
+        IRpcProxyBuffer *This);
 
     /*** IRpcProxyBuffer methods ***/
     HRESULT (STDMETHODCALLTYPE *Connect)(
-        IRpcProxyBuffer* This,
+        IRpcProxyBuffer *This,
         IRpcChannelBuffer *pRpcChannelBuffer);
 
     void (STDMETHODCALLTYPE *Disconnect)(
-        IRpcProxyBuffer* This);
+        IRpcProxyBuffer *This);
 
     END_INTERFACE
 } IRpcProxyBufferVtbl;
+
 interface IRpcProxyBuffer {
     CONST_VTBL IRpcProxyBufferVtbl* lpVtbl;
 };
@@ -3120,46 +3514,47 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRpcStubBuffer* This,
+        IRpcStubBuffer *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRpcStubBuffer* This);
+        IRpcStubBuffer *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRpcStubBuffer* This);
+        IRpcStubBuffer *This);
 
     /*** IRpcStubBuffer methods ***/
     HRESULT (STDMETHODCALLTYPE *Connect)(
-        IRpcStubBuffer* This,
+        IRpcStubBuffer *This,
         IUnknown *pUnkServer);
 
     void (STDMETHODCALLTYPE *Disconnect)(
-        IRpcStubBuffer* This);
+        IRpcStubBuffer *This);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IRpcStubBuffer* This,
+        IRpcStubBuffer *This,
         RPCOLEMESSAGE *_prpcmsg,
         IRpcChannelBuffer *_pRpcChannelBuffer);
 
     IRpcStubBuffer * (STDMETHODCALLTYPE *IsIIDSupported)(
-        IRpcStubBuffer* This,
+        IRpcStubBuffer *This,
         REFIID riid);
 
     ULONG (STDMETHODCALLTYPE *CountRefs)(
-        IRpcStubBuffer* This);
+        IRpcStubBuffer *This);
 
     HRESULT (STDMETHODCALLTYPE *DebugServerQueryInterface)(
-        IRpcStubBuffer* This,
+        IRpcStubBuffer *This,
         void **ppv);
 
     void (STDMETHODCALLTYPE *DebugServerRelease)(
-        IRpcStubBuffer* This,
+        IRpcStubBuffer *This,
         void *pv);
 
     END_INTERFACE
 } IRpcStubBufferVtbl;
+
 interface IRpcStubBuffer {
     CONST_VTBL IRpcStubBufferVtbl* lpVtbl;
 };
@@ -3252,32 +3647,33 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPSFactoryBuffer* This,
+        IPSFactoryBuffer *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPSFactoryBuffer* This);
+        IPSFactoryBuffer *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPSFactoryBuffer* This);
+        IPSFactoryBuffer *This);
 
     /*** IPSFactoryBuffer methods ***/
     HRESULT (STDMETHODCALLTYPE *CreateProxy)(
-        IPSFactoryBuffer* This,
+        IPSFactoryBuffer *This,
         IUnknown *pUnkOuter,
         REFIID riid,
         IRpcProxyBuffer **ppProxy,
         void **ppv);
 
     HRESULT (STDMETHODCALLTYPE *CreateStub)(
-        IPSFactoryBuffer* This,
+        IPSFactoryBuffer *This,
         REFIID riid,
         IUnknown *pUnkServer,
         IRpcStubBuffer **ppStub);
 
     END_INTERFACE
 } IPSFactoryBufferVtbl;
+
 interface IPSFactoryBuffer {
     CONST_VTBL IPSFactoryBufferVtbl* lpVtbl;
 };
@@ -3390,32 +3786,32 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IChannelHook* This,
+        IChannelHook *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IChannelHook* This);
+        IChannelHook *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IChannelHook* This);
+        IChannelHook *This);
 
     /*** IChannelHook methods ***/
     void (STDMETHODCALLTYPE *ClientGetSize)(
-        IChannelHook* This,
+        IChannelHook *This,
         REFGUID uExtent,
         REFIID riid,
         ULONG *pDataSize);
 
     void (STDMETHODCALLTYPE *ClientFillBuffer)(
-        IChannelHook* This,
+        IChannelHook *This,
         REFGUID uExtent,
         REFIID riid,
         ULONG *pDataSize,
         void *pDataBuffer);
 
     void (STDMETHODCALLTYPE *ClientNotify)(
-        IChannelHook* This,
+        IChannelHook *This,
         REFGUID uExtent,
         REFIID riid,
         ULONG cbDataSize,
@@ -3424,7 +3820,7 @@
         HRESULT hrFault);
 
     void (STDMETHODCALLTYPE *ServerNotify)(
-        IChannelHook* This,
+        IChannelHook *This,
         REFGUID uExtent,
         REFIID riid,
         ULONG cbDataSize,
@@ -3432,14 +3828,14 @@
         DWORD lDataRep);
 
     void (STDMETHODCALLTYPE *ServerGetSize)(
-        IChannelHook* This,
+        IChannelHook *This,
         REFGUID uExtent,
         REFIID riid,
         HRESULT hrFault,
         ULONG *pDataSize);
 
     void (STDMETHODCALLTYPE *ServerFillBuffer)(
-        IChannelHook* This,
+        IChannelHook *This,
         REFGUID uExtent,
         REFIID riid,
         ULONG *pDataSize,
@@ -3448,6 +3844,7 @@
 
     END_INTERFACE
 } IChannelHookVtbl;
+
 interface IChannelHook {
     CONST_VTBL IChannelHookVtbl* lpVtbl;
 };
@@ -3598,19 +3995,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IClientSecurity* This,
+        IClientSecurity *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IClientSecurity* This);
+        IClientSecurity *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IClientSecurity* This);
+        IClientSecurity *This);
 
     /*** IClientSecurity methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryBlanket)(
-        IClientSecurity* This,
+        IClientSecurity *This,
         IUnknown *pProxy,
         DWORD *pAuthnSvc,
         DWORD *pAuthzSvc,
@@ -3621,7 +4018,7 @@
         DWORD *pCapabilites);
 
     HRESULT (STDMETHODCALLTYPE *SetBlanket)(
-        IClientSecurity* This,
+        IClientSecurity *This,
         IUnknown *pProxy,
         DWORD dwAuthnSvc,
         DWORD dwAuthzSvc,
@@ -3632,12 +4029,13 @@
         DWORD dwCapabilities);
 
     HRESULT (STDMETHODCALLTYPE *CopyProxy)(
-        IClientSecurity* This,
+        IClientSecurity *This,
         IUnknown *pProxy,
         IUnknown **ppCopy);
 
     END_INTERFACE
 } IClientSecurityVtbl;
+
 interface IClientSecurity {
     CONST_VTBL IClientSecurityVtbl* lpVtbl;
 };
@@ -3723,19 +4121,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IServerSecurity* This,
+        IServerSecurity *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IServerSecurity* This);
+        IServerSecurity *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IServerSecurity* This);
+        IServerSecurity *This);
 
     /*** IServerSecurity methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryBlanket)(
-        IServerSecurity* This,
+        IServerSecurity *This,
         DWORD *pAuthnSvc,
         DWORD *pAuthzSvc,
         OLECHAR **pServerPrincName,
@@ -3745,16 +4143,17 @@
         DWORD *pCapabilities);
 
     HRESULT (STDMETHODCALLTYPE *ImpersonateClient)(
-        IServerSecurity* This);
+        IServerSecurity *This);
 
     HRESULT (STDMETHODCALLTYPE *RevertToSelf)(
-        IServerSecurity* This);
+        IServerSecurity *This);
 
     WINBOOL (STDMETHODCALLTYPE *IsImpersonating)(
-        IServerSecurity* This);
+        IServerSecurity *This);
 
     END_INTERFACE
 } IServerSecurityVtbl;
+
 interface IServerSecurity {
     CONST_VTBL IServerSecurityVtbl* lpVtbl;
 };
@@ -3846,31 +4245,32 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRpcOptions* This,
+        IRpcOptions *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRpcOptions* This);
+        IRpcOptions *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRpcOptions* This);
+        IRpcOptions *This);
 
     /*** IRpcOptions methods ***/
     HRESULT (STDMETHODCALLTYPE *Set)(
-        IRpcOptions* This,
+        IRpcOptions *This,
         IUnknown *pPrx,
         RPCOPT_PROPERTIES dwProperty,
         ULONG_PTR dwValue);
 
     HRESULT (STDMETHODCALLTYPE *Query)(
-        IRpcOptions* This,
+        IRpcOptions *This,
         IUnknown *pPrx,
         RPCOPT_PROPERTIES dwProperty,
         ULONG_PTR *pdwValue);
 
     END_INTERFACE
 } IRpcOptionsVtbl;
+
 interface IRpcOptions {
     CONST_VTBL IRpcOptionsVtbl* lpVtbl;
 };
@@ -3979,29 +4379,30 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IGlobalOptions* This,
+        IGlobalOptions *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IGlobalOptions* This);
+        IGlobalOptions *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IGlobalOptions* This);
+        IGlobalOptions *This);
 
     /*** IGlobalOptions methods ***/
     HRESULT (STDMETHODCALLTYPE *Set)(
-        IGlobalOptions* This,
+        IGlobalOptions *This,
         GLOBALOPT_PROPERTIES dwProperty,
         ULONG_PTR dwValue);
 
     HRESULT (STDMETHODCALLTYPE *Query)(
-        IGlobalOptions* This,
+        IGlobalOptions *This,
         GLOBALOPT_PROPERTIES dwProperty,
         ULONG_PTR *pdwValue);
 
     END_INTERFACE
 } IGlobalOptionsVtbl;
+
 interface IGlobalOptions {
     CONST_VTBL IGlobalOptionsVtbl* lpVtbl;
 };
@@ -4074,26 +4475,27 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ISurrogate* This,
+        ISurrogate *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ISurrogate* This);
+        ISurrogate *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ISurrogate* This);
+        ISurrogate *This);
 
     /*** ISurrogate methods ***/
     HRESULT (STDMETHODCALLTYPE *LoadDllServer)(
-        ISurrogate* This,
+        ISurrogate *This,
         REFCLSID Clsid);
 
     HRESULT (STDMETHODCALLTYPE *FreeSurrogate)(
-        ISurrogate* This);
+        ISurrogate *This);
 
     END_INTERFACE
 } ISurrogateVtbl;
+
 interface ISurrogate {
     CONST_VTBL ISurrogateVtbl* lpVtbl;
 };
@@ -4170,35 +4572,36 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IGlobalInterfaceTable* This,
+        IGlobalInterfaceTable *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IGlobalInterfaceTable* This);
+        IGlobalInterfaceTable *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IGlobalInterfaceTable* This);
+        IGlobalInterfaceTable *This);
 
     /*** IGlobalInterfaceTable methods ***/
     HRESULT (STDMETHODCALLTYPE *RegisterInterfaceInGlobal)(
-        IGlobalInterfaceTable* This,
+        IGlobalInterfaceTable *This,
         IUnknown *pUnk,
         REFIID riid,
         DWORD *pdwCookie);
 
     HRESULT (STDMETHODCALLTYPE *RevokeInterfaceFromGlobal)(
-        IGlobalInterfaceTable* This,
+        IGlobalInterfaceTable *This,
         DWORD dwCookie);
 
     HRESULT (STDMETHODCALLTYPE *GetInterfaceFromGlobal)(
-        IGlobalInterfaceTable* This,
+        IGlobalInterfaceTable *This,
         DWORD dwCookie,
         REFIID riid,
         void **ppv);
 
     END_INTERFACE
 } IGlobalInterfaceTableVtbl;
+
 interface IGlobalInterfaceTable {
     CONST_VTBL IGlobalInterfaceTableVtbl* lpVtbl;
 };
@@ -4276,30 +4679,31 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ISynchronize* This,
+        ISynchronize *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ISynchronize* This);
+        ISynchronize *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ISynchronize* This);
+        ISynchronize *This);
 
     /*** ISynchronize methods ***/
     HRESULT (STDMETHODCALLTYPE *Wait)(
-        ISynchronize* This,
+        ISynchronize *This,
         DWORD dwFlags,
         DWORD dwMilliseconds);
 
     HRESULT (STDMETHODCALLTYPE *Signal)(
-        ISynchronize* This);
+        ISynchronize *This);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        ISynchronize* This);
+        ISynchronize *This);
 
     END_INTERFACE
 } ISynchronizeVtbl;
+
 interface ISynchronize {
     CONST_VTBL ISynchronizeVtbl* lpVtbl;
 };
@@ -4368,23 +4772,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ISynchronizeHandle* This,
+        ISynchronizeHandle *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ISynchronizeHandle* This);
+        ISynchronizeHandle *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ISynchronizeHandle* This);
+        ISynchronizeHandle *This);
 
     /*** ISynchronizeHandle methods ***/
     HRESULT (STDMETHODCALLTYPE *GetHandle)(
-        ISynchronizeHandle* This,
+        ISynchronizeHandle *This,
         HANDLE *ph);
 
     END_INTERFACE
 } ISynchronizeHandleVtbl;
+
 interface ISynchronizeHandle {
     CONST_VTBL ISynchronizeHandleVtbl* lpVtbl;
 };
@@ -4445,28 +4850,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ISynchronizeEvent* This,
+        ISynchronizeEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ISynchronizeEvent* This);
+        ISynchronizeEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ISynchronizeEvent* This);
+        ISynchronizeEvent *This);
 
     /*** ISynchronizeHandle methods ***/
     HRESULT (STDMETHODCALLTYPE *GetHandle)(
-        ISynchronizeEvent* This,
+        ISynchronizeEvent *This,
         HANDLE *ph);
 
     /*** ISynchronizeEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *SetEventHandle)(
-        ISynchronizeEvent* This,
+        ISynchronizeEvent *This,
         HANDLE *ph);
 
     END_INTERFACE
 } ISynchronizeEventVtbl;
+
 interface ISynchronizeEvent {
     CONST_VTBL ISynchronizeEventVtbl* lpVtbl;
 };
@@ -4538,29 +4944,30 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ISynchronizeContainer* This,
+        ISynchronizeContainer *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ISynchronizeContainer* This);
+        ISynchronizeContainer *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ISynchronizeContainer* This);
+        ISynchronizeContainer *This);
 
     /*** ISynchronizeContainer methods ***/
     HRESULT (STDMETHODCALLTYPE *AddSynchronize)(
-        ISynchronizeContainer* This,
+        ISynchronizeContainer *This,
         ISynchronize *pSync);
 
     HRESULT (STDMETHODCALLTYPE *WaitMultiple)(
-        ISynchronizeContainer* This,
+        ISynchronizeContainer *This,
         DWORD dwFlags,
         DWORD dwTimeOut,
         ISynchronize **ppSync);
 
     END_INTERFACE
 } ISynchronizeContainerVtbl;
+
 interface ISynchronizeContainer {
     CONST_VTBL ISynchronizeContainerVtbl* lpVtbl;
 };
@@ -4625,34 +5032,35 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ISynchronizeMutex* This,
+        ISynchronizeMutex *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ISynchronizeMutex* This);
+        ISynchronizeMutex *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ISynchronizeMutex* This);
+        ISynchronizeMutex *This);
 
     /*** ISynchronize methods ***/
     HRESULT (STDMETHODCALLTYPE *Wait)(
-        ISynchronizeMutex* This,
+        ISynchronizeMutex *This,
         DWORD dwFlags,
         DWORD dwMilliseconds);
 
     HRESULT (STDMETHODCALLTYPE *Signal)(
-        ISynchronizeMutex* This);
+        ISynchronizeMutex *This);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        ISynchronizeMutex* This);
+        ISynchronizeMutex *This);
 
     /*** ISynchronizeMutex methods ***/
     HRESULT (STDMETHODCALLTYPE *ReleaseMutex)(
-        ISynchronizeMutex* This);
+        ISynchronizeMutex *This);
 
     END_INTERFACE
 } ISynchronizeMutexVtbl;
+
 interface ISynchronizeMutex {
     CONST_VTBL ISynchronizeMutexVtbl* lpVtbl;
 };
@@ -4732,26 +5140,27 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ICancelMethodCalls* This,
+        ICancelMethodCalls *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ICancelMethodCalls* This);
+        ICancelMethodCalls *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ICancelMethodCalls* This);
+        ICancelMethodCalls *This);
 
     /*** ICancelMethodCalls methods ***/
     HRESULT (STDMETHODCALLTYPE *Cancel)(
-        ICancelMethodCalls* This,
+        ICancelMethodCalls *This,
         ULONG ulSeconds);
 
     HRESULT (STDMETHODCALLTYPE *TestCancel)(
-        ICancelMethodCalls* This);
+        ICancelMethodCalls *This);
 
     END_INTERFACE
 } ICancelMethodCallsVtbl;
+
 interface ICancelMethodCalls {
     CONST_VTBL ICancelMethodCallsVtbl* lpVtbl;
 };
@@ -4829,32 +5238,33 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAsyncManager* This,
+        IAsyncManager *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAsyncManager* This);
+        IAsyncManager *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAsyncManager* This);
+        IAsyncManager *This);
 
     /*** IAsyncManager methods ***/
     HRESULT (STDMETHODCALLTYPE *CompleteCall)(
-        IAsyncManager* This,
+        IAsyncManager *This,
         HRESULT Result);
 
     HRESULT (STDMETHODCALLTYPE *GetCallContext)(
-        IAsyncManager* This,
+        IAsyncManager *This,
         REFIID riid,
         void **pInterface);
 
     HRESULT (STDMETHODCALLTYPE *GetState)(
-        IAsyncManager* This,
+        IAsyncManager *This,
         ULONG *pulStateFlags);
 
     END_INTERFACE
 } IAsyncManagerVtbl;
+
 interface IAsyncManager {
     CONST_VTBL IAsyncManagerVtbl* lpVtbl;
 };
@@ -4926,19 +5336,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ICallFactory* This,
+        ICallFactory *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ICallFactory* This);
+        ICallFactory *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ICallFactory* This);
+        ICallFactory *This);
 
     /*** ICallFactory methods ***/
     HRESULT (STDMETHODCALLTYPE *CreateCall)(
-        ICallFactory* This,
+        ICallFactory *This,
         REFIID riid,
         IUnknown *pCtrlUnk,
         REFIID riid2,
@@ -4946,6 +5356,7 @@
 
     END_INTERFACE
 } ICallFactoryVtbl;
+
 interface ICallFactory {
     CONST_VTBL ICallFactoryVtbl* lpVtbl;
 };
@@ -5010,28 +5421,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRpcHelper* This,
+        IRpcHelper *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRpcHelper* This);
+        IRpcHelper *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRpcHelper* This);
+        IRpcHelper *This);
 
     /*** IRpcHelper methods ***/
     HRESULT (STDMETHODCALLTYPE *GetDCOMProtocolVersion)(
-        IRpcHelper* This,
+        IRpcHelper *This,
         DWORD *pComVersion);
 
     HRESULT (STDMETHODCALLTYPE *GetIIDFromOBJREF)(
-        IRpcHelper* This,
+        IRpcHelper *This,
         void *pObjRef,
         IID **piid);
 
     END_INTERFACE
 } IRpcHelperVtbl;
+
 interface IRpcHelper {
     CONST_VTBL IRpcHelperVtbl* lpVtbl;
 };
@@ -5098,25 +5510,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IReleaseMarshalBuffers* This,
+        IReleaseMarshalBuffers *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IReleaseMarshalBuffers* This);
+        IReleaseMarshalBuffers *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IReleaseMarshalBuffers* This);
+        IReleaseMarshalBuffers *This);
 
     /*** IReleaseMarshalBuffers methods ***/
     HRESULT (STDMETHODCALLTYPE *ReleaseMarshalBuffer)(
-        IReleaseMarshalBuffers* This,
+        IReleaseMarshalBuffers *This,
         RPCOLEMESSAGE *pMsg,
         DWORD dwFlags,
         IUnknown *pChnl);
 
     END_INTERFACE
 } IReleaseMarshalBuffersVtbl;
+
 interface IReleaseMarshalBuffers {
     CONST_VTBL IReleaseMarshalBuffersVtbl* lpVtbl;
 };
@@ -5181,28 +5594,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IWaitMultiple* This,
+        IWaitMultiple *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IWaitMultiple* This);
+        IWaitMultiple *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IWaitMultiple* This);
+        IWaitMultiple *This);
 
     /*** IWaitMultiple methods ***/
     HRESULT (STDMETHODCALLTYPE *WaitMultiple)(
-        IWaitMultiple* This,
+        IWaitMultiple *This,
         DWORD timeout,
         ISynchronize **pSync);
 
     HRESULT (STDMETHODCALLTYPE *AddSynchronize)(
-        IWaitMultiple* This,
+        IWaitMultiple *This,
         ISynchronize *pSync);
 
     END_INTERFACE
 } IWaitMultipleVtbl;
+
 interface IWaitMultiple {
     CONST_VTBL IWaitMultipleVtbl* lpVtbl;
 };
@@ -5271,25 +5685,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAddrTrackingControl* This,
+        IAddrTrackingControl *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAddrTrackingControl* This);
+        IAddrTrackingControl *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAddrTrackingControl* This);
+        IAddrTrackingControl *This);
 
     /*** IAddrTrackingControl methods ***/
     HRESULT (STDMETHODCALLTYPE *EnableCOMDynamicAddrTracking)(
-        IAddrTrackingControl* This);
+        IAddrTrackingControl *This);
 
     HRESULT (STDMETHODCALLTYPE *DisableCOMDynamicAddrTracking)(
-        IAddrTrackingControl* This);
+        IAddrTrackingControl *This);
 
     END_INTERFACE
 } IAddrTrackingControlVtbl;
+
 interface IAddrTrackingControl {
     CONST_VTBL IAddrTrackingControlVtbl* lpVtbl;
 };
@@ -5359,28 +5774,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAddrExclusionControl* This,
+        IAddrExclusionControl *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAddrExclusionControl* This);
+        IAddrExclusionControl *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAddrExclusionControl* This);
+        IAddrExclusionControl *This);
 
     /*** IAddrExclusionControl methods ***/
     HRESULT (STDMETHODCALLTYPE *GetCurrentAddrExclusionList)(
-        IAddrExclusionControl* This,
+        IAddrExclusionControl *This,
         REFIID riid,
         void **ppEnumerator);
 
     HRESULT (STDMETHODCALLTYPE *UpdateAddrExclusionList)(
-        IAddrExclusionControl* This,
+        IAddrExclusionControl *This,
         IUnknown *pEnumerator);
 
     END_INTERFACE
 } IAddrExclusionControlVtbl;
+
 interface IAddrExclusionControl {
     CONST_VTBL IAddrExclusionControlVtbl* lpVtbl;
 };
@@ -5451,30 +5867,31 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPipeByte* This,
+        IPipeByte *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPipeByte* This);
+        IPipeByte *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPipeByte* This);
+        IPipeByte *This);
 
     /*** IPipeByte methods ***/
     HRESULT (STDMETHODCALLTYPE *Pull)(
-        IPipeByte* This,
+        IPipeByte *This,
         BYTE *buf,
         ULONG cRequest,
         ULONG *pcReturned);
 
     HRESULT (STDMETHODCALLTYPE *Push)(
-        IPipeByte* This,
+        IPipeByte *This,
         BYTE *buf,
         ULONG cSent);
 
     END_INTERFACE
 } IPipeByteVtbl;
+
 interface IPipeByte {
     CONST_VTBL IPipeByteVtbl* lpVtbl;
 };
@@ -5545,30 +5962,31 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPipeLong* This,
+        IPipeLong *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPipeLong* This);
+        IPipeLong *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPipeLong* This);
+        IPipeLong *This);
 
     /*** IPipeLong methods ***/
     HRESULT (STDMETHODCALLTYPE *Pull)(
-        IPipeLong* This,
+        IPipeLong *This,
         LONG *buf,
         ULONG cRequest,
         ULONG *pcReturned);
 
     HRESULT (STDMETHODCALLTYPE *Push)(
-        IPipeLong* This,
+        IPipeLong *This,
         LONG *buf,
         ULONG cSent);
 
     END_INTERFACE
 } IPipeLongVtbl;
+
 interface IPipeLong {
     CONST_VTBL IPipeLongVtbl* lpVtbl;
 };
@@ -5639,30 +6057,31 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPipeDouble* This,
+        IPipeDouble *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPipeDouble* This);
+        IPipeDouble *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPipeDouble* This);
+        IPipeDouble *This);
 
     /*** IPipeDouble methods ***/
     HRESULT (STDMETHODCALLTYPE *Pull)(
-        IPipeDouble* This,
+        IPipeDouble *This,
         DOUBLE *buf,
         ULONG cRequest,
         ULONG *pcReturned);
 
     HRESULT (STDMETHODCALLTYPE *Push)(
-        IPipeDouble* This,
+        IPipeDouble *This,
         DOUBLE *buf,
         ULONG cSent);
 
     END_INTERFACE
 } IPipeDoubleVtbl;
+
 interface IPipeDouble {
     CONST_VTBL IPipeDoubleVtbl* lpVtbl;
 };
@@ -5753,40 +6172,41 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumContextProps* This,
+        IEnumContextProps *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumContextProps* This);
+        IEnumContextProps *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumContextProps* This);
+        IEnumContextProps *This);
 
     /*** IEnumContextProps methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumContextProps* This,
+        IEnumContextProps *This,
         ULONG celt,
         ContextProperty *pContextProperties,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumContextProps* This,
+        IEnumContextProps *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumContextProps* This);
+        IEnumContextProps *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumContextProps* This,
+        IEnumContextProps *This,
         IEnumContextProps **ppEnumContextProps);
 
     HRESULT (STDMETHODCALLTYPE *Count)(
-        IEnumContextProps* This,
+        IEnumContextProps *This,
         ULONG *pcelt);
 
     END_INTERFACE
 } IEnumContextPropsVtbl;
+
 interface IEnumContextProps {
     CONST_VTBL IEnumContextPropsVtbl* lpVtbl;
 };
@@ -5876,39 +6296,40 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IContext* This,
+        IContext *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IContext* This);
+        IContext *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IContext* This);
+        IContext *This);
 
     /*** IContext methods ***/
     HRESULT (STDMETHODCALLTYPE *SetProperty)(
-        IContext* This,
+        IContext *This,
         REFGUID rpolicyId,
         CPFLAGS flags,
         IUnknown *pUnk);
 
     HRESULT (STDMETHODCALLTYPE *RemoveProperty)(
-        IContext* This,
+        IContext *This,
         REFGUID rPolicyId);
 
     HRESULT (STDMETHODCALLTYPE *GetProperty)(
-        IContext* This,
+        IContext *This,
         REFGUID rGuid,
         CPFLAGS *pFlags,
         IUnknown **ppUnk);
 
     HRESULT (STDMETHODCALLTYPE *EnumContextProps)(
-        IContext* This,
+        IContext *This,
         IEnumContextProps **ppEnumContextProps);
 
     END_INTERFACE
 } IContextVtbl;
+
 interface IContext {
     CONST_VTBL IContextVtbl* lpVtbl;
 };
@@ -6020,35 +6441,36 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IComThreadingInfo* This,
+        IComThreadingInfo *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IComThreadingInfo* This);
+        IComThreadingInfo *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IComThreadingInfo* This);
+        IComThreadingInfo *This);
 
     /*** IComThreadingInfo methods ***/
     HRESULT (STDMETHODCALLTYPE *GetCurrentApartmentType)(
-        IComThreadingInfo* This,
+        IComThreadingInfo *This,
         APTTYPE *pAptType);
 
     HRESULT (STDMETHODCALLTYPE *GetCurrentThreadType)(
-        IComThreadingInfo* This,
+        IComThreadingInfo *This,
         THDTYPE *pThreadType);
 
     HRESULT (STDMETHODCALLTYPE *GetCurrentLogicalThreadId)(
-        IComThreadingInfo* This,
+        IComThreadingInfo *This,
         GUID *pguidLogicalThreadId);
 
     HRESULT (STDMETHODCALLTYPE *SetCurrentLogicalThreadId)(
-        IComThreadingInfo* This,
+        IComThreadingInfo *This,
         REFGUID rguid);
 
     END_INTERFACE
 } IComThreadingInfoVtbl;
+
 interface IComThreadingInfo {
     CONST_VTBL IComThreadingInfoVtbl* lpVtbl;
 };
@@ -6121,23 +6543,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IProcessInitControl* This,
+        IProcessInitControl *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IProcessInitControl* This);
+        IProcessInitControl *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IProcessInitControl* This);
+        IProcessInitControl *This);
 
     /*** IProcessInitControl methods ***/
     HRESULT (STDMETHODCALLTYPE *ResetInitializerTimeout)(
-        IProcessInitControl* This,
+        IProcessInitControl *This,
         DWORD dwSecondsRemaining);
 
     END_INTERFACE
 } IProcessInitControlVtbl;
+
 interface IProcessInitControl {
     CONST_VTBL IProcessInitControlVtbl* lpVtbl;
 };
@@ -6195,18 +6618,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IFastRundown* This,
+        IFastRundown *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IFastRundown* This);
+        IFastRundown *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IFastRundown* This);
+        IFastRundown *This);
 
     END_INTERFACE
 } IFastRundownVtbl;
+
 interface IFastRundown {
     CONST_VTBL IFastRundownVtbl* lpVtbl;
 };
@@ -6266,83 +6690,84 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMarshalingStream* This);
+        IMarshalingStream *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMarshalingStream* This);
+        IMarshalingStream *This);
 
     /*** ISequentialStream methods ***/
     HRESULT (STDMETHODCALLTYPE *Read)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         void *pv,
         ULONG cb,
         ULONG *pcbRead);
 
     HRESULT (STDMETHODCALLTYPE *Write)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         const void *pv,
         ULONG cb,
         ULONG *pcbWritten);
 
     /*** IStream methods ***/
     HRESULT (STDMETHODCALLTYPE *Seek)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         LARGE_INTEGER dlibMove,
         DWORD dwOrigin,
         ULARGE_INTEGER *plibNewPosition);
 
     HRESULT (STDMETHODCALLTYPE *SetSize)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         ULARGE_INTEGER libNewSize);
 
     HRESULT (STDMETHODCALLTYPE *CopyTo)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         IStream *pstm,
         ULARGE_INTEGER cb,
         ULARGE_INTEGER *pcbRead,
         ULARGE_INTEGER *pcbWritten);
 
     HRESULT (STDMETHODCALLTYPE *Commit)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         DWORD grfCommitFlags);
 
     HRESULT (STDMETHODCALLTYPE *Revert)(
-        IMarshalingStream* This);
+        IMarshalingStream *This);
 
     HRESULT (STDMETHODCALLTYPE *LockRegion)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         ULARGE_INTEGER libOffset,
         ULARGE_INTEGER cb,
         DWORD dwLockType);
 
     HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         ULARGE_INTEGER libOffset,
         ULARGE_INTEGER cb,
         DWORD dwLockType);
 
     HRESULT (STDMETHODCALLTYPE *Stat)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         STATSTG *pstatstg,
         DWORD grfStatFlag);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         IStream **ppstm);
 
     /*** IMarshalingStream methods ***/
     HRESULT (STDMETHODCALLTYPE *GetMarshalingContextAttribute)(
-        IMarshalingStream* This,
+        IMarshalingStream *This,
         CO_MARSHALING_CONTEXT_ATTRIBUTES attribute,
         ULONG_PTR *pAttributeValue);
 
     END_INTERFACE
 } IMarshalingStreamVtbl;
+
 interface IMarshalingStream {
     CONST_VTBL IMarshalingStreamVtbl* lpVtbl;
 };
@@ -6436,46 +6861,65 @@
 #ifndef __IMoniker_FWD_DEFINED__
 #define __IMoniker_FWD_DEFINED__
 typedef interface IMoniker IMoniker;
+#ifdef __cplusplus
+interface IMoniker;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumMoniker_FWD_DEFINED__
 #define __IEnumMoniker_FWD_DEFINED__
 typedef interface IEnumMoniker IEnumMoniker;
+#ifdef __cplusplus
+interface IEnumMoniker;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRunningObjectTable_FWD_DEFINED__
 #define __IRunningObjectTable_FWD_DEFINED__
 typedef interface IRunningObjectTable IRunningObjectTable;
+#ifdef __cplusplus
+interface IRunningObjectTable;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IStorage_FWD_DEFINED__
 #define __IStorage_FWD_DEFINED__
 typedef interface IStorage IStorage;
+#ifdef __cplusplus
+interface IStorage;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumSTATSTG_FWD_DEFINED__
 #define __IEnumSTATSTG_FWD_DEFINED__
 typedef interface IEnumSTATSTG IEnumSTATSTG;
+#ifdef __cplusplus
+interface IEnumSTATSTG;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAdviseSink_FWD_DEFINED__
 #define __IAdviseSink_FWD_DEFINED__
 typedef interface IAdviseSink IAdviseSink;
-#endif
-
-#ifndef __AsyncIAdviseSink_FWD_DEFINED__
-#define __AsyncIAdviseSink_FWD_DEFINED__
-typedef interface AsyncIAdviseSink AsyncIAdviseSink;
+#ifdef __cplusplus
+interface IAdviseSink;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBindCtx_FWD_DEFINED__
 #define __IBindCtx_FWD_DEFINED__
 typedef interface IBindCtx IBindCtx;
+#ifdef __cplusplus
+interface IBindCtx;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumMoniker_FWD_DEFINED__
 #define __IEnumMoniker_FWD_DEFINED__
 typedef interface IEnumMoniker IEnumMoniker;
+#ifdef __cplusplus
+interface IEnumMoniker;
+#endif /* __cplusplus */
 #endif
 
 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
@@ -6547,75 +6991,76 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMallocSpy* This);
+        IMallocSpy *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMallocSpy* This);
+        IMallocSpy *This);
 
     /*** IMallocSpy methods ***/
     SIZE_T (STDMETHODCALLTYPE *PreAlloc)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         SIZE_T cbRequest);
 
     void * (STDMETHODCALLTYPE *PostAlloc)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         void *pActual);
 
     void * (STDMETHODCALLTYPE *PreFree)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         void *pRequest,
         WINBOOL fSpyed);
 
     void (STDMETHODCALLTYPE *PostFree)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         WINBOOL fSpyed);
 
     SIZE_T (STDMETHODCALLTYPE *PreRealloc)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         void *pRequest,
         SIZE_T cbRequest,
         void **ppNewRequest,
         WINBOOL fSpyed);
 
     void * (STDMETHODCALLTYPE *PostRealloc)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         void *pActual,
         WINBOOL fSpyed);
 
     void * (STDMETHODCALLTYPE *PreGetSize)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         void *pRequest,
         WINBOOL fSpyed);
 
     SIZE_T (STDMETHODCALLTYPE *PostGetSize)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         SIZE_T cbActual,
         WINBOOL fSpyed);
 
     void * (STDMETHODCALLTYPE *PreDidAlloc)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         void *pRequest,
         WINBOOL fSpyed);
 
     int (STDMETHODCALLTYPE *PostDidAlloc)(
-        IMallocSpy* This,
+        IMallocSpy *This,
         void *pRequest,
         WINBOOL fSpyed,
         int fActual);
 
     void (STDMETHODCALLTYPE *PreHeapMinimize)(
-        IMallocSpy* This);
+        IMallocSpy *This);
 
     void (STDMETHODCALLTYPE *PostHeapMinimize)(
-        IMallocSpy* This);
+        IMallocSpy *This);
 
     END_INTERFACE
 } IMallocSpyVtbl;
+
 interface IMallocSpy {
     CONST_VTBL IMallocSpyVtbl* lpVtbl;
 };
@@ -6810,60 +7255,61 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBindCtx* This,
+        IBindCtx *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBindCtx* This);
+        IBindCtx *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBindCtx* This);
+        IBindCtx *This);
 
     /*** IBindCtx methods ***/
     HRESULT (STDMETHODCALLTYPE *RegisterObjectBound)(
-        IBindCtx* This,
+        IBindCtx *This,
         IUnknown *punk);
 
     HRESULT (STDMETHODCALLTYPE *RevokeObjectBound)(
-        IBindCtx* This,
+        IBindCtx *This,
         IUnknown *punk);
 
     HRESULT (STDMETHODCALLTYPE *ReleaseBoundObjects)(
-        IBindCtx* This);
+        IBindCtx *This);
 
     HRESULT (STDMETHODCALLTYPE *SetBindOptions)(
-        IBindCtx* This,
+        IBindCtx *This,
         BIND_OPTS *pbindopts);
 
     HRESULT (STDMETHODCALLTYPE *GetBindOptions)(
-        IBindCtx* This,
+        IBindCtx *This,
         BIND_OPTS *pbindopts);
 
     HRESULT (STDMETHODCALLTYPE *GetRunningObjectTable)(
-        IBindCtx* This,
+        IBindCtx *This,
         IRunningObjectTable **pprot);
 
     HRESULT (STDMETHODCALLTYPE *RegisterObjectParam)(
-        IBindCtx* This,
+        IBindCtx *This,
         LPOLESTR pszKey,
         IUnknown *punk);
 
     HRESULT (STDMETHODCALLTYPE *GetObjectParam)(
-        IBindCtx* This,
+        IBindCtx *This,
         LPOLESTR pszKey,
         IUnknown **ppunk);
 
     HRESULT (STDMETHODCALLTYPE *EnumObjectParam)(
-        IBindCtx* This,
+        IBindCtx *This,
         IEnumString **ppenum);
 
     HRESULT (STDMETHODCALLTYPE *RevokeObjectParam)(
-        IBindCtx* This,
+        IBindCtx *This,
         LPOLESTR pszKey);
 
     END_INTERFACE
 } IBindCtxVtbl;
+
 interface IBindCtx {
     CONST_VTBL IBindCtxVtbl* lpVtbl;
 };
@@ -6999,36 +7445,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumMoniker* This,
+        IEnumMoniker *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumMoniker* This);
+        IEnumMoniker *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumMoniker* This);
+        IEnumMoniker *This);
 
     /*** IEnumMoniker methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumMoniker* This,
+        IEnumMoniker *This,
         ULONG celt,
         IMoniker **rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumMoniker* This,
+        IEnumMoniker *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumMoniker* This);
+        IEnumMoniker *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumMoniker* This,
+        IEnumMoniker *This,
         IEnumMoniker **ppenum);
 
     END_INTERFACE
 } IEnumMonikerVtbl;
+
 interface IEnumMoniker {
     CONST_VTBL IEnumMonikerVtbl* lpVtbl;
 };
@@ -7136,39 +7583,40 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRunnableObject* This,
+        IRunnableObject *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRunnableObject* This);
+        IRunnableObject *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRunnableObject* This);
+        IRunnableObject *This);
 
     /*** IRunnableObject methods ***/
     HRESULT (STDMETHODCALLTYPE *GetRunningClass)(
-        IRunnableObject* This,
+        IRunnableObject *This,
         LPCLSID lpClsid);
 
     HRESULT (STDMETHODCALLTYPE *Run)(
-        IRunnableObject* This,
+        IRunnableObject *This,
         LPBINDCTX pbc);
 
     WINBOOL (STDMETHODCALLTYPE *IsRunning)(
-        IRunnableObject* This);
+        IRunnableObject *This);
 
     HRESULT (STDMETHODCALLTYPE *LockRunning)(
-        IRunnableObject* This,
+        IRunnableObject *This,
         WINBOOL fLock,
         WINBOOL fLastUnlockCloses);
 
     HRESULT (STDMETHODCALLTYPE *SetContainedObject)(
-        IRunnableObject* This,
+        IRunnableObject *This,
         WINBOOL fContained);
 
     END_INTERFACE
 } IRunnableObjectVtbl;
+
 interface IRunnableObject {
     CONST_VTBL IRunnableObjectVtbl* lpVtbl;
 };
@@ -7280,53 +7728,54 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRunningObjectTable* This,
+        IRunningObjectTable *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRunningObjectTable* This);
+        IRunningObjectTable *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRunningObjectTable* This);
+        IRunningObjectTable *This);
 
     /*** IRunningObjectTable methods ***/
     HRESULT (STDMETHODCALLTYPE *Register)(
-        IRunningObjectTable* This,
+        IRunningObjectTable *This,
         DWORD grfFlags,
         IUnknown *punkObject,
         IMoniker *pmkObjectName,
         DWORD *pdwRegister);
 
     HRESULT (STDMETHODCALLTYPE *Revoke)(
-        IRunningObjectTable* This,
+        IRunningObjectTable *This,
         DWORD dwRegister);
 
     HRESULT (STDMETHODCALLTYPE *IsRunning)(
-        IRunningObjectTable* This,
+        IRunningObjectTable *This,
         IMoniker *pmkObjectName);
 
     HRESULT (STDMETHODCALLTYPE *GetObject)(
-        IRunningObjectTable* This,
+        IRunningObjectTable *This,
         IMoniker *pmkObjectName,
         IUnknown **ppunkObject);
 
     HRESULT (STDMETHODCALLTYPE *NoteChangeTime)(
-        IRunningObjectTable* This,
+        IRunningObjectTable *This,
         DWORD dwRegister,
         FILETIME *pfiletime);
 
     HRESULT (STDMETHODCALLTYPE *GetTimeOfLastChange)(
-        IRunningObjectTable* This,
+        IRunningObjectTable *This,
         IMoniker *pmkObjectName,
         FILETIME *pfiletime);
 
     HRESULT (STDMETHODCALLTYPE *EnumRunning)(
-        IRunningObjectTable* This,
+        IRunningObjectTable *This,
         IEnumMoniker **ppenumMoniker);
 
     END_INTERFACE
 } IRunningObjectTableVtbl;
+
 interface IRunningObjectTable {
     CONST_VTBL IRunningObjectTableVtbl* lpVtbl;
 };
@@ -7413,23 +7862,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPersist* This,
+        IPersist *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPersist* This);
+        IPersist *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPersist* This);
+        IPersist *This);
 
     /*** IPersist methods ***/
     HRESULT (STDMETHODCALLTYPE *GetClassID)(
-        IPersist* This,
+        IPersist *This,
         CLSID *pClassID);
 
     END_INTERFACE
 } IPersistVtbl;
+
 interface IPersist {
     CONST_VTBL IPersistVtbl* lpVtbl;
 };
@@ -7500,40 +7950,41 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPersistStream* This,
+        IPersistStream *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPersistStream* This);
+        IPersistStream *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPersistStream* This);
+        IPersistStream *This);
 
     /*** IPersist methods ***/
     HRESULT (STDMETHODCALLTYPE *GetClassID)(
-        IPersistStream* This,
+        IPersistStream *This,
         CLSID *pClassID);
 
     /*** IPersistStream methods ***/
     HRESULT (STDMETHODCALLTYPE *IsDirty)(
-        IPersistStream* This);
+        IPersistStream *This);
 
     HRESULT (STDMETHODCALLTYPE *Load)(
-        IPersistStream* This,
+        IPersistStream *This,
         IStream *pStm);
 
     HRESULT (STDMETHODCALLTYPE *Save)(
-        IPersistStream* This,
+        IPersistStream *This,
         IStream *pStm,
         WINBOOL fClearDirty);
 
     HRESULT (STDMETHODCALLTYPE *GetSizeMax)(
-        IPersistStream* This,
+        IPersistStream *This,
         ULARGE_INTEGER *pcbSize);
 
     END_INTERFACE
 } IPersistStreamVtbl;
+
 interface IPersistStream {
     CONST_VTBL IPersistStreamVtbl* lpVtbl;
 };
@@ -7696,113 +8147,113 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMoniker* This,
+        IMoniker *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMoniker* This);
+        IMoniker *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMoniker* This);
+        IMoniker *This);
 
     /*** IPersist methods ***/
     HRESULT (STDMETHODCALLTYPE *GetClassID)(
-        IMoniker* This,
+        IMoniker *This,
         CLSID *pClassID);
 
     /*** IPersistStream methods ***/
     HRESULT (STDMETHODCALLTYPE *IsDirty)(
-        IMoniker* This);
+        IMoniker *This);
 
     HRESULT (STDMETHODCALLTYPE *Load)(
-        IMoniker* This,
+        IMoniker *This,
         IStream *pStm);
 
     HRESULT (STDMETHODCALLTYPE *Save)(
-        IMoniker* This,
+        IMoniker *This,
         IStream *pStm,
         WINBOOL fClearDirty);
 
     HRESULT (STDMETHODCALLTYPE *GetSizeMax)(
-        IMoniker* This,
+        IMoniker *This,
         ULARGE_INTEGER *pcbSize);
 
     /*** IMoniker methods ***/
     HRESULT (STDMETHODCALLTYPE *BindToObject)(
-        IMoniker* This,
+        IMoniker *This,
         IBindCtx *pbc,
         IMoniker *pmkToLeft,
         REFIID riidResult,
         void **ppvResult);
 
     HRESULT (STDMETHODCALLTYPE *BindToStorage)(
-        IMoniker* This,
+        IMoniker *This,
         IBindCtx *pbc,
         IMoniker *pmkToLeft,
         REFIID riid,
         void **ppvObj);
 
     HRESULT (STDMETHODCALLTYPE *Reduce)(
-        IMoniker* This,
+        IMoniker *This,
         IBindCtx *pbc,
         DWORD dwReduceHowFar,
         IMoniker **ppmkToLeft,
         IMoniker **ppmkReduced);
 
     HRESULT (STDMETHODCALLTYPE *ComposeWith)(
-        IMoniker* This,
+        IMoniker *This,
         IMoniker *pmkRight,
         WINBOOL fOnlyIfNotGeneric,
         IMoniker **ppmkComposite);
 
     HRESULT (STDMETHODCALLTYPE *Enum)(
-        IMoniker* This,
+        IMoniker *This,
         WINBOOL fForward,
         IEnumMoniker **ppenumMoniker);
 
     HRESULT (STDMETHODCALLTYPE *IsEqual)(
-        IMoniker* This,
+        IMoniker *This,
         IMoniker *pmkOtherMoniker);
 
     HRESULT (STDMETHODCALLTYPE *Hash)(
-        IMoniker* This,
+        IMoniker *This,
         DWORD *pdwHash);
 
     HRESULT (STDMETHODCALLTYPE *IsRunning)(
-        IMoniker* This,
+        IMoniker *This,
         IBindCtx *pbc,
         IMoniker *pmkToLeft,
         IMoniker *pmkNewlyRunning);
 
     HRESULT (STDMETHODCALLTYPE *GetTimeOfLastChange)(
-        IMoniker* This,
+        IMoniker *This,
         IBindCtx *pbc,
         IMoniker *pmkToLeft,
         FILETIME *pFileTime);
 
     HRESULT (STDMETHODCALLTYPE *Inverse)(
-        IMoniker* This,
+        IMoniker *This,
         IMoniker **ppmk);
 
     HRESULT (STDMETHODCALLTYPE *CommonPrefixWith)(
-        IMoniker* This,
+        IMoniker *This,
         IMoniker *pmkOther,
         IMoniker **ppmkPrefix);
 
     HRESULT (STDMETHODCALLTYPE *RelativePathTo)(
-        IMoniker* This,
+        IMoniker *This,
         IMoniker *pmkOther,
         IMoniker **ppmkRelPath);
 
     HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
-        IMoniker* This,
+        IMoniker *This,
         IBindCtx *pbc,
         IMoniker *pmkToLeft,
         LPOLESTR *ppszDisplayName);
 
     HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
-        IMoniker* This,
+        IMoniker *This,
         IBindCtx *pbc,
         IMoniker *pmkToLeft,
         LPOLESTR pszDisplayName,
@@ -7810,11 +8261,12 @@
         IMoniker **ppmkOut);
 
     HRESULT (STDMETHODCALLTYPE *IsSystemMoniker)(
-        IMoniker* This,
+        IMoniker *This,
         DWORD *pdwMksys);
 
     END_INTERFACE
 } IMonikerVtbl;
+
 interface IMoniker {
     CONST_VTBL IMonikerVtbl* lpVtbl;
 };
@@ -8004,25 +8456,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IROTData* This,
+        IROTData *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IROTData* This);
+        IROTData *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IROTData* This);
+        IROTData *This);
 
     /*** IROTData methods ***/
     HRESULT (STDMETHODCALLTYPE *GetComparisonData)(
-        IROTData* This,
+        IROTData *This,
         byte *pbData,
         ULONG cbMax,
         ULONG *pcbData);
 
     END_INTERFACE
 } IROTDataVtbl;
+
 interface IROTData {
     CONST_VTBL IROTDataVtbl* lpVtbl;
 };
@@ -8096,36 +8549,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumSTATSTG* This,
+        IEnumSTATSTG *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumSTATSTG* This);
+        IEnumSTATSTG *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumSTATSTG* This);
+        IEnumSTATSTG *This);
 
     /*** IEnumSTATSTG methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumSTATSTG* This,
+        IEnumSTATSTG *This,
         ULONG celt,
         STATSTG *rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumSTATSTG* This,
+        IEnumSTATSTG *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumSTATSTG* This);
+        IEnumSTATSTG *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumSTATSTG* This,
+        IEnumSTATSTG *This,
         IEnumSTATSTG **ppenum);
 
     END_INTERFACE
 } IEnumSTATSTGVtbl;
+
 interface IEnumSTATSTG {
     CONST_VTBL IEnumSTATSTGVtbl* lpVtbl;
 };
@@ -8299,19 +8753,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IStorage* This,
+        IStorage *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IStorage* This);
+        IStorage *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IStorage* This);
+        IStorage *This);
 
     /*** IStorage methods ***/
     HRESULT (STDMETHODCALLTYPE *CreateStream)(
-        IStorage* This,
+        IStorage *This,
         const OLECHAR *pwcsName,
         DWORD grfMode,
         DWORD reserved1,
@@ -8319,7 +8773,7 @@
         IStream **ppstm);
 
     HRESULT (STDMETHODCALLTYPE *OpenStream)(
-        IStorage* This,
+        IStorage *This,
         const OLECHAR *pwcsName,
         void *reserved1,
         DWORD grfMode,
@@ -8327,7 +8781,7 @@
         IStream **ppstm);
 
     HRESULT (STDMETHODCALLTYPE *CreateStorage)(
-        IStorage* This,
+        IStorage *This,
         const OLECHAR *pwcsName,
         DWORD grfMode,
         DWORD reserved1,
@@ -8335,7 +8789,7 @@
         IStorage **ppstg);
 
     HRESULT (STDMETHODCALLTYPE *OpenStorage)(
-        IStorage* This,
+        IStorage *This,
         const OLECHAR *pwcsName,
         IStorage *pstgPriority,
         DWORD grfMode,
@@ -8344,65 +8798,66 @@
         IStorage **ppstg);
 
     HRESULT (STDMETHODCALLTYPE *CopyTo)(
-        IStorage* This,
+        IStorage *This,
         DWORD ciidExclude,
         const IID *rgiidExclude,
         SNB snbExclude,
         IStorage *pstgDest);
 
     HRESULT (STDMETHODCALLTYPE *MoveElementTo)(
-        IStorage* This,
+        IStorage *This,
         const OLECHAR *pwcsName,
         IStorage *pstgDest,
         const OLECHAR *pwcsNewName,
         DWORD grfFlags);
 
     HRESULT (STDMETHODCALLTYPE *Commit)(
-        IStorage* This,
+        IStorage *This,
         DWORD grfCommitFlags);
 
     HRESULT (STDMETHODCALLTYPE *Revert)(
-        IStorage* This);
+        IStorage *This);
 
     HRESULT (STDMETHODCALLTYPE *EnumElements)(
-        IStorage* This,
+        IStorage *This,
         DWORD reserved1,
         void *reserved2,
         DWORD reserved3,
         IEnumSTATSTG **ppenum);
 
     HRESULT (STDMETHODCALLTYPE *DestroyElement)(
-        IStorage* This,
+        IStorage *This,
         const OLECHAR *pwcsName);
 
     HRESULT (STDMETHODCALLTYPE *RenameElement)(
-        IStorage* This,
+        IStorage *This,
         const OLECHAR *pwcsOldName,
         const OLECHAR *pwcsNewName);
 
     HRESULT (STDMETHODCALLTYPE *SetElementTimes)(
-        IStorage* This,
+        IStorage *This,
         const OLECHAR *pwcsName,
         const FILETIME *pctime,
         const FILETIME *patime,
         const FILETIME *pmtime);
 
     HRESULT (STDMETHODCALLTYPE *SetClass)(
-        IStorage* This,
+        IStorage *This,
         REFCLSID clsid);
 
     HRESULT (STDMETHODCALLTYPE *SetStateBits)(
-        IStorage* This,
+        IStorage *This,
         DWORD grfStateBits,
         DWORD grfMask);
 
     HRESULT (STDMETHODCALLTYPE *Stat)(
-        IStorage* This,
+        IStorage *This,
         STATSTG *pstatstg,
         DWORD grfStatFlag);
 
     END_INTERFACE
 } IStorageVtbl;
+
 interface IStorage {
     CONST_VTBL IStorageVtbl* lpVtbl;
 };
@@ -8611,45 +9066,46 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPersistFile* This,
+        IPersistFile *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPersistFile* This);
+        IPersistFile *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPersistFile* This);
+        IPersistFile *This);
 
     /*** IPersist methods ***/
     HRESULT (STDMETHODCALLTYPE *GetClassID)(
-        IPersistFile* This,
+        IPersistFile *This,
         CLSID *pClassID);
 
     /*** IPersistFile methods ***/
     HRESULT (STDMETHODCALLTYPE *IsDirty)(
-        IPersistFile* This);
+        IPersistFile *This);
 
     HRESULT (STDMETHODCALLTYPE *Load)(
-        IPersistFile* This,
+        IPersistFile *This,
         LPCOLESTR pszFileName,
         DWORD dwMode);
 
     HRESULT (STDMETHODCALLTYPE *Save)(
-        IPersistFile* This,
+        IPersistFile *This,
         LPCOLESTR pszFileName,
         WINBOOL fRemember);
 
     HRESULT (STDMETHODCALLTYPE *SaveCompleted)(
-        IPersistFile* This,
+        IPersistFile *This,
         LPCOLESTR pszFileName);
 
     HRESULT (STDMETHODCALLTYPE *GetCurFile)(
-        IPersistFile* This,
+        IPersistFile *This,
         LPOLESTR *ppszFileName);
 
     END_INTERFACE
 } IPersistFileVtbl;
+
 interface IPersistFile {
     CONST_VTBL IPersistFileVtbl* lpVtbl;
 };
@@ -8748,47 +9204,48 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPersistStorage* This,
+        IPersistStorage *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPersistStorage* This);
+        IPersistStorage *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPersistStorage* This);
+        IPersistStorage *This);
 
     /*** IPersist methods ***/
     HRESULT (STDMETHODCALLTYPE *GetClassID)(
-        IPersistStorage* This,
+        IPersistStorage *This,
         CLSID *pClassID);
 
     /*** IPersistStorage methods ***/
     HRESULT (STDMETHODCALLTYPE *IsDirty)(
-        IPersistStorage* This);
+        IPersistStorage *This);
 
     HRESULT (STDMETHODCALLTYPE *InitNew)(
-        IPersistStorage* This,
+        IPersistStorage *This,
         IStorage *pStg);
 
     HRESULT (STDMETHODCALLTYPE *Load)(
-        IPersistStorage* This,
+        IPersistStorage *This,
         IStorage *pStg);
 
     HRESULT (STDMETHODCALLTYPE *Save)(
-        IPersistStorage* This,
+        IPersistStorage *This,
         IStorage *pStgSave,
         WINBOOL fSameAsLoad);
 
     HRESULT (STDMETHODCALLTYPE *SaveCompleted)(
-        IPersistStorage* This,
+        IPersistStorage *This,
         IStorage *pStgNew);
 
     HRESULT (STDMETHODCALLTYPE *HandsOffStorage)(
-        IPersistStorage* This);
+        IPersistStorage *This);
 
     END_INTERFACE
 } IPersistStorageVtbl;
+
 interface IPersistStorage {
     CONST_VTBL IPersistStorageVtbl* lpVtbl;
 };
@@ -8906,57 +9363,58 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ILockBytes* This,
+        ILockBytes *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ILockBytes* This);
+        ILockBytes *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ILockBytes* This);
+        ILockBytes *This);
 
     /*** ILockBytes methods ***/
     HRESULT (STDMETHODCALLTYPE *ReadAt)(
-        ILockBytes* This,
+        ILockBytes *This,
         ULARGE_INTEGER ulOffset,
         void *pv,
         ULONG cb,
         ULONG *pcbRead);
 
     HRESULT (STDMETHODCALLTYPE *WriteAt)(
-        ILockBytes* This,
+        ILockBytes *This,
         ULARGE_INTEGER ulOffset,
         const void *pv,
         ULONG cb,
         ULONG *pcbWritten);
 
     HRESULT (STDMETHODCALLTYPE *Flush)(
-        ILockBytes* This);
+        ILockBytes *This);
 
     HRESULT (STDMETHODCALLTYPE *SetSize)(
-        ILockBytes* This,
+        ILockBytes *This,
         ULARGE_INTEGER cb);
 
     HRESULT (STDMETHODCALLTYPE *LockRegion)(
-        ILockBytes* This,
+        ILockBytes *This,
         ULARGE_INTEGER libOffset,
         ULARGE_INTEGER cb,
         DWORD dwLockType);
 
     HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
-        ILockBytes* This,
+        ILockBytes *This,
         ULARGE_INTEGER libOffset,
         ULARGE_INTEGER cb,
         DWORD dwLockType);
 
     HRESULT (STDMETHODCALLTYPE *Stat)(
-        ILockBytes* This,
+        ILockBytes *This,
         STATSTG *pstatstg,
         DWORD grfStatFlag);
 
     END_INTERFACE
 } ILockBytesVtbl;
+
 interface ILockBytes {
     CONST_VTBL ILockBytesVtbl* lpVtbl;
 };
@@ -9115,36 +9573,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumFORMATETC* This,
+        IEnumFORMATETC *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumFORMATETC* This);
+        IEnumFORMATETC *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumFORMATETC* This);
+        IEnumFORMATETC *This);
 
     /*** IEnumFORMATETC methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumFORMATETC* This,
+        IEnumFORMATETC *This,
         ULONG celt,
         FORMATETC *rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumFORMATETC* This,
+        IEnumFORMATETC *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumFORMATETC* This);
+        IEnumFORMATETC *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumFORMATETC* This,
+        IEnumFORMATETC *This,
         IEnumFORMATETC **ppenum);
 
     END_INTERFACE
 } IEnumFORMATETCVtbl;
+
 interface IEnumFORMATETC {
     CONST_VTBL IEnumFORMATETCVtbl* lpVtbl;
 };
@@ -9264,36 +9723,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumSTATDATA* This,
+        IEnumSTATDATA *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumSTATDATA* This);
+        IEnumSTATDATA *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumSTATDATA* This);
+        IEnumSTATDATA *This);
 
     /*** IEnumSTATDATA methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumSTATDATA* This,
+        IEnumSTATDATA *This,
         ULONG celt,
         STATDATA *rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumSTATDATA* This,
+        IEnumSTATDATA *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumSTATDATA* This);
+        IEnumSTATDATA *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumSTATDATA* This,
+        IEnumSTATDATA *This,
         IEnumSTATDATA **ppenum);
 
     END_INTERFACE
 } IEnumSTATDATAVtbl;
+
 interface IEnumSTATDATA {
     CONST_VTBL IEnumSTATDATAVtbl* lpVtbl;
 };
@@ -9386,23 +9846,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRootStorage* This,
+        IRootStorage *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRootStorage* This);
+        IRootStorage *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRootStorage* This);
+        IRootStorage *This);
 
     /*** IRootStorage methods ***/
     HRESULT (STDMETHODCALLTYPE *SwitchToFile)(
-        IRootStorage* This,
+        IRootStorage *This,
         LPOLESTR pszFile);
 
     END_INTERFACE
 } IRootStorageVtbl;
+
 interface IRootStorage {
     CONST_VTBL IRootStorageVtbl* lpVtbl;
 };
@@ -9480,7 +9941,7 @@
 #else
 typedef struct tagSTGMEDIUM {
     DWORD tymed;
-    __C89_NAMELESS union {
+    union {
         HBITMAP hBitmap;
         HMETAFILEPICT hMetaFilePict;
         HENHMETAFILE hEnhMetaFile;
@@ -9494,16 +9955,16 @@
 #endif
 typedef struct _GDI_OBJECT {
     DWORD ObjectType;
-    union {
+    union __WIDL_objidl_generated_name_0000000C {
         wireHBITMAP hBitmap;
         wireHPALETTE hPalette;
         wireHGLOBAL hGeneric;
     } u;
 } GDI_OBJECT;
 typedef struct _userSTGMEDIUM {
-    __C89_NAMELESS struct _STGMEDIUM_UNION {
+    struct _STGMEDIUM_UNION {
         DWORD tymed;
-        union {
+        union __WIDL_objidl_generated_name_0000000D {
             wireHMETAFILEPICT hMetaFilePict;
             wireHENHMETAFILE hHEnhMetaFile;
             GDI_OBJECT *hGdiHandle;
@@ -9563,39 +10024,40 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAdviseSink* This,
+        IAdviseSink *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAdviseSink* This);
+        IAdviseSink *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAdviseSink* This);
+        IAdviseSink *This);
 
     /*** IAdviseSink methods ***/
     void (STDMETHODCALLTYPE *OnDataChange)(
-        IAdviseSink* This,
+        IAdviseSink *This,
         FORMATETC *pFormatetc,
         STGMEDIUM *pStgmed);
 
     void (STDMETHODCALLTYPE *OnViewChange)(
-        IAdviseSink* This,
+        IAdviseSink *This,
         DWORD dwAspect,
         LONG lindex);
 
     void (STDMETHODCALLTYPE *OnRename)(
-        IAdviseSink* This,
+        IAdviseSink *This,
         IMoniker *pmk);
 
     void (STDMETHODCALLTYPE *OnSave)(
-        IAdviseSink* This);
+        IAdviseSink *This);
 
     void (STDMETHODCALLTYPE *OnClose)(
-        IAdviseSink* This);
+        IAdviseSink *This);
 
     END_INTERFACE
 } IAdviseSinkVtbl;
+
 interface IAdviseSink {
     CONST_VTBL IAdviseSinkVtbl* lpVtbl;
 };
@@ -9770,54 +10232,55 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        AsyncIAdviseSink* This,
+        AsyncIAdviseSink *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
-    /*** IAdviseSink methods ***/
+    /*** AsyncIAdviseSink methods ***/
     void (STDMETHODCALLTYPE *Begin_OnDataChange)(
-        AsyncIAdviseSink* This,
+        AsyncIAdviseSink *This,
         FORMATETC *pFormatetc,
         STGMEDIUM *pStgmed);
 
     void (STDMETHODCALLTYPE *Finish_OnDataChange)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
     void (STDMETHODCALLTYPE *Begin_OnViewChange)(
-        AsyncIAdviseSink* This,
+        AsyncIAdviseSink *This,
         DWORD dwAspect,
         LONG lindex);
 
     void (STDMETHODCALLTYPE *Finish_OnViewChange)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
     void (STDMETHODCALLTYPE *Begin_OnRename)(
-        AsyncIAdviseSink* This,
+        AsyncIAdviseSink *This,
         IMoniker *pmk);
 
     void (STDMETHODCALLTYPE *Finish_OnRename)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
     void (STDMETHODCALLTYPE *Begin_OnSave)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
     void (STDMETHODCALLTYPE *Finish_OnSave)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
     void (STDMETHODCALLTYPE *Begin_OnClose)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
     void (STDMETHODCALLTYPE *Finish_OnClose)(
-        AsyncIAdviseSink* This);
+        AsyncIAdviseSink *This);
 
     END_INTERFACE
 } AsyncIAdviseSinkVtbl;
+
 interface AsyncIAdviseSink {
     CONST_VTBL AsyncIAdviseSinkVtbl* lpVtbl;
 };
@@ -9828,7 +10291,7 @@
 #define AsyncIAdviseSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define AsyncIAdviseSink_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define AsyncIAdviseSink_Release(This) (This)->lpVtbl->Release(This)
-/*** IAdviseSink methods ***/
+/*** AsyncIAdviseSink methods ***/
 #define AsyncIAdviseSink_Begin_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->Begin_OnDataChange(This,pFormatetc,pStgmed)
 #define AsyncIAdviseSink_Finish_OnDataChange(This) (This)->lpVtbl->Finish_OnDataChange(This)
 #define AsyncIAdviseSink_Begin_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->Begin_OnViewChange(This,dwAspect,lindex)
@@ -9850,35 +10313,35 @@
 static FORCEINLINE ULONG AsyncIAdviseSink_Release(AsyncIAdviseSink* This) {
     return This->lpVtbl->Release(This);
 }
-/*** IAdviseSink methods ***/
-static FORCEINLINE void Begin_AsyncIAdviseSink_OnDataChange(AsyncIAdviseSink* This,FORMATETC *pFormatetc,STGMEDIUM *pStgmed) {
+/*** AsyncIAdviseSink methods ***/
+static FORCEINLINE void AsyncIAdviseSink_Begin_OnDataChange(AsyncIAdviseSink* This,FORMATETC *pFormatetc,STGMEDIUM *pStgmed) {
     This->lpVtbl->Begin_OnDataChange(This,pFormatetc,pStgmed);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink_OnDataChange(AsyncIAdviseSink* This) {
+static FORCEINLINE void AsyncIAdviseSink_Finish_OnDataChange(AsyncIAdviseSink* This) {
     This->lpVtbl->Finish_OnDataChange(This);
 }
-static FORCEINLINE void Begin_AsyncIAdviseSink_OnViewChange(AsyncIAdviseSink* This,DWORD dwAspect,LONG lindex) {
+static FORCEINLINE void AsyncIAdviseSink_Begin_OnViewChange(AsyncIAdviseSink* This,DWORD dwAspect,LONG lindex) {
     This->lpVtbl->Begin_OnViewChange(This,dwAspect,lindex);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink_OnViewChange(AsyncIAdviseSink* This) {
+static FORCEINLINE void AsyncIAdviseSink_Finish_OnViewChange(AsyncIAdviseSink* This) {
     This->lpVtbl->Finish_OnViewChange(This);
 }
-static FORCEINLINE void Begin_AsyncIAdviseSink_OnRename(AsyncIAdviseSink* This,IMoniker *pmk) {
+static FORCEINLINE void AsyncIAdviseSink_Begin_OnRename(AsyncIAdviseSink* This,IMoniker *pmk) {
     This->lpVtbl->Begin_OnRename(This,pmk);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink_OnRename(AsyncIAdviseSink* This) {
+static FORCEINLINE void AsyncIAdviseSink_Finish_OnRename(AsyncIAdviseSink* This) {
     This->lpVtbl->Finish_OnRename(This);
 }
-static FORCEINLINE void Begin_AsyncIAdviseSink_OnSave(AsyncIAdviseSink* This) {
+static FORCEINLINE void AsyncIAdviseSink_Begin_OnSave(AsyncIAdviseSink* This) {
     This->lpVtbl->Begin_OnSave(This);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink_OnSave(AsyncIAdviseSink* This) {
+static FORCEINLINE void AsyncIAdviseSink_Finish_OnSave(AsyncIAdviseSink* This) {
     This->lpVtbl->Finish_OnSave(This);
 }
-static FORCEINLINE void Begin_AsyncIAdviseSink_OnClose(AsyncIAdviseSink* This) {
+static FORCEINLINE void AsyncIAdviseSink_Begin_OnClose(AsyncIAdviseSink* This) {
     This->lpVtbl->Begin_OnClose(This);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink_OnClose(AsyncIAdviseSink* This) {
+static FORCEINLINE void AsyncIAdviseSink_Finish_OnClose(AsyncIAdviseSink* This) {
     This->lpVtbl->Finish_OnClose(This);
 }
 #endif
@@ -9886,86 +10349,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Begin_RemoteOnDataChange_Proxy(
-    IAdviseSink* This,
-    FORMATETC *pFormatetc,
-    ASYNC_STGMEDIUM *pStgmed);
-void __RPC_STUB AsyncIAdviseSink_Begin_RemoteOnDataChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Finish_RemoteOnDataChange_Proxy(
-    IAdviseSink* This,
-    FORMATETC *pFormatetc,
-    ASYNC_STGMEDIUM *pStgmed);
-void __RPC_STUB AsyncIAdviseSink_Finish_RemoteOnDataChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Begin_RemoteOnViewChange_Proxy(
-    IAdviseSink* This,
-    DWORD dwAspect,
-    LONG lindex);
-void __RPC_STUB AsyncIAdviseSink_Begin_RemoteOnViewChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Finish_RemoteOnViewChange_Proxy(
-    IAdviseSink* This,
-    DWORD dwAspect,
-    LONG lindex);
-void __RPC_STUB AsyncIAdviseSink_Finish_RemoteOnViewChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Begin_RemoteOnRename_Proxy(
-    IAdviseSink* This,
-    IMoniker *pmk);
-void __RPC_STUB AsyncIAdviseSink_Begin_RemoteOnRename_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Finish_RemoteOnRename_Proxy(
-    IAdviseSink* This,
-    IMoniker *pmk);
-void __RPC_STUB AsyncIAdviseSink_Finish_RemoteOnRename_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Begin_RemoteOnSave_Proxy(
-    IAdviseSink* This);
-void __RPC_STUB AsyncIAdviseSink_Begin_RemoteOnSave_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Finish_RemoteOnSave_Proxy(
-    IAdviseSink* This);
-void __RPC_STUB AsyncIAdviseSink_Finish_RemoteOnSave_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Begin_RemoteOnClose_Proxy(
-    IAdviseSink* This);
-void __RPC_STUB AsyncIAdviseSink_Begin_RemoteOnClose_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink_Finish_RemoteOnClose_Proxy(
-    IAdviseSink* This);
-void __RPC_STUB AsyncIAdviseSink_Finish_RemoteOnClose_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __AsyncIAdviseSink_INTERFACE_DEFINED__ */
 
@@ -9996,44 +10379,45 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAdviseSink2* This,
+        IAdviseSink2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAdviseSink2* This);
+        IAdviseSink2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAdviseSink2* This);
+        IAdviseSink2 *This);
 
     /*** IAdviseSink methods ***/
     void (STDMETHODCALLTYPE *OnDataChange)(
-        IAdviseSink2* This,
+        IAdviseSink2 *This,
         FORMATETC *pFormatetc,
         STGMEDIUM *pStgmed);
 
     void (STDMETHODCALLTYPE *OnViewChange)(
-        IAdviseSink2* This,
+        IAdviseSink2 *This,
         DWORD dwAspect,
         LONG lindex);
 
     void (STDMETHODCALLTYPE *OnRename)(
-        IAdviseSink2* This,
+        IAdviseSink2 *This,
         IMoniker *pmk);
 
     void (STDMETHODCALLTYPE *OnSave)(
-        IAdviseSink2* This);
+        IAdviseSink2 *This);
 
     void (STDMETHODCALLTYPE *OnClose)(
-        IAdviseSink2* This);
+        IAdviseSink2 *This);
 
     /*** IAdviseSink2 methods ***/
     void (STDMETHODCALLTYPE *OnLinkSrcChange)(
-        IAdviseSink2* This,
+        IAdviseSink2 *This,
         IMoniker *pmk);
 
     END_INTERFACE
 } IAdviseSink2Vtbl;
+
 interface IAdviseSink2 {
     CONST_VTBL IAdviseSink2Vtbl* lpVtbl;
 };
@@ -10088,6 +10472,21 @@
 
 #endif
 
+HRESULT STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(
+    IAdviseSink2* This,
+    IMoniker *pmk);
+void __RPC_STUB IAdviseSink2_RemoteOnLinkSrcChange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void CALLBACK IAdviseSink2_OnLinkSrcChange_Proxy(
+    IAdviseSink2* This,
+    IMoniker *pmk);
+HRESULT __RPC_STUB IAdviseSink2_OnLinkSrcChange_Stub(
+    IAdviseSink2* This,
+    IMoniker *pmk);
+
 #endif  /* __IAdviseSink2_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -10099,7 +10498,7 @@
 DEFINE_GUID(IID_AsyncIAdviseSink2, 0x00000151, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
 #if defined(__cplusplus) && !defined(CINTERFACE)
 MIDL_INTERFACE("00000151-0000-0000-c000-000000000046")
-AsyncIAdviseSink2 : public IAdviseSink
+AsyncIAdviseSink2 : public AsyncIAdviseSink
 {
     virtual void STDMETHODCALLTYPE Begin_OnLinkSrcChange(
         IMoniker *pmk) = 0;
@@ -10117,62 +10516,63 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        AsyncIAdviseSink2* This,
+        AsyncIAdviseSink2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
-    /*** IAdviseSink methods ***/
+    /*** AsyncIAdviseSink methods ***/
     void (STDMETHODCALLTYPE *Begin_OnDataChange)(
-        AsyncIAdviseSink2* This,
+        AsyncIAdviseSink2 *This,
         FORMATETC *pFormatetc,
         STGMEDIUM *pStgmed);
 
     void (STDMETHODCALLTYPE *Finish_OnDataChange)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
     void (STDMETHODCALLTYPE *Begin_OnViewChange)(
-        AsyncIAdviseSink2* This,
+        AsyncIAdviseSink2 *This,
         DWORD dwAspect,
         LONG lindex);
 
     void (STDMETHODCALLTYPE *Finish_OnViewChange)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
     void (STDMETHODCALLTYPE *Begin_OnRename)(
-        AsyncIAdviseSink2* This,
+        AsyncIAdviseSink2 *This,
         IMoniker *pmk);
 
     void (STDMETHODCALLTYPE *Finish_OnRename)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
     void (STDMETHODCALLTYPE *Begin_OnSave)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
     void (STDMETHODCALLTYPE *Finish_OnSave)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
     void (STDMETHODCALLTYPE *Begin_OnClose)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
     void (STDMETHODCALLTYPE *Finish_OnClose)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
-    /*** IAdviseSink2 methods ***/
+    /*** AsyncIAdviseSink2 methods ***/
     void (STDMETHODCALLTYPE *Begin_OnLinkSrcChange)(
-        AsyncIAdviseSink2* This,
+        AsyncIAdviseSink2 *This,
         IMoniker *pmk);
 
     void (STDMETHODCALLTYPE *Finish_OnLinkSrcChange)(
-        AsyncIAdviseSink2* This);
+        AsyncIAdviseSink2 *This);
 
     END_INTERFACE
 } AsyncIAdviseSink2Vtbl;
+
 interface AsyncIAdviseSink2 {
     CONST_VTBL AsyncIAdviseSink2Vtbl* lpVtbl;
 };
@@ -10183,7 +10583,7 @@
 #define AsyncIAdviseSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define AsyncIAdviseSink2_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define AsyncIAdviseSink2_Release(This) (This)->lpVtbl->Release(This)
-/*** IAdviseSink methods ***/
+/*** AsyncIAdviseSink methods ***/
 #define AsyncIAdviseSink2_Begin_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->Begin_OnDataChange(This,pFormatetc,pStgmed)
 #define AsyncIAdviseSink2_Finish_OnDataChange(This) (This)->lpVtbl->Finish_OnDataChange(This)
 #define AsyncIAdviseSink2_Begin_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->Begin_OnViewChange(This,dwAspect,lindex)
@@ -10194,7 +10594,7 @@
 #define AsyncIAdviseSink2_Finish_OnSave(This) (This)->lpVtbl->Finish_OnSave(This)
 #define AsyncIAdviseSink2_Begin_OnClose(This) (This)->lpVtbl->Begin_OnClose(This)
 #define AsyncIAdviseSink2_Finish_OnClose(This) (This)->lpVtbl->Finish_OnClose(This)
-/*** IAdviseSink2 methods ***/
+/*** AsyncIAdviseSink2 methods ***/
 #define AsyncIAdviseSink2_Begin_OnLinkSrcChange(This,pmk) (This)->lpVtbl->Begin_OnLinkSrcChange(This,pmk)
 #define AsyncIAdviseSink2_Finish_OnLinkSrcChange(This) (This)->lpVtbl->Finish_OnLinkSrcChange(This)
 #else
@@ -10208,42 +10608,42 @@
 static FORCEINLINE ULONG AsyncIAdviseSink2_Release(AsyncIAdviseSink2* This) {
     return This->lpVtbl->Release(This);
 }
-/*** IAdviseSink methods ***/
-static FORCEINLINE void Begin_AsyncIAdviseSink2_OnDataChange(AsyncIAdviseSink2* This,FORMATETC *pFormatetc,STGMEDIUM *pStgmed) {
+/*** AsyncIAdviseSink methods ***/
+static FORCEINLINE void AsyncIAdviseSink2_Begin_OnDataChange(AsyncIAdviseSink2* This,FORMATETC *pFormatetc,STGMEDIUM *pStgmed) {
     This->lpVtbl->Begin_OnDataChange(This,pFormatetc,pStgmed);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink2_OnDataChange(AsyncIAdviseSink2* This) {
+static FORCEINLINE void AsyncIAdviseSink2_Finish_OnDataChange(AsyncIAdviseSink2* This) {
     This->lpVtbl->Finish_OnDataChange(This);
 }
-static FORCEINLINE void Begin_AsyncIAdviseSink2_OnViewChange(AsyncIAdviseSink2* This,DWORD dwAspect,LONG lindex) {
+static FORCEINLINE void AsyncIAdviseSink2_Begin_OnViewChange(AsyncIAdviseSink2* This,DWORD dwAspect,LONG lindex) {
     This->lpVtbl->Begin_OnViewChange(This,dwAspect,lindex);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink2_OnViewChange(AsyncIAdviseSink2* This) {
+static FORCEINLINE void AsyncIAdviseSink2_Finish_OnViewChange(AsyncIAdviseSink2* This) {
     This->lpVtbl->Finish_OnViewChange(This);
 }
-static FORCEINLINE void Begin_AsyncIAdviseSink2_OnRename(AsyncIAdviseSink2* This,IMoniker *pmk) {
+static FORCEINLINE void AsyncIAdviseSink2_Begin_OnRename(AsyncIAdviseSink2* This,IMoniker *pmk) {
     This->lpVtbl->Begin_OnRename(This,pmk);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink2_OnRename(AsyncIAdviseSink2* This) {
+static FORCEINLINE void AsyncIAdviseSink2_Finish_OnRename(AsyncIAdviseSink2* This) {
     This->lpVtbl->Finish_OnRename(This);
 }
-static FORCEINLINE void Begin_AsyncIAdviseSink2_OnSave(AsyncIAdviseSink2* This) {
+static FORCEINLINE void AsyncIAdviseSink2_Begin_OnSave(AsyncIAdviseSink2* This) {
     This->lpVtbl->Begin_OnSave(This);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink2_OnSave(AsyncIAdviseSink2* This) {
+static FORCEINLINE void AsyncIAdviseSink2_Finish_OnSave(AsyncIAdviseSink2* This) {
     This->lpVtbl->Finish_OnSave(This);
 }
-static FORCEINLINE void Begin_AsyncIAdviseSink2_OnClose(AsyncIAdviseSink2* This) {
+static FORCEINLINE void AsyncIAdviseSink2_Begin_OnClose(AsyncIAdviseSink2* This) {
     This->lpVtbl->Begin_OnClose(This);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink2_OnClose(AsyncIAdviseSink2* This) {
+static FORCEINLINE void AsyncIAdviseSink2_Finish_OnClose(AsyncIAdviseSink2* This) {
     This->lpVtbl->Finish_OnClose(This);
 }
-/*** IAdviseSink2 methods ***/
-static FORCEINLINE void Begin_AsyncIAdviseSink2_OnLinkSrcChange(AsyncIAdviseSink2* This,IMoniker *pmk) {
+/*** AsyncIAdviseSink2 methods ***/
+static FORCEINLINE void AsyncIAdviseSink2_Begin_OnLinkSrcChange(AsyncIAdviseSink2* This,IMoniker *pmk) {
     This->lpVtbl->Begin_OnLinkSrcChange(This,pmk);
 }
-static FORCEINLINE void Finish_AsyncIAdviseSink2_OnLinkSrcChange(AsyncIAdviseSink2* This) {
+static FORCEINLINE void AsyncIAdviseSink2_Finish_OnLinkSrcChange(AsyncIAdviseSink2* This) {
     This->lpVtbl->Finish_OnLinkSrcChange(This);
 }
 #endif
@@ -10251,6 +10651,7 @@
 
 #endif
 
+
 #endif  /* __AsyncIAdviseSink2_INTERFACE_DEFINED__ */
 
 #endif
@@ -10317,64 +10718,65 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDataObject* This,
+        IDataObject *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDataObject* This);
+        IDataObject *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDataObject* This);
+        IDataObject *This);
 
     /*** IDataObject methods ***/
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IDataObject* This,
+        IDataObject *This,
         FORMATETC *pformatetcIn,
         STGMEDIUM *pmedium);
 
     HRESULT (STDMETHODCALLTYPE *GetDataHere)(
-        IDataObject* This,
+        IDataObject *This,
         FORMATETC *pformatetc,
         STGMEDIUM *pmedium);
 
     HRESULT (STDMETHODCALLTYPE *QueryGetData)(
-        IDataObject* This,
+        IDataObject *This,
         FORMATETC *pformatetc);
 
     HRESULT (STDMETHODCALLTYPE *GetCanonicalFormatEtc)(
-        IDataObject* This,
+        IDataObject *This,
         FORMATETC *pformatectIn,
         FORMATETC *pformatetcOut);
 
     HRESULT (STDMETHODCALLTYPE *SetData)(
-        IDataObject* This,
+        IDataObject *This,
         FORMATETC *pformatetc,
         STGMEDIUM *pmedium,
         WINBOOL fRelease);
 
     HRESULT (STDMETHODCALLTYPE *EnumFormatEtc)(
-        IDataObject* This,
+        IDataObject *This,
         DWORD dwDirection,
         IEnumFORMATETC **ppenumFormatEtc);
 
     HRESULT (STDMETHODCALLTYPE *DAdvise)(
-        IDataObject* This,
+        IDataObject *This,
         FORMATETC *pformatetc,
         DWORD advf,
         IAdviseSink *pAdvSink,
         DWORD *pdwConnection);
 
     HRESULT (STDMETHODCALLTYPE *DUnadvise)(
-        IDataObject* This,
+        IDataObject *This,
         DWORD dwConnection);
 
     HRESULT (STDMETHODCALLTYPE *EnumDAdvise)(
-        IDataObject* This,
+        IDataObject *This,
         IEnumSTATDATA **ppenumAdvise);
 
     END_INTERFACE
 } IDataObjectVtbl;
+
 interface IDataObject {
     CONST_VTBL IDataObjectVtbl* lpVtbl;
 };
@@ -10439,6 +10841,61 @@
 
 #endif
 
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetcIn,
+    STGMEDIUM *pRemoteMedium);
+void __RPC_STUB IDataObject_RemoteGetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pRemoteMedium);
+void __RPC_STUB IDataObject_RemoteGetDataHere_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    FLAG_STGMEDIUM *pmedium,
+    WINBOOL fRelease);
+void __RPC_STUB IDataObject_RemoteSetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IDataObject_GetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetcIn,
+    STGMEDIUM *pmedium);
+HRESULT __RPC_STUB IDataObject_GetData_Stub(
+    IDataObject* This,
+    FORMATETC *pformatetcIn,
+    STGMEDIUM *pRemoteMedium);
+HRESULT CALLBACK IDataObject_GetDataHere_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pmedium);
+HRESULT __RPC_STUB IDataObject_GetDataHere_Stub(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pRemoteMedium);
+HRESULT CALLBACK IDataObject_SetData_Proxy(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    STGMEDIUM *pmedium,
+    WINBOOL fRelease);
+HRESULT __RPC_STUB IDataObject_SetData_Stub(
+    IDataObject* This,
+    FORMATETC *pformatetc,
+    FLAG_STGMEDIUM *pmedium,
+    WINBOOL fRelease);
+
 #endif  /* __IDataObject_INTERFACE_DEFINED__ */
 
 #endif
@@ -10483,19 +10940,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDataAdviseHolder* This,
+        IDataAdviseHolder *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDataAdviseHolder* This);
+        IDataAdviseHolder *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDataAdviseHolder* This);
+        IDataAdviseHolder *This);
 
     /*** IDataAdviseHolder methods ***/
     HRESULT (STDMETHODCALLTYPE *Advise)(
-        IDataAdviseHolder* This,
+        IDataAdviseHolder *This,
         IDataObject *pDataObject,
         FORMATETC *pFetc,
         DWORD advf,
@@ -10503,21 +10960,22 @@
         DWORD *pdwConnection);
 
     HRESULT (STDMETHODCALLTYPE *Unadvise)(
-        IDataAdviseHolder* This,
+        IDataAdviseHolder *This,
         DWORD dwConnection);
 
     HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
-        IDataAdviseHolder* This,
+        IDataAdviseHolder *This,
         IEnumSTATDATA **ppenumAdvise);
 
     HRESULT (STDMETHODCALLTYPE *SendOnDataChange)(
-        IDataAdviseHolder* This,
+        IDataAdviseHolder *This,
         IDataObject *pDataObject,
         DWORD dwReserved,
         DWORD advf);
 
     END_INTERFACE
 } IDataAdviseHolderVtbl;
+
 interface IDataAdviseHolder {
     CONST_VTBL IDataAdviseHolderVtbl* lpVtbl;
 };
@@ -10562,6 +11020,7 @@
 
 #endif
 
+
 #endif  /* __IDataAdviseHolder_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -10629,38 +11088,39 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMessageFilter* This,
+        IMessageFilter *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMessageFilter* This);
+        IMessageFilter *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMessageFilter* This);
+        IMessageFilter *This);
 
     /*** IMessageFilter methods ***/
     DWORD (STDMETHODCALLTYPE *HandleInComingCall)(
-        IMessageFilter* This,
+        IMessageFilter *This,
         DWORD dwCallType,
         HTASK htaskCaller,
         DWORD dwTickCount,
         LPINTERFACEINFO lpInterfaceInfo);
 
     DWORD (STDMETHODCALLTYPE *RetryRejectedCall)(
-        IMessageFilter* This,
+        IMessageFilter *This,
         HTASK htaskCallee,
         DWORD dwTickCount,
         DWORD dwRejectType);
 
     DWORD (STDMETHODCALLTYPE *MessagePending)(
-        IMessageFilter* This,
+        IMessageFilter *This,
         HTASK htaskCallee,
         DWORD dwTickCount,
         DWORD dwPendingType);
 
     END_INTERFACE
 } IMessageFilterVtbl;
+
 interface IMessageFilter {
     CONST_VTBL IMessageFilterVtbl* lpVtbl;
 };
@@ -10701,6 +11161,7 @@
 
 #endif
 
+
 #endif  /* __IMessageFilter_INTERFACE_DEFINED__ */
 
 
@@ -10748,19 +11209,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IClassActivator* This,
+        IClassActivator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IClassActivator* This);
+        IClassActivator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IClassActivator* This);
+        IClassActivator *This);
 
     /*** IClassActivator methods ***/
     HRESULT (STDMETHODCALLTYPE *GetClassObject)(
-        IClassActivator* This,
+        IClassActivator *This,
         REFCLSID rclsid,
         DWORD dwClassContext,
         LCID locale,
@@ -10769,6 +11230,7 @@
 
     END_INTERFACE
 } IClassActivatorVtbl;
+
 interface IClassActivator {
     CONST_VTBL IClassActivatorVtbl* lpVtbl;
 };
@@ -10801,6 +11263,7 @@
 
 #endif
 
+
 #endif  /* __IClassActivator_INTERFACE_DEFINED__ */
 
 #endif
@@ -10843,40 +11306,41 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IFillLockBytes* This,
+        IFillLockBytes *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IFillLockBytes* This);
+        IFillLockBytes *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IFillLockBytes* This);
+        IFillLockBytes *This);
 
     /*** IFillLockBytes methods ***/
     HRESULT (STDMETHODCALLTYPE *FillAppend)(
-        IFillLockBytes* This,
+        IFillLockBytes *This,
         const void *pv,
         ULONG cb,
         ULONG *pcbWritten);
 
     HRESULT (STDMETHODCALLTYPE *FillAt)(
-        IFillLockBytes* This,
+        IFillLockBytes *This,
         ULARGE_INTEGER ulOffset,
         const void *pv,
         ULONG cb,
         ULONG *pcbWritten);
 
     HRESULT (STDMETHODCALLTYPE *SetFillSize)(
-        IFillLockBytes* This,
+        IFillLockBytes *This,
         ULARGE_INTEGER ulSize);
 
     HRESULT (STDMETHODCALLTYPE *Terminate)(
-        IFillLockBytes* This,
+        IFillLockBytes *This,
         WINBOOL bCanceled);
 
     END_INTERFACE
 } IFillLockBytesVtbl;
+
 interface IFillLockBytes {
     CONST_VTBL IFillLockBytesVtbl* lpVtbl;
 };
@@ -10921,6 +11385,50 @@
 
 #endif
 
+HRESULT __stdcall IFillLockBytes_RemoteFillAppend_Proxy(
+    IFillLockBytes* This,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+void __RPC_STUB IFillLockBytes_RemoteFillAppend_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT __stdcall IFillLockBytes_RemoteFillAt_Proxy(
+    IFillLockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+void __RPC_STUB IFillLockBytes_RemoteFillAt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IFillLockBytes_FillAppend_Proxy(
+    IFillLockBytes* This,
+    const void *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+HRESULT __RPC_STUB IFillLockBytes_FillAppend_Stub(
+    IFillLockBytes* This,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+HRESULT CALLBACK IFillLockBytes_FillAt_Proxy(
+    IFillLockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const void *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+HRESULT __RPC_STUB IFillLockBytes_FillAt_Stub(
+    IFillLockBytes* This,
+    ULARGE_INTEGER ulOffset,
+    const byte *pv,
+    ULONG cb,
+    ULONG *pcbWritten);
+
 #endif  /* __IFillLockBytes_INTERFACE_DEFINED__ */
 
 #endif
@@ -10952,19 +11460,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IProgressNotify* This,
+        IProgressNotify *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IProgressNotify* This);
+        IProgressNotify *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IProgressNotify* This);
+        IProgressNotify *This);
 
     /*** IProgressNotify methods ***/
     HRESULT (STDMETHODCALLTYPE *OnProgress)(
-        IProgressNotify* This,
+        IProgressNotify *This,
         DWORD dwProgressCurrent,
         DWORD dwProgressMaximum,
         WINBOOL fAccurate,
@@ -10972,6 +11480,7 @@
 
     END_INTERFACE
 } IProgressNotifyVtbl;
+
 interface IProgressNotify {
     CONST_VTBL IProgressNotifyVtbl* lpVtbl;
 };
@@ -11004,6 +11513,7 @@
 
 #endif
 
+
 #endif  /* __IProgressNotify_INTERFACE_DEFINED__ */
 
 #endif
@@ -11052,39 +11562,40 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ILayoutStorage* This,
+        ILayoutStorage *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ILayoutStorage* This);
+        ILayoutStorage *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ILayoutStorage* This);
+        ILayoutStorage *This);
 
     /*** ILayoutStorage methods ***/
     HRESULT (__stdcall *LayoutScript)(
-        ILayoutStorage* This,
+        ILayoutStorage *This,
         StorageLayout *pStorageLayout,
         DWORD nEntries,
         DWORD glfInterleavedFlag);
 
     HRESULT (__stdcall *BeginMonitor)(
-        ILayoutStorage* This);
+        ILayoutStorage *This);
 
     HRESULT (__stdcall *EndMonitor)(
-        ILayoutStorage* This);
+        ILayoutStorage *This);
 
     HRESULT (__stdcall *ReLayoutDocfile)(
-        ILayoutStorage* This,
+        ILayoutStorage *This,
         OLECHAR *pwcsNewDfName);
 
     HRESULT (__stdcall *ReLayoutDocfileOnILockBytes)(
-        ILayoutStorage* This,
+        ILayoutStorage *This,
         ILockBytes *pILockBytes);
 
     END_INTERFACE
 } ILayoutStorageVtbl;
+
 interface ILayoutStorage {
     CONST_VTBL ILayoutStorageVtbl* lpVtbl;
 };
@@ -11133,6 +11644,7 @@
 
 #endif
 
+
 #endif  /* __ILayoutStorage_INTERFACE_DEFINED__ */
 
 #endif
@@ -11164,26 +11676,27 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBlockingLock* This,
+        IBlockingLock *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBlockingLock* This);
+        IBlockingLock *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBlockingLock* This);
+        IBlockingLock *This);
 
     /*** IBlockingLock methods ***/
     HRESULT (STDMETHODCALLTYPE *Lock)(
-        IBlockingLock* This,
+        IBlockingLock *This,
         DWORD dwTimeout);
 
     HRESULT (STDMETHODCALLTYPE *Unlock)(
-        IBlockingLock* This);
+        IBlockingLock *This);
 
     END_INTERFACE
 } IBlockingLockVtbl;
+
 interface IBlockingLock {
     CONST_VTBL IBlockingLockVtbl* lpVtbl;
 };
@@ -11220,6 +11733,7 @@
 
 #endif
 
+
 #endif  /* __IBlockingLock_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -11247,24 +11761,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ITimeAndNoticeControl* This,
+        ITimeAndNoticeControl *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ITimeAndNoticeControl* This);
+        ITimeAndNoticeControl *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ITimeAndNoticeControl* This);
+        ITimeAndNoticeControl *This);
 
     /*** ITimeAndNoticeControl methods ***/
     HRESULT (STDMETHODCALLTYPE *SuppressChanges)(
-        ITimeAndNoticeControl* This,
+        ITimeAndNoticeControl *This,
         DWORD res1,
         DWORD res2);
 
     END_INTERFACE
 } ITimeAndNoticeControlVtbl;
+
 interface ITimeAndNoticeControl {
     CONST_VTBL ITimeAndNoticeControlVtbl* lpVtbl;
 };
@@ -11297,6 +11812,7 @@
 
 #endif
 
+
 #endif  /* __ITimeAndNoticeControl_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -11336,19 +11852,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IOplockStorage* This,
+        IOplockStorage *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IOplockStorage* This);
+        IOplockStorage *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IOplockStorage* This);
+        IOplockStorage *This);
 
     /*** IOplockStorage methods ***/
     HRESULT (STDMETHODCALLTYPE *CreateStorageEx)(
-        IOplockStorage* This,
+        IOplockStorage *This,
         LPCWSTR pwcsName,
         DWORD grfMode,
         DWORD stgfmt,
@@ -11357,7 +11873,7 @@
         void **ppstgOpen);
 
     HRESULT (STDMETHODCALLTYPE *OpenStorageEx)(
-        IOplockStorage* This,
+        IOplockStorage *This,
         LPCWSTR pwcsName,
         DWORD grfMode,
         DWORD stgfmt,
@@ -11367,6 +11883,7 @@
 
     END_INTERFACE
 } IOplockStorageVtbl;
+
 interface IOplockStorage {
     CONST_VTBL IOplockStorageVtbl* lpVtbl;
 };
@@ -11403,6 +11920,7 @@
 
 #endif
 
+
 #endif  /* __IOplockStorage_INTERFACE_DEFINED__ */
 
 #endif
@@ -11437,29 +11955,30 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDirectWriterLock* This,
+        IDirectWriterLock *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDirectWriterLock* This);
+        IDirectWriterLock *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDirectWriterLock* This);
+        IDirectWriterLock *This);
 
     /*** IDirectWriterLock methods ***/
     HRESULT (STDMETHODCALLTYPE *WaitForWriteAccess)(
-        IDirectWriterLock* This,
+        IDirectWriterLock *This,
         DWORD dwTimeout);
 
     HRESULT (STDMETHODCALLTYPE *ReleaseWriteAccess)(
-        IDirectWriterLock* This);
+        IDirectWriterLock *This);
 
     HRESULT (STDMETHODCALLTYPE *HaveWriteAccess)(
-        IDirectWriterLock* This);
+        IDirectWriterLock *This);
 
     END_INTERFACE
 } IDirectWriterLockVtbl;
+
 interface IDirectWriterLock {
     CONST_VTBL IDirectWriterLockVtbl* lpVtbl;
 };
@@ -11500,6 +12019,7 @@
 
 #endif
 
+
 #endif  /* __IDirectWriterLock_INTERFACE_DEFINED__ */
 
 #endif
@@ -11537,19 +12057,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IUrlMon* This,
+        IUrlMon *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IUrlMon* This);
+        IUrlMon *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IUrlMon* This);
+        IUrlMon *This);
 
     /*** IUrlMon methods ***/
     HRESULT (STDMETHODCALLTYPE *AsyncGetClassBits)(
-        IUrlMon* This,
+        IUrlMon *This,
         REFCLSID rclsid,
         LPCWSTR pszTYPE,
         LPCWSTR pszExt,
@@ -11563,6 +12083,7 @@
 
     END_INTERFACE
 } IUrlMonVtbl;
+
 interface IUrlMon {
     CONST_VTBL IUrlMonVtbl* lpVtbl;
 };
@@ -11595,6 +12116,7 @@
 
 #endif
 
+
 #endif  /* __IUrlMon_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -11621,23 +12143,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IForegroundTransfer* This,
+        IForegroundTransfer *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IForegroundTransfer* This);
+        IForegroundTransfer *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IForegroundTransfer* This);
+        IForegroundTransfer *This);
 
     /*** IForegroundTransfer methods ***/
     HRESULT (STDMETHODCALLTYPE *AllowForegroundTransfer)(
-        IForegroundTransfer* This,
+        IForegroundTransfer *This,
         void *lpvReserved);
 
     END_INTERFACE
 } IForegroundTransferVtbl;
+
 interface IForegroundTransfer {
     CONST_VTBL IForegroundTransferVtbl* lpVtbl;
 };
@@ -11670,6 +12193,7 @@
 
 #endif
 
+
 #endif  /* __IForegroundTransfer_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -11704,19 +12228,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IThumbnailExtractor* This,
+        IThumbnailExtractor *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IThumbnailExtractor* This);
+        IThumbnailExtractor *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IThumbnailExtractor* This);
+        IThumbnailExtractor *This);
 
     /*** IThumbnailExtractor methods ***/
     HRESULT (STDMETHODCALLTYPE *ExtractThumbnail)(
-        IThumbnailExtractor* This,
+        IThumbnailExtractor *This,
         IStorage *pStg,
         ULONG ulLength,
         ULONG ulHeight,
@@ -11725,11 +12249,12 @@
         HBITMAP *phOutputBitmap);
 
     HRESULT (STDMETHODCALLTYPE *OnFileUpdated)(
-        IThumbnailExtractor* This,
+        IThumbnailExtractor *This,
         IStorage *pStg);
 
     END_INTERFACE
 } IThumbnailExtractorVtbl;
+
 interface IThumbnailExtractor {
     CONST_VTBL IThumbnailExtractorVtbl* lpVtbl;
 };
@@ -11766,6 +12291,7 @@
 
 #endif
 
+
 #endif  /* __IThumbnailExtractor_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -11793,24 +12319,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDummyHICONIncluder* This,
+        IDummyHICONIncluder *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDummyHICONIncluder* This);
+        IDummyHICONIncluder *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDummyHICONIncluder* This);
+        IDummyHICONIncluder *This);
 
     /*** IDummyHICONIncluder methods ***/
     HRESULT (STDMETHODCALLTYPE *Dummy)(
-        IDummyHICONIncluder* This,
+        IDummyHICONIncluder *This,
         HICON h1,
         HDC h2);
 
     END_INTERFACE
 } IDummyHICONIncluderVtbl;
+
 interface IDummyHICONIncluder {
     CONST_VTBL IDummyHICONIncluderVtbl* lpVtbl;
 };
@@ -11843,6 +12370,7 @@
 
 #endif
 
+
 #endif  /* __IDummyHICONIncluder_INTERFACE_DEFINED__ */
 
 typedef enum tagApplicationType {
@@ -11880,25 +12408,26 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IProcessLock* This,
+        IProcessLock *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IProcessLock* This);
+        IProcessLock *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IProcessLock* This);
+        IProcessLock *This);
 
     /*** IProcessLock methods ***/
     ULONG (STDMETHODCALLTYPE *AddRefOnProcess)(
-        IProcessLock* This);
+        IProcessLock *This);
 
     ULONG (STDMETHODCALLTYPE *ReleaseRefOnProcess)(
-        IProcessLock* This);
+        IProcessLock *This);
 
     END_INTERFACE
 } IProcessLockVtbl;
+
 interface IProcessLock {
     CONST_VTBL IProcessLockVtbl* lpVtbl;
 };
@@ -11935,6 +12464,7 @@
 
 #endif
 
+
 #endif  /* __IProcessLock_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -11976,42 +12506,43 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ISurrogateService* This,
+        ISurrogateService *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ISurrogateService* This);
+        ISurrogateService *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ISurrogateService* This);
+        ISurrogateService *This);
 
     /*** ISurrogateService methods ***/
     HRESULT (STDMETHODCALLTYPE *Init)(
-        ISurrogateService* This,
+        ISurrogateService *This,
         REFGUID rguidProcessID,
         IProcessLock *pProcessLock,
         WINBOOL *pfApplicationAware);
 
     HRESULT (STDMETHODCALLTYPE *ApplicationLaunch)(
-        ISurrogateService* This,
+        ISurrogateService *This,
         REFGUID rguidApplID,
         ApplicationType appType);
 
     HRESULT (STDMETHODCALLTYPE *ApplicationFree)(
-        ISurrogateService* This,
+        ISurrogateService *This,
         REFGUID rguidApplID);
 
     HRESULT (STDMETHODCALLTYPE *CatalogRefresh)(
-        ISurrogateService* This,
+        ISurrogateService *This,
         ULONG ulReserved);
 
     HRESULT (STDMETHODCALLTYPE *ProcessShutdown)(
-        ISurrogateService* This,
+        ISurrogateService *This,
         ShutdownType shutdownType);
 
     END_INTERFACE
 } ISurrogateServiceVtbl;
+
 interface ISurrogateService {
     CONST_VTBL ISurrogateServiceVtbl* lpVtbl;
 };
@@ -12060,6 +12591,7 @@
 
 #endif
 
+
 #endif  /* __ISurrogateService_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -12099,38 +12631,39 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IInitializeSpy* This,
+        IInitializeSpy *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IInitializeSpy* This);
+        IInitializeSpy *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IInitializeSpy* This);
+        IInitializeSpy *This);
 
     /*** IInitializeSpy methods ***/
     HRESULT (STDMETHODCALLTYPE *PreInitialize)(
-        IInitializeSpy* This,
+        IInitializeSpy *This,
         DWORD dwCoInit,
         DWORD dwCurThreadAptRefs);
 
     HRESULT (STDMETHODCALLTYPE *PostInitialize)(
-        IInitializeSpy* This,
+        IInitializeSpy *This,
         HRESULT hrCoInit,
         DWORD dwCoInit,
         DWORD dwNewThreadAptRefs);
 
     HRESULT (STDMETHODCALLTYPE *PreUninitialize)(
-        IInitializeSpy* This,
+        IInitializeSpy *This,
         DWORD dwCurThreadAptRefs);
 
     HRESULT (STDMETHODCALLTYPE *PostUninitialize)(
-        IInitializeSpy* This,
+        IInitializeSpy *This,
         DWORD dwNewThreadAptRefs);
 
     END_INTERFACE
 } IInitializeSpyVtbl;
+
 interface IInitializeSpy {
     CONST_VTBL IInitializeSpyVtbl* lpVtbl;
 };
@@ -12175,6 +12708,7 @@
 
 #endif
 
+
 #endif  /* __IInitializeSpy_INTERFACE_DEFINED__ */
 
 #endif
@@ -12203,23 +12737,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IApartmentShutdown* This,
+        IApartmentShutdown *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IApartmentShutdown* This);
+        IApartmentShutdown *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IApartmentShutdown* This);
+        IApartmentShutdown *This);
 
     /*** IApartmentShutdown methods ***/
     void (STDMETHODCALLTYPE *OnUninitialize)(
-        IApartmentShutdown* This,
+        IApartmentShutdown *This,
         UINT64 ui64ApartmentIdentifier);
 
     END_INTERFACE
 } IApartmentShutdownVtbl;
+
 interface IApartmentShutdown {
     CONST_VTBL IApartmentShutdownVtbl* lpVtbl;
 };
@@ -12252,6 +12787,7 @@
 
 #endif
 
+
 #endif  /* __IApartmentShutdown_INTERFACE_DEFINED__ */
 
 #endif
diff --git a/mingw-w64-headers/include/objidlbase.h b/mingw-w64-headers/include/objidlbase.h
index 5f6fa18..45fda0d 100644
--- a/mingw-w64-headers/include/objidlbase.h
+++ b/mingw-w64-headers/include/objidlbase.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/objidlbase.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/objidlbase.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/ocidl.h b/mingw-w64-headers/include/ocidl.h
index 8cffa25..5fe2c8e 100644
--- a/mingw-w64-headers/include/ocidl.h
+++ b/mingw-w64-headers/include/ocidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/ocidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/ocidl.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/oleacc.h b/mingw-w64-headers/include/oleacc.h
index ae69dc4..e8e6766 100644
--- a/mingw-w64-headers/include/oleacc.h
+++ b/mingw-w64-headers/include/oleacc.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/oleacc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/oleacc.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/oleidl.h b/mingw-w64-headers/include/oleidl.h
index 41115ca..4ccae7a 100644
--- a/mingw-w64-headers/include/oleidl.h
+++ b/mingw-w64-headers/include/oleidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/oleidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/oleidl.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/optary.h b/mingw-w64-headers/include/optary.h
index 616013a..4752563 100644
--- a/mingw-w64-headers/include/optary.h
+++ b/mingw-w64-headers/include/optary.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/optary.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/optary.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/portabledevicetypes.h b/mingw-w64-headers/include/portabledevicetypes.h
index 253b59d..ea17fa5 100644
--- a/mingw-w64-headers/include/portabledevicetypes.h
+++ b/mingw-w64-headers/include/portabledevicetypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/portabledevicetypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/portabledevicetypes.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/propidl.h b/mingw-w64-headers/include/propidl.h
index 987ccb3..cfc0615 100644
--- a/mingw-w64-headers/include/propidl.h
+++ b/mingw-w64-headers/include/propidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/propidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/propidl.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/propsys.h b/mingw-w64-headers/include/propsys.h
index 1bb4640..e68fced 100644
--- a/mingw-w64-headers/include/propsys.h
+++ b/mingw-w64-headers/include/propsys.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/propsys.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/propsys.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/qedit.h b/mingw-w64-headers/include/qedit.h
index c7ddc83..b90483c 100644
--- a/mingw-w64-headers/include/qedit.h
+++ b/mingw-w64-headers/include/qedit.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/qedit.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/qedit.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/qnetwork.h b/mingw-w64-headers/include/qnetwork.h
index 55b6a06..1914e11 100644
--- a/mingw-w64-headers/include/qnetwork.h
+++ b/mingw-w64-headers/include/qnetwork.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/qnetwork.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/qnetwork.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/regbag.h b/mingw-w64-headers/include/regbag.h
index fc1b4b7..231b23d 100644
--- a/mingw-w64-headers/include/regbag.h
+++ b/mingw-w64-headers/include/regbag.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/regbag.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/regbag.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/sapi51.h b/mingw-w64-headers/include/sapi51.h
index d023550..c85867d 100644
--- a/mingw-w64-headers/include/sapi51.h
+++ b/mingw-w64-headers/include/sapi51.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/sapi51.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/sapi51.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/sapi53.h b/mingw-w64-headers/include/sapi53.h
index 570503a..c32f857 100644
--- a/mingw-w64-headers/include/sapi53.h
+++ b/mingw-w64-headers/include/sapi53.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/sapi53.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/sapi53.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/sapi54.h b/mingw-w64-headers/include/sapi54.h
index 166aab0..102cc5f 100644
--- a/mingw-w64-headers/include/sapi54.h
+++ b/mingw-w64-headers/include/sapi54.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/sapi54.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/sapi54.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/sensorsapi.h b/mingw-w64-headers/include/sensorsapi.h
index 36b8e6e..2cab65b 100644
--- a/mingw-w64-headers/include/sensorsapi.h
+++ b/mingw-w64-headers/include/sensorsapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/sensorsapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/sensorsapi.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/servprov.h b/mingw-w64-headers/include/servprov.h
index 7875add..8e34faf 100644
--- a/mingw-w64-headers/include/servprov.h
+++ b/mingw-w64-headers/include/servprov.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/servprov.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/servprov.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/shldisp.h b/mingw-w64-headers/include/shldisp.h
index f581129..e9d8946 100644
--- a/mingw-w64-headers/include/shldisp.h
+++ b/mingw-w64-headers/include/shldisp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/shldisp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/shldisp.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/shobjidl.h b/mingw-w64-headers/include/shobjidl.h
index af88408..b59ddcd 100644
--- a/mingw-w64-headers/include/shobjidl.h
+++ b/mingw-w64-headers/include/shobjidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/shobjidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/shobjidl.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/shtypes.h b/mingw-w64-headers/include/shtypes.h
index 35853c7..6c9dc68 100644
--- a/mingw-w64-headers/include/shtypes.h
+++ b/mingw-w64-headers/include/shtypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/shtypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/shtypes.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/spatialaudioclient.h b/mingw-w64-headers/include/spatialaudioclient.h
index cf8766c..7334739 100644
--- a/mingw-w64-headers/include/spatialaudioclient.h
+++ b/mingw-w64-headers/include/spatialaudioclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/spatialaudioclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/spatialaudioclient.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/strmif.h b/mingw-w64-headers/include/strmif.h
index 4e26cb9..b652239 100644
--- a/mingw-w64-headers/include/strmif.h
+++ b/mingw-w64-headers/include/strmif.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/strmif.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/strmif.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/structuredquerycondition.h b/mingw-w64-headers/include/structuredquerycondition.h
index 79720f9..e5ca3d4 100644
--- a/mingw-w64-headers/include/structuredquerycondition.h
+++ b/mingw-w64-headers/include/structuredquerycondition.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/structuredquerycondition.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/structuredquerycondition.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/taskschd.h b/mingw-w64-headers/include/taskschd.h
index 3bf5aae..372e0ec 100644
--- a/mingw-w64-headers/include/taskschd.h
+++ b/mingw-w64-headers/include/taskschd.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/taskschd.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/taskschd.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/textstor.h b/mingw-w64-headers/include/textstor.h
index ceeb6f0..be0bf78 100644
--- a/mingw-w64-headers/include/textstor.h
+++ b/mingw-w64-headers/include/textstor.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/textstor.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/textstor.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/thumbcache.h b/mingw-w64-headers/include/thumbcache.h
index d7ecec2..f83659c 100644
--- a/mingw-w64-headers/include/thumbcache.h
+++ b/mingw-w64-headers/include/thumbcache.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/thumbcache.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/thumbcache.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/tlbref.h b/mingw-w64-headers/include/tlbref.h
index eb48f17..7b11823 100644
--- a/mingw-w64-headers/include/tlbref.h
+++ b/mingw-w64-headers/include/tlbref.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/tlbref.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/tlbref.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/tlogstg.h b/mingw-w64-headers/include/tlogstg.h
index 76aec33..b869372 100644
--- a/mingw-w64-headers/include/tlogstg.h
+++ b/mingw-w64-headers/include/tlogstg.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/tlogstg.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/tlogstg.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/tpcshrd.h b/mingw-w64-headers/include/tpcshrd.h
index 3ba4a82..467da7a 100644
--- a/mingw-w64-headers/include/tpcshrd.h
+++ b/mingw-w64-headers/include/tpcshrd.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/tpcshrd.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/tpcshrd.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/tuner.h b/mingw-w64-headers/include/tuner.h
index 1dd1bc9..df3db35 100644
--- a/mingw-w64-headers/include/tuner.h
+++ b/mingw-w64-headers/include/tuner.h
@@ -1,11 +1,12 @@
-/*** Autogenerated by WIDL 1.6 from include/tuner.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/tuner.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>
@@ -20,366 +21,585 @@
 #ifndef __ITuningSpaces_FWD_DEFINED__
 #define __ITuningSpaces_FWD_DEFINED__
 typedef interface ITuningSpaces ITuningSpaces;
+#ifdef __cplusplus
+interface ITuningSpaces;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITuningSpaceContainer_FWD_DEFINED__
 #define __ITuningSpaceContainer_FWD_DEFINED__
 typedef interface ITuningSpaceContainer ITuningSpaceContainer;
+#ifdef __cplusplus
+interface ITuningSpaceContainer;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITuningSpace_FWD_DEFINED__
 #define __ITuningSpace_FWD_DEFINED__
 typedef interface ITuningSpace ITuningSpace;
+#ifdef __cplusplus
+interface ITuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumTuningSpaces_FWD_DEFINED__
 #define __IEnumTuningSpaces_FWD_DEFINED__
 typedef interface IEnumTuningSpaces IEnumTuningSpaces;
+#ifdef __cplusplus
+interface IEnumTuningSpaces;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBTuningSpace_FWD_DEFINED__
 #define __IDVBTuningSpace_FWD_DEFINED__
 typedef interface IDVBTuningSpace IDVBTuningSpace;
+#ifdef __cplusplus
+interface IDVBTuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBTuningSpace2_FWD_DEFINED__
 #define __IDVBTuningSpace2_FWD_DEFINED__
 typedef interface IDVBTuningSpace2 IDVBTuningSpace2;
+#ifdef __cplusplus
+interface IDVBTuningSpace2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBSTuningSpace_FWD_DEFINED__
 #define __IDVBSTuningSpace_FWD_DEFINED__
 typedef interface IDVBSTuningSpace IDVBSTuningSpace;
+#ifdef __cplusplus
+interface IDVBSTuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAuxInTuningSpace_FWD_DEFINED__
 #define __IAuxInTuningSpace_FWD_DEFINED__
 typedef interface IAuxInTuningSpace IAuxInTuningSpace;
+#ifdef __cplusplus
+interface IAuxInTuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAuxInTuningSpace2_FWD_DEFINED__
 #define __IAuxInTuningSpace2_FWD_DEFINED__
 typedef interface IAuxInTuningSpace2 IAuxInTuningSpace2;
+#ifdef __cplusplus
+interface IAuxInTuningSpace2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAnalogTVTuningSpace_FWD_DEFINED__
 #define __IAnalogTVTuningSpace_FWD_DEFINED__
 typedef interface IAnalogTVTuningSpace IAnalogTVTuningSpace;
+#ifdef __cplusplus
+interface IAnalogTVTuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IATSCTuningSpace_FWD_DEFINED__
 #define __IATSCTuningSpace_FWD_DEFINED__
 typedef interface IATSCTuningSpace IATSCTuningSpace;
+#ifdef __cplusplus
+interface IATSCTuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDigitalCableTuningSpace_FWD_DEFINED__
 #define __IDigitalCableTuningSpace_FWD_DEFINED__
 typedef interface IDigitalCableTuningSpace IDigitalCableTuningSpace;
+#ifdef __cplusplus
+interface IDigitalCableTuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAnalogRadioTuningSpace_FWD_DEFINED__
 #define __IAnalogRadioTuningSpace_FWD_DEFINED__
 typedef interface IAnalogRadioTuningSpace IAnalogRadioTuningSpace;
+#ifdef __cplusplus
+interface IAnalogRadioTuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAnalogRadioTuningSpace2_FWD_DEFINED__
 #define __IAnalogRadioTuningSpace2_FWD_DEFINED__
 typedef interface IAnalogRadioTuningSpace2 IAnalogRadioTuningSpace2;
+#ifdef __cplusplus
+interface IAnalogRadioTuningSpace2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITuneRequest_FWD_DEFINED__
 #define __ITuneRequest_FWD_DEFINED__
 typedef interface ITuneRequest ITuneRequest;
+#ifdef __cplusplus
+interface ITuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IChannelIDTuneRequest_FWD_DEFINED__
 #define __IChannelIDTuneRequest_FWD_DEFINED__
 typedef interface IChannelIDTuneRequest IChannelIDTuneRequest;
+#ifdef __cplusplus
+interface IChannelIDTuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IChannelTuneRequest_FWD_DEFINED__
 #define __IChannelTuneRequest_FWD_DEFINED__
 typedef interface IChannelTuneRequest IChannelTuneRequest;
+#ifdef __cplusplus
+interface IChannelTuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IATSCChannelTuneRequest_FWD_DEFINED__
 #define __IATSCChannelTuneRequest_FWD_DEFINED__
 typedef interface IATSCChannelTuneRequest IATSCChannelTuneRequest;
+#ifdef __cplusplus
+interface IATSCChannelTuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDigitalCableTuneRequest_FWD_DEFINED__
 #define __IDigitalCableTuneRequest_FWD_DEFINED__
 typedef interface IDigitalCableTuneRequest IDigitalCableTuneRequest;
+#ifdef __cplusplus
+interface IDigitalCableTuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBTuneRequest_FWD_DEFINED__
 #define __IDVBTuneRequest_FWD_DEFINED__
 typedef interface IDVBTuneRequest IDVBTuneRequest;
+#ifdef __cplusplus
+interface IDVBTuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMPEG2TuneRequest_FWD_DEFINED__
 #define __IMPEG2TuneRequest_FWD_DEFINED__
 typedef interface IMPEG2TuneRequest IMPEG2TuneRequest;
+#ifdef __cplusplus
+interface IMPEG2TuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMPEG2TuneRequestFactory_FWD_DEFINED__
 #define __IMPEG2TuneRequestFactory_FWD_DEFINED__
 typedef interface IMPEG2TuneRequestFactory IMPEG2TuneRequestFactory;
+#ifdef __cplusplus
+interface IMPEG2TuneRequestFactory;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMPEG2TuneRequestSupport_FWD_DEFINED__
 #define __IMPEG2TuneRequestSupport_FWD_DEFINED__
 typedef interface IMPEG2TuneRequestSupport IMPEG2TuneRequestSupport;
+#ifdef __cplusplus
+interface IMPEG2TuneRequestSupport;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITunerCap_FWD_DEFINED__
 #define __ITunerCap_FWD_DEFINED__
 typedef interface ITunerCap ITunerCap;
+#ifdef __cplusplus
+interface ITunerCap;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITunerCapEx_FWD_DEFINED__
 #define __ITunerCapEx_FWD_DEFINED__
 typedef interface ITunerCapEx ITunerCapEx;
+#ifdef __cplusplus
+interface ITunerCapEx;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITuner_FWD_DEFINED__
 #define __ITuner_FWD_DEFINED__
 typedef interface ITuner ITuner;
+#ifdef __cplusplus
+interface ITuner;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IScanningTuner_FWD_DEFINED__
 #define __IScanningTuner_FWD_DEFINED__
 typedef interface IScanningTuner IScanningTuner;
+#ifdef __cplusplus
+interface IScanningTuner;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IScanningTunerEx_FWD_DEFINED__
 #define __IScanningTunerEx_FWD_DEFINED__
 typedef interface IScanningTunerEx IScanningTunerEx;
+#ifdef __cplusplus
+interface IScanningTunerEx;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponentType_FWD_DEFINED__
 #define __IComponentType_FWD_DEFINED__
 typedef interface IComponentType IComponentType;
+#ifdef __cplusplus
+interface IComponentType;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ILanguageComponentType_FWD_DEFINED__
 #define __ILanguageComponentType_FWD_DEFINED__
 typedef interface ILanguageComponentType ILanguageComponentType;
+#ifdef __cplusplus
+interface ILanguageComponentType;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMPEG2ComponentType_FWD_DEFINED__
 #define __IMPEG2ComponentType_FWD_DEFINED__
 typedef interface IMPEG2ComponentType IMPEG2ComponentType;
+#ifdef __cplusplus
+interface IMPEG2ComponentType;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IATSCComponentType_FWD_DEFINED__
 #define __IATSCComponentType_FWD_DEFINED__
 typedef interface IATSCComponentType IATSCComponentType;
+#ifdef __cplusplus
+interface IATSCComponentType;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumComponentTypes_FWD_DEFINED__
 #define __IEnumComponentTypes_FWD_DEFINED__
 typedef interface IEnumComponentTypes IEnumComponentTypes;
+#ifdef __cplusplus
+interface IEnumComponentTypes;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponentTypes_FWD_DEFINED__
 #define __IComponentTypes_FWD_DEFINED__
 typedef interface IComponentTypes IComponentTypes;
+#ifdef __cplusplus
+interface IComponentTypes;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponent_FWD_DEFINED__
 #define __IComponent_FWD_DEFINED__
 typedef interface IComponent IComponent;
+#ifdef __cplusplus
+interface IComponent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAnalogAudioComponentType_FWD_DEFINED__
 #define __IAnalogAudioComponentType_FWD_DEFINED__
 typedef interface IAnalogAudioComponentType IAnalogAudioComponentType;
+#ifdef __cplusplus
+interface IAnalogAudioComponentType;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMPEG2Component_FWD_DEFINED__
 #define __IMPEG2Component_FWD_DEFINED__
 typedef interface IMPEG2Component IMPEG2Component;
+#ifdef __cplusplus
+interface IMPEG2Component;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumComponents_FWD_DEFINED__
 #define __IEnumComponents_FWD_DEFINED__
 typedef interface IEnumComponents IEnumComponents;
+#ifdef __cplusplus
+interface IEnumComponents;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponents_FWD_DEFINED__
 #define __IComponents_FWD_DEFINED__
 typedef interface IComponents IComponents;
+#ifdef __cplusplus
+interface IComponents;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponentsOld_FWD_DEFINED__
 #define __IComponentsOld_FWD_DEFINED__
 typedef interface IComponentsOld IComponentsOld;
+#ifdef __cplusplus
+interface IComponentsOld;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ILocator_FWD_DEFINED__
 #define __ILocator_FWD_DEFINED__
 typedef interface ILocator ILocator;
+#ifdef __cplusplus
+interface ILocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IAnalogLocator_FWD_DEFINED__
 #define __IAnalogLocator_FWD_DEFINED__
 typedef interface IAnalogLocator IAnalogLocator;
+#ifdef __cplusplus
+interface IAnalogLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDigitalLocator_FWD_DEFINED__
 #define __IDigitalLocator_FWD_DEFINED__
 typedef interface IDigitalLocator IDigitalLocator;
+#ifdef __cplusplus
+interface IDigitalLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IATSCLocator_FWD_DEFINED__
 #define __IATSCLocator_FWD_DEFINED__
 typedef interface IATSCLocator IATSCLocator;
+#ifdef __cplusplus
+interface IATSCLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IATSCLocator2_FWD_DEFINED__
 #define __IATSCLocator2_FWD_DEFINED__
 typedef interface IATSCLocator2 IATSCLocator2;
+#ifdef __cplusplus
+interface IATSCLocator2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDigitalCableLocator_FWD_DEFINED__
 #define __IDigitalCableLocator_FWD_DEFINED__
 typedef interface IDigitalCableLocator IDigitalCableLocator;
+#ifdef __cplusplus
+interface IDigitalCableLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBTLocator_FWD_DEFINED__
 #define __IDVBTLocator_FWD_DEFINED__
 typedef interface IDVBTLocator IDVBTLocator;
+#ifdef __cplusplus
+interface IDVBTLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBTLocator2_FWD_DEFINED__
 #define __IDVBTLocator2_FWD_DEFINED__
 typedef interface IDVBTLocator2 IDVBTLocator2;
+#ifdef __cplusplus
+interface IDVBTLocator2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBSLocator_FWD_DEFINED__
 #define __IDVBSLocator_FWD_DEFINED__
 typedef interface IDVBSLocator IDVBSLocator;
+#ifdef __cplusplus
+interface IDVBSLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBSLocator2_FWD_DEFINED__
 #define __IDVBSLocator2_FWD_DEFINED__
 typedef interface IDVBSLocator2 IDVBSLocator2;
+#ifdef __cplusplus
+interface IDVBSLocator2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBCLocator_FWD_DEFINED__
 #define __IDVBCLocator_FWD_DEFINED__
 typedef interface IDVBCLocator IDVBCLocator;
+#ifdef __cplusplus
+interface IDVBCLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IISDBSLocator_FWD_DEFINED__
 #define __IISDBSLocator_FWD_DEFINED__
 typedef interface IISDBSLocator IISDBSLocator;
+#ifdef __cplusplus
+interface IISDBSLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESEvent_FWD_DEFINED__
 #define __IESEvent_FWD_DEFINED__
 typedef interface IESEvent IESEvent;
+#ifdef __cplusplus
+interface IESEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESOpenMmiEvent_FWD_DEFINED__
 #define __IESOpenMmiEvent_FWD_DEFINED__
 typedef interface IESOpenMmiEvent IESOpenMmiEvent;
+#ifdef __cplusplus
+interface IESOpenMmiEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESCloseMmiEvent_FWD_DEFINED__
 #define __IESCloseMmiEvent_FWD_DEFINED__
 typedef interface IESCloseMmiEvent IESCloseMmiEvent;
+#ifdef __cplusplus
+interface IESCloseMmiEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESValueUpdatedEvent_FWD_DEFINED__
 #define __IESValueUpdatedEvent_FWD_DEFINED__
 typedef interface IESValueUpdatedEvent IESValueUpdatedEvent;
+#ifdef __cplusplus
+interface IESValueUpdatedEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESRequestTunerEvent_FWD_DEFINED__
 #define __IESRequestTunerEvent_FWD_DEFINED__
 typedef interface IESRequestTunerEvent IESRequestTunerEvent;
+#ifdef __cplusplus
+interface IESRequestTunerEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESIsdbCasResponseEvent_FWD_DEFINED__
 #define __IESIsdbCasResponseEvent_FWD_DEFINED__
 typedef interface IESIsdbCasResponseEvent IESIsdbCasResponseEvent;
+#ifdef __cplusplus
+interface IESIsdbCasResponseEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IGpnvsCommonBase_FWD_DEFINED__
 #define __IGpnvsCommonBase_FWD_DEFINED__
 typedef interface IGpnvsCommonBase IGpnvsCommonBase;
+#ifdef __cplusplus
+interface IGpnvsCommonBase;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESEventFactory_FWD_DEFINED__
 #define __IESEventFactory_FWD_DEFINED__
 typedef interface IESEventFactory IESEventFactory;
+#ifdef __cplusplus
+interface IESEventFactory;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESLicenseRenewalResultEvent_FWD_DEFINED__
 #define __IESLicenseRenewalResultEvent_FWD_DEFINED__
 typedef interface IESLicenseRenewalResultEvent IESLicenseRenewalResultEvent;
+#ifdef __cplusplus
+interface IESLicenseRenewalResultEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESFileExpiryDateEvent_FWD_DEFINED__
 #define __IESFileExpiryDateEvent_FWD_DEFINED__
 typedef interface IESFileExpiryDateEvent IESFileExpiryDateEvent;
+#ifdef __cplusplus
+interface IESFileExpiryDateEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESEvents_FWD_DEFINED__
 #define __IESEvents_FWD_DEFINED__
 typedef interface IESEvents IESEvents;
+#ifdef __cplusplus
+interface IESEvents;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESEventService_FWD_DEFINED__
 #define __IESEventService_FWD_DEFINED__
 typedef interface IESEventService IESEventService;
+#ifdef __cplusplus
+interface IESEventService;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IESEventServiceConfiguration_FWD_DEFINED__
 #define __IESEventServiceConfiguration_FWD_DEFINED__
 typedef interface IESEventServiceConfiguration IESEventServiceConfiguration;
+#ifdef __cplusplus
+interface IESEventServiceConfiguration;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBroadcastEvent_FWD_DEFINED__
 #define __IBroadcastEvent_FWD_DEFINED__
 typedef interface IBroadcastEvent IBroadcastEvent;
+#ifdef __cplusplus
+interface IBroadcastEvent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBroadcastEventEx_FWD_DEFINED__
 #define __IBroadcastEventEx_FWD_DEFINED__
 typedef interface IBroadcastEventEx IBroadcastEventEx;
+#ifdef __cplusplus
+interface IBroadcastEventEx;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IRegisterTuner_FWD_DEFINED__
 #define __IRegisterTuner_FWD_DEFINED__
 typedef interface IRegisterTuner IRegisterTuner;
+#ifdef __cplusplus
+interface IRegisterTuner;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDAComparable_FWD_DEFINED__
 #define __IBDAComparable_FWD_DEFINED__
 typedef interface IBDAComparable IBDAComparable;
+#ifdef __cplusplus
+interface IBDAComparable;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPersistTuneXml_FWD_DEFINED__
 #define __IPersistTuneXml_FWD_DEFINED__
 typedef interface IPersistTuneXml IPersistTuneXml;
+#ifdef __cplusplus
+interface IPersistTuneXml;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPersistTuneXmlUtility_FWD_DEFINED__
 #define __IPersistTuneXmlUtility_FWD_DEFINED__
 typedef interface IPersistTuneXmlUtility IPersistTuneXmlUtility;
+#ifdef __cplusplus
+interface IPersistTuneXmlUtility;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IPersistTuneXmlUtility2_FWD_DEFINED__
 #define __IPersistTuneXmlUtility2_FWD_DEFINED__
 typedef interface IPersistTuneXmlUtility2 IPersistTuneXmlUtility2;
+#ifdef __cplusplus
+interface IPersistTuneXmlUtility2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBDACreateTuneRequestEx_FWD_DEFINED__
 #define __IBDACreateTuneRequestEx_FWD_DEFINED__
 typedef interface IBDACreateTuneRequestEx IBDACreateTuneRequestEx;
+#ifdef __cplusplus
+interface IBDACreateTuneRequestEx;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __SystemTuningSpaces_FWD_DEFINED__
@@ -784,141 +1004,225 @@
 #ifndef __IAnalogLocator_FWD_DEFINED__
 #define __IAnalogLocator_FWD_DEFINED__
 typedef interface IAnalogLocator IAnalogLocator;
+#ifdef __cplusplus
+interface IAnalogLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IATSCLocator_FWD_DEFINED__
 #define __IATSCLocator_FWD_DEFINED__
 typedef interface IATSCLocator IATSCLocator;
+#ifdef __cplusplus
+interface IATSCLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponent_FWD_DEFINED__
 #define __IComponent_FWD_DEFINED__
 typedef interface IComponent IComponent;
+#ifdef __cplusplus
+interface IComponent;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponents_FWD_DEFINED__
 #define __IComponents_FWD_DEFINED__
 typedef interface IComponents IComponents;
+#ifdef __cplusplus
+interface IComponents;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponentType_FWD_DEFINED__
 #define __IComponentType_FWD_DEFINED__
 typedef interface IComponentType IComponentType;
+#ifdef __cplusplus
+interface IComponentType;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IComponentTypes_FWD_DEFINED__
 #define __IComponentTypes_FWD_DEFINED__
 typedef interface IComponentTypes IComponentTypes;
+#ifdef __cplusplus
+interface IComponentTypes;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDigitalCableLocator_FWD_DEFINED__
 #define __IDigitalCableLocator_FWD_DEFINED__
 typedef interface IDigitalCableLocator IDigitalCableLocator;
+#ifdef __cplusplus
+interface IDigitalCableLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDigitalCableTuneRequest_FWD_DEFINED__
 #define __IDigitalCableTuneRequest_FWD_DEFINED__
 typedef interface IDigitalCableTuneRequest IDigitalCableTuneRequest;
+#ifdef __cplusplus
+interface IDigitalCableTuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDigitalCableTuningSpace_FWD_DEFINED__
 #define __IDigitalCableTuningSpace_FWD_DEFINED__
 typedef interface IDigitalCableTuningSpace IDigitalCableTuningSpace;
+#ifdef __cplusplus
+interface IDigitalCableTuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBCLocator_FWD_DEFINED__
 #define __IDVBCLocator_FWD_DEFINED__
 typedef interface IDVBCLocator IDVBCLocator;
+#ifdef __cplusplus
+interface IDVBCLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBSLocator_FWD_DEFINED__
 #define __IDVBSLocator_FWD_DEFINED__
 typedef interface IDVBSLocator IDVBSLocator;
+#ifdef __cplusplus
+interface IDVBSLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBSLocator2_FWD_DEFINED__
 #define __IDVBSLocator2_FWD_DEFINED__
 typedef interface IDVBSLocator2 IDVBSLocator2;
+#ifdef __cplusplus
+interface IDVBSLocator2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBTLocator_FWD_DEFINED__
 #define __IDVBTLocator_FWD_DEFINED__
 typedef interface IDVBTLocator IDVBTLocator;
+#ifdef __cplusplus
+interface IDVBTLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IDVBTLocator2_FWD_DEFINED__
 #define __IDVBTLocator2_FWD_DEFINED__
 typedef interface IDVBTLocator2 IDVBTLocator2;
+#ifdef __cplusplus
+interface IDVBTLocator2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumComponents_FWD_DEFINED__
 #define __IEnumComponents_FWD_DEFINED__
 typedef interface IEnumComponents IEnumComponents;
+#ifdef __cplusplus
+interface IEnumComponents;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumComponentTypes_FWD_DEFINED__
 #define __IEnumComponentTypes_FWD_DEFINED__
 typedef interface IEnumComponentTypes IEnumComponentTypes;
+#ifdef __cplusplus
+interface IEnumComponentTypes;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumTuningSpaces_FWD_DEFINED__
 #define __IEnumTuningSpaces_FWD_DEFINED__
 typedef interface IEnumTuningSpaces IEnumTuningSpaces;
+#ifdef __cplusplus
+interface IEnumTuningSpaces;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IISDBSLocator_FWD_DEFINED__
 #define __IISDBSLocator_FWD_DEFINED__
 typedef interface IISDBSLocator IISDBSLocator;
+#ifdef __cplusplus
+interface IISDBSLocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ILanguageComponentType_FWD_DEFINED__
 #define __ILanguageComponentType_FWD_DEFINED__
 typedef interface ILanguageComponentType ILanguageComponentType;
+#ifdef __cplusplus
+interface ILanguageComponentType;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ILocator_FWD_DEFINED__
 #define __ILocator_FWD_DEFINED__
 typedef interface ILocator ILocator;
+#ifdef __cplusplus
+interface ILocator;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMPEG2Component_FWD_DEFINED__
 #define __IMPEG2Component_FWD_DEFINED__
 typedef interface IMPEG2Component IMPEG2Component;
+#ifdef __cplusplus
+interface IMPEG2Component;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IMPEG2ComponentType_FWD_DEFINED__
 #define __IMPEG2ComponentType_FWD_DEFINED__
 typedef interface IMPEG2ComponentType IMPEG2ComponentType;
+#ifdef __cplusplus
+interface IMPEG2ComponentType;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IScanningTuner_FWD_DEFINED__
 #define __IScanningTuner_FWD_DEFINED__
 typedef interface IScanningTuner IScanningTuner;
+#ifdef __cplusplus
+interface IScanningTuner;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITuneRequest_FWD_DEFINED__
 #define __ITuneRequest_FWD_DEFINED__
 typedef interface ITuneRequest ITuneRequest;
+#ifdef __cplusplus
+interface ITuneRequest;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITuner_FWD_DEFINED__
 #define __ITuner_FWD_DEFINED__
 typedef interface ITuner ITuner;
+#ifdef __cplusplus
+interface ITuner;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITunerCap_FWD_DEFINED__
 #define __ITunerCap_FWD_DEFINED__
 typedef interface ITunerCap ITunerCap;
+#ifdef __cplusplus
+interface ITunerCap;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITuningSpace_FWD_DEFINED__
 #define __ITuningSpace_FWD_DEFINED__
 typedef interface ITuningSpace ITuningSpace;
+#ifdef __cplusplus
+interface ITuningSpace;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __ITuningSpaceContainer_FWD_DEFINED__
 #define __ITuningSpaceContainer_FWD_DEFINED__
 typedef interface ITuningSpaceContainer ITuningSpaceContainer;
+#ifdef __cplusplus
+interface ITuningSpaceContainer;
+#endif /* __cplusplus */
 #endif
 
 
@@ -1039,7 +1343,6 @@
     DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST = 1
 };
 
-
 #define SID_ESEventService CLSID_ESEventService
 #define SID_ESEventFactory CLSID_ESEventFactory
 #define SID_SBroadcastEventService CLSID_BroadcastEventService
@@ -1081,29 +1384,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ITuningSpaces* This);
+        ITuningSpaces *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ITuningSpaces* This);
+        ITuningSpaces *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -1111,7 +1414,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -1123,24 +1426,25 @@
 
     /*** ITuningSpaces methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Count)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         LONG *Count);
 
     HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         IEnumVARIANT **NewEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_Item)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         VARIANT varIndex,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *get_EnumTuningSpaces)(
-        ITuningSpaces* This,
+        ITuningSpaces *This,
         IEnumTuningSpaces **NewEnum);
 
     END_INTERFACE
 } ITuningSpacesVtbl;
+
 interface ITuningSpaces {
     CONST_VTBL ITuningSpacesVtbl* lpVtbl;
 };
@@ -1273,29 +1577,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ITuningSpaceContainer* This);
+        ITuningSpaceContainer *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ITuningSpaceContainer* This);
+        ITuningSpaceContainer *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -1303,7 +1607,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -1315,66 +1619,67 @@
 
     /*** ITuningSpaceContainer methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Count)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         LONG *Count);
 
     HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         IEnumVARIANT **NewEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_Item)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         VARIANT varIndex,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *put_Item)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         VARIANT varIndex,
         ITuningSpace *TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *TuningSpacesForCLSID)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         BSTR SpaceCLSID,
         ITuningSpaces **NewColl);
 
     HRESULT (STDMETHODCALLTYPE *_TuningSpacesForCLSID)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         REFCLSID SpaceCLSID,
         ITuningSpaces **NewColl);
 
     HRESULT (STDMETHODCALLTYPE *TuningSpacesForName)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         BSTR Name,
         ITuningSpaces **NewColl);
 
     HRESULT (STDMETHODCALLTYPE *FindID)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         ITuningSpace *TuningSpace,
         LONG *ID);
 
     HRESULT (STDMETHODCALLTYPE *Add)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         ITuningSpace *TuningSpace,
         VARIANT *NewIndex);
 
     HRESULT (STDMETHODCALLTYPE *get_EnumTuningSpaces)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         IEnumTuningSpaces **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *Remove)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         VARIANT Index);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxCount)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         LONG *MaxCount);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxCount)(
-        ITuningSpaceContainer* This,
+        ITuningSpaceContainer *This,
         LONG MaxCount);
 
     END_INTERFACE
 } ITuningSpaceContainerVtbl;
+
 interface ITuningSpaceContainer {
     CONST_VTBL ITuningSpaceContainerVtbl* lpVtbl;
 };
@@ -1554,29 +1859,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ITuningSpace* This);
+        ITuningSpace *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ITuningSpace* This);
+        ITuningSpace *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -1584,7 +1889,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -1596,83 +1901,84 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        ITuningSpace* This,
+        ITuningSpace *This,
         ITuningSpace **NewTS);
 
     END_INTERFACE
 } ITuningSpaceVtbl;
+
 interface ITuningSpace {
     CONST_VTBL ITuningSpaceVtbl* lpVtbl;
 };
@@ -1833,36 +2139,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumTuningSpaces* This,
+        IEnumTuningSpaces *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumTuningSpaces* This);
+        IEnumTuningSpaces *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumTuningSpaces* This);
+        IEnumTuningSpaces *This);
 
     /*** IEnumTuningSpaces methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumTuningSpaces* This,
+        IEnumTuningSpaces *This,
         ULONG celt,
         ITuningSpace **rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumTuningSpaces* This,
+        IEnumTuningSpaces *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumTuningSpaces* This);
+        IEnumTuningSpaces *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumTuningSpaces* This,
+        IEnumTuningSpaces *This,
         IEnumTuningSpaces **ppEnum);
 
     END_INTERFACE
 } IEnumTuningSpacesVtbl;
+
 interface IEnumTuningSpaces {
     CONST_VTBL IEnumTuningSpacesVtbl* lpVtbl;
 };
@@ -1937,29 +2244,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBTuningSpace* This);
+        IDVBTuningSpace *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBTuningSpace* This);
+        IDVBTuningSpace *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -1967,7 +2274,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -1979,92 +2286,93 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         ITuningSpace **NewTS);
 
     /*** IDVBTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SystemType)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         DVBSystemType *SysType);
 
     HRESULT (STDMETHODCALLTYPE *put_SystemType)(
-        IDVBTuningSpace* This,
+        IDVBTuningSpace *This,
         DVBSystemType SysType);
 
     END_INTERFACE
 } IDVBTuningSpaceVtbl;
+
 interface IDVBTuningSpace {
     CONST_VTBL IDVBTuningSpaceVtbl* lpVtbl;
 };
@@ -2227,29 +2535,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBTuningSpace2* This);
+        IDVBTuningSpace2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBTuningSpace2* This);
+        IDVBTuningSpace2 *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -2257,7 +2565,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -2269,101 +2577,102 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         ITuningSpace **NewTS);
 
     /*** IDVBTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SystemType)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         DVBSystemType *SysType);
 
     HRESULT (STDMETHODCALLTYPE *put_SystemType)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         DVBSystemType SysType);
 
     /*** IDVBTuningSpace2 methods ***/
     HRESULT (STDMETHODCALLTYPE *get_NetworkID)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         LONG *NetworkID);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkID)(
-        IDVBTuningSpace2* This,
+        IDVBTuningSpace2 *This,
         LONG NetworkID);
 
     END_INTERFACE
 } IDVBTuningSpace2Vtbl;
+
 interface IDVBTuningSpace2 {
     CONST_VTBL IDVBTuningSpace2Vtbl* lpVtbl;
 };
@@ -2560,29 +2869,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBSTuningSpace* This);
+        IDVBSTuningSpace *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBSTuningSpace* This);
+        IDVBSTuningSpace *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -2590,7 +2899,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -2602,142 +2911,143 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         ITuningSpace **NewTS);
 
     /*** IDVBTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SystemType)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         DVBSystemType *SysType);
 
     HRESULT (STDMETHODCALLTYPE *put_SystemType)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         DVBSystemType SysType);
 
     /*** IDVBTuningSpace2 methods ***/
     HRESULT (STDMETHODCALLTYPE *get_NetworkID)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         LONG *NetworkID);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkID)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         LONG NetworkID);
 
     /*** IDVBSTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_LowOscillator)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         LONG *LowOscillator);
 
     HRESULT (STDMETHODCALLTYPE *put_LowOscillator)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         LONG LowOscillator);
 
     HRESULT (STDMETHODCALLTYPE *get_HighOscillator)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         LONG *HighOscillator);
 
     HRESULT (STDMETHODCALLTYPE *put_HighOscillator)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         LONG HighOscillator);
 
     HRESULT (STDMETHODCALLTYPE *get_LNBSwitch)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         LONG *LNBSwitch);
 
     HRESULT (STDMETHODCALLTYPE *put_LNBSwitch)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         LONG LNBSwitch);
 
     HRESULT (STDMETHODCALLTYPE *get_InputRange)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR *InputRange);
 
     HRESULT (STDMETHODCALLTYPE *put_InputRange)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         BSTR InputRange);
 
     HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         SpectralInversion *SpectralInversionVal);
 
     HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
-        IDVBSTuningSpace* This,
+        IDVBSTuningSpace *This,
         SpectralInversion SpectralInversionVal);
 
     END_INTERFACE
 } IDVBSTuningSpaceVtbl;
+
 interface IDVBSTuningSpace {
     CONST_VTBL IDVBSTuningSpaceVtbl* lpVtbl;
 };
@@ -2946,29 +3256,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAuxInTuningSpace* This);
+        IAuxInTuningSpace *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAuxInTuningSpace* This);
+        IAuxInTuningSpace *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -2976,7 +3286,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -2988,83 +3298,84 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IAuxInTuningSpace* This,
+        IAuxInTuningSpace *This,
         ITuningSpace **NewTS);
 
     END_INTERFACE
 } IAuxInTuningSpaceVtbl;
+
 interface IAuxInTuningSpace {
     CONST_VTBL IAuxInTuningSpaceVtbl* lpVtbl;
 };
@@ -3217,29 +3528,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAuxInTuningSpace2* This);
+        IAuxInTuningSpace2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAuxInTuningSpace2* This);
+        IAuxInTuningSpace2 *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -3247,7 +3558,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -3259,92 +3570,93 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         ITuningSpace **NewTS);
 
     /*** IAuxInTuningSpace2 methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         LONG *CountryCodeVal);
 
     HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
-        IAuxInTuningSpace2* This,
+        IAuxInTuningSpace2 *This,
         LONG NewCountryCodeVal);
 
     END_INTERFACE
 } IAuxInTuningSpace2Vtbl;
+
 interface IAuxInTuningSpace2 {
     CONST_VTBL IAuxInTuningSpace2Vtbl* lpVtbl;
 };
@@ -3525,29 +3837,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAnalogTVTuningSpace* This);
+        IAnalogTVTuningSpace *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAnalogTVTuningSpace* This);
+        IAnalogTVTuningSpace *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -3555,7 +3867,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -3567,116 +3879,117 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         ITuningSpace **NewTS);
 
     /*** IAnalogTVTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinChannel)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         LONG *MinChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinChannel)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         LONG NewMinChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxChannel)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         LONG *MaxChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxChannel)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         LONG NewMaxChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_InputType)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         TunerInputType *InputTypeVal);
 
     HRESULT (STDMETHODCALLTYPE *put_InputType)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         TunerInputType NewInputTypeVal);
 
     HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         LONG *CountryCodeVal);
 
     HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
-        IAnalogTVTuningSpace* This,
+        IAnalogTVTuningSpace *This,
         LONG NewCountryCodeVal);
 
     END_INTERFACE
 } IAnalogTVTuningSpaceVtbl;
+
 interface IAnalogTVTuningSpace {
     CONST_VTBL IAnalogTVTuningSpaceVtbl* lpVtbl;
 };
@@ -3881,29 +4194,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IATSCTuningSpace* This);
+        IATSCTuningSpace *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IATSCTuningSpace* This);
+        IATSCTuningSpace *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -3911,7 +4224,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -3923,149 +4236,150 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         ITuningSpace **NewTS);
 
     /*** IAnalogTVTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG *MinChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG NewMinChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG *MaxChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG NewMaxChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_InputType)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         TunerInputType *InputTypeVal);
 
     HRESULT (STDMETHODCALLTYPE *put_InputType)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         TunerInputType NewInputTypeVal);
 
     HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG *CountryCodeVal);
 
     HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG NewCountryCodeVal);
 
     /*** IATSCTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinMinorChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG *MinMinorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinMinorChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG NewMinMinorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxMinorChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG *MaxMinorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxMinorChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG NewMaxMinorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MinPhysicalChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG *MinPhysicalChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinPhysicalChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG NewMinPhysicalChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxPhysicalChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG *MaxPhysicalChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxPhysicalChannel)(
-        IATSCTuningSpace* This,
+        IATSCTuningSpace *This,
         LONG NewMaxPhysicalChannelVal);
 
     END_INTERFACE
 } IATSCTuningSpaceVtbl;
+
 interface IATSCTuningSpace {
     CONST_VTBL IATSCTuningSpaceVtbl* lpVtbl;
 };
@@ -4304,29 +4618,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDigitalCableTuningSpace* This);
+        IDigitalCableTuningSpace *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDigitalCableTuningSpace* This);
+        IDigitalCableTuningSpace *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -4334,7 +4648,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -4346,182 +4660,183 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         ITuningSpace **NewTS);
 
     /*** IAnalogTVTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MinChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMinChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MaxChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMaxChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_InputType)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         TunerInputType *InputTypeVal);
 
     HRESULT (STDMETHODCALLTYPE *put_InputType)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         TunerInputType NewInputTypeVal);
 
     HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *CountryCodeVal);
 
     HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewCountryCodeVal);
 
     /*** IATSCTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinMinorChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MinMinorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinMinorChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMinMinorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxMinorChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MaxMinorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxMinorChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMaxMinorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MinPhysicalChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MinPhysicalChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinPhysicalChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMinPhysicalChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxPhysicalChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MaxPhysicalChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxPhysicalChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMaxPhysicalChannelVal);
 
     /*** IDigitalCableTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinMajorChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MinMajorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinMajorChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMinMajorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxMajorChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MaxMajorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxMajorChannel)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMaxMajorChannelVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MinSourceID)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MinSourceIDVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinSourceID)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMinSourceIDVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxSourceID)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG *MaxSourceIDVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxSourceID)(
-        IDigitalCableTuningSpace* This,
+        IDigitalCableTuningSpace *This,
         LONG NewMaxSourceIDVal);
 
     END_INTERFACE
 } IDigitalCableTuningSpaceVtbl;
+
 interface IDigitalCableTuningSpace {
     CONST_VTBL IDigitalCableTuningSpaceVtbl* lpVtbl;
 };
@@ -4788,29 +5103,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAnalogRadioTuningSpace* This);
+        IAnalogRadioTuningSpace *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAnalogRadioTuningSpace* This);
+        IAnalogRadioTuningSpace *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -4818,7 +5133,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -4830,108 +5145,109 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         ITuningSpace **NewTS);
 
     /*** IAnalogRadioTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinFrequency)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         LONG *MinFrequencyVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinFrequency)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         LONG NewMinFrequencyVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxFrequency)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         LONG *MaxFrequencyVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxFrequency)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         LONG NewMaxFrequencyVal);
 
     HRESULT (STDMETHODCALLTYPE *get_Step)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         LONG *StepVal);
 
     HRESULT (STDMETHODCALLTYPE *put_Step)(
-        IAnalogRadioTuningSpace* This,
+        IAnalogRadioTuningSpace *This,
         LONG NewStepVal);
 
     END_INTERFACE
 } IAnalogRadioTuningSpaceVtbl;
+
 interface IAnalogRadioTuningSpace {
     CONST_VTBL IAnalogRadioTuningSpaceVtbl* lpVtbl;
 };
@@ -5110,29 +5426,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAnalogRadioTuningSpace2* This);
+        IAnalogRadioTuningSpace2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAnalogRadioTuningSpace2* This);
+        IAnalogRadioTuningSpace2 *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -5140,7 +5456,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -5152,117 +5468,118 @@
 
     /*** ITuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_UniqueName)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_UniqueName)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_FriendlyName)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR *Name);
 
     HRESULT (STDMETHODCALLTYPE *put_FriendlyName)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR Name);
 
     HRESULT (STDMETHODCALLTYPE *get_CLSID)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR *SpaceCLSID);
 
     HRESULT (STDMETHODCALLTYPE *get_NetworkType)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put_NetworkType)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get__NetworkType)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         GUID *NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__NetworkType)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         REFCLSID NetworkTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *EnumCategoryGUIDs)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         IEnumGUID **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumDeviceMonikers)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         IEnumMoniker **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultPreferredComponentTypes)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultPreferredComponentTypes)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         IComponentTypes *NewComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR *pMapping);
 
     HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         BSTR Mapping);
 
     HRESULT (STDMETHODCALLTYPE *get_DefaultLocator)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         ILocator **LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DefaultLocator)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         ILocator *LocatorVal);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         ITuningSpace **NewTS);
 
     /*** IAnalogRadioTuningSpace methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinFrequency)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         LONG *MinFrequencyVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MinFrequency)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         LONG NewMinFrequencyVal);
 
     HRESULT (STDMETHODCALLTYPE *get_MaxFrequency)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         LONG *MaxFrequencyVal);
 
     HRESULT (STDMETHODCALLTYPE *put_MaxFrequency)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         LONG NewMaxFrequencyVal);
 
     HRESULT (STDMETHODCALLTYPE *get_Step)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         LONG *StepVal);
 
     HRESULT (STDMETHODCALLTYPE *put_Step)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         LONG NewStepVal);
 
     /*** IAnalogRadioTuningSpace2 methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         LONG *CountryCodeVal);
 
     HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
-        IAnalogRadioTuningSpace2* This,
+        IAnalogRadioTuningSpace2 *This,
         LONG NewCountryCodeVal);
 
     END_INTERFACE
 } IAnalogRadioTuningSpace2Vtbl;
+
 interface IAnalogRadioTuningSpace2 {
     CONST_VTBL IAnalogRadioTuningSpace2Vtbl* lpVtbl;
 };
@@ -5460,29 +5777,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ITuneRequest* This);
+        ITuneRequest *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ITuneRequest* This);
+        ITuneRequest *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -5490,7 +5807,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -5502,27 +5819,28 @@
 
     /*** ITuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *get_Components)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         IComponents **Components);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         ITuneRequest **NewTuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_Locator)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         ILocator **Locator);
 
     HRESULT (STDMETHODCALLTYPE *put_Locator)(
-        ITuneRequest* This,
+        ITuneRequest *This,
         ILocator *Locator);
 
     END_INTERFACE
 } ITuneRequestVtbl;
+
 interface ITuneRequest {
     CONST_VTBL ITuneRequestVtbl* lpVtbl;
 };
@@ -5619,29 +5937,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IChannelIDTuneRequest* This);
+        IChannelIDTuneRequest *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IChannelIDTuneRequest* This);
+        IChannelIDTuneRequest *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -5649,7 +5967,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -5661,36 +5979,37 @@
 
     /*** ITuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *get_Components)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         IComponents **Components);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         ITuneRequest **NewTuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_Locator)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         ILocator **Locator);
 
     HRESULT (STDMETHODCALLTYPE *put_Locator)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         ILocator *Locator);
 
     /*** IChannelIDTuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_ChannelID)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         BSTR *ChannelID);
 
     HRESULT (STDMETHODCALLTYPE *put_ChannelID)(
-        IChannelIDTuneRequest* This,
+        IChannelIDTuneRequest *This,
         BSTR ChannelID);
 
     END_INTERFACE
 } IChannelIDTuneRequestVtbl;
+
 interface IChannelIDTuneRequest {
     CONST_VTBL IChannelIDTuneRequestVtbl* lpVtbl;
 };
@@ -5797,29 +6116,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IChannelTuneRequest* This);
+        IChannelTuneRequest *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IChannelTuneRequest* This);
+        IChannelTuneRequest *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -5827,7 +6146,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -5839,36 +6158,37 @@
 
     /*** ITuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *get_Components)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         IComponents **Components);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         ITuneRequest **NewTuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_Locator)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         ILocator **Locator);
 
     HRESULT (STDMETHODCALLTYPE *put_Locator)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         ILocator *Locator);
 
     /*** IChannelTuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Channel)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         LONG *Channel);
 
     HRESULT (STDMETHODCALLTYPE *put_Channel)(
-        IChannelTuneRequest* This,
+        IChannelTuneRequest *This,
         LONG Channel);
 
     END_INTERFACE
 } IChannelTuneRequestVtbl;
+
 interface IChannelTuneRequest {
     CONST_VTBL IChannelTuneRequestVtbl* lpVtbl;
 };
@@ -5975,29 +6295,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IATSCChannelTuneRequest* This);
+        IATSCChannelTuneRequest *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IATSCChannelTuneRequest* This);
+        IATSCChannelTuneRequest *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -6005,7 +6325,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -6017,45 +6337,46 @@
 
     /*** ITuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *get_Components)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         IComponents **Components);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         ITuneRequest **NewTuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_Locator)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         ILocator **Locator);
 
     HRESULT (STDMETHODCALLTYPE *put_Locator)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         ILocator *Locator);
 
     /*** IChannelTuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Channel)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         LONG *Channel);
 
     HRESULT (STDMETHODCALLTYPE *put_Channel)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         LONG Channel);
 
     /*** IATSCChannelTuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinorChannel)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         LONG *MinorChannel);
 
     HRESULT (STDMETHODCALLTYPE *put_MinorChannel)(
-        IATSCChannelTuneRequest* This,
+        IATSCChannelTuneRequest *This,
         LONG MinorChannel);
 
     END_INTERFACE
 } IATSCChannelTuneRequestVtbl;
+
 interface IATSCChannelTuneRequest {
     CONST_VTBL IATSCChannelTuneRequestVtbl* lpVtbl;
 };
@@ -6178,29 +6499,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDigitalCableTuneRequest* This);
+        IDigitalCableTuneRequest *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDigitalCableTuneRequest* This);
+        IDigitalCableTuneRequest *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -6208,7 +6529,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -6220,62 +6541,63 @@
 
     /*** ITuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *get_Components)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         IComponents **Components);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         ITuneRequest **NewTuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_Locator)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         ILocator **Locator);
 
     HRESULT (STDMETHODCALLTYPE *put_Locator)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         ILocator *Locator);
 
     /*** IChannelTuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Channel)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         LONG *Channel);
 
     HRESULT (STDMETHODCALLTYPE *put_Channel)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         LONG Channel);
 
     /*** IATSCChannelTuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MinorChannel)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         LONG *MinorChannel);
 
     HRESULT (STDMETHODCALLTYPE *put_MinorChannel)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         LONG MinorChannel);
 
     /*** IDigitalCableTuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_MajorChannel)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         LONG *pMajorChannel);
 
     HRESULT (STDMETHODCALLTYPE *put_MajorChannel)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         LONG MajorChannel);
 
     HRESULT (STDMETHODCALLTYPE *get_SourceID)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         LONG *pSourceID);
 
     HRESULT (STDMETHODCALLTYPE *put_SourceID)(
-        IDigitalCableTuneRequest* This,
+        IDigitalCableTuneRequest *This,
         LONG SourceID);
 
     END_INTERFACE
 } IDigitalCableTuneRequestVtbl;
+
 interface IDigitalCableTuneRequest {
     CONST_VTBL IDigitalCableTuneRequestVtbl* lpVtbl;
 };
@@ -6422,29 +6744,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBTuneRequest* This);
+        IDVBTuneRequest *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBTuneRequest* This);
+        IDVBTuneRequest *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -6452,7 +6774,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -6464,52 +6786,53 @@
 
     /*** ITuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *get_Components)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         IComponents **Components);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         ITuneRequest **NewTuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_Locator)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         ILocator **Locator);
 
     HRESULT (STDMETHODCALLTYPE *put_Locator)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         ILocator *Locator);
 
     /*** IDVBTuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_ONID)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         LONG *ONID);
 
     HRESULT (STDMETHODCALLTYPE *put_ONID)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         LONG ONID);
 
     HRESULT (STDMETHODCALLTYPE *get_TSID)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         LONG *TSID);
 
     HRESULT (STDMETHODCALLTYPE *put_TSID)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         LONG TSID);
 
     HRESULT (STDMETHODCALLTYPE *get_SID)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         LONG *SID);
 
     HRESULT (STDMETHODCALLTYPE *put_SID)(
-        IDVBTuneRequest* This,
+        IDVBTuneRequest *This,
         LONG SID);
 
     END_INTERFACE
 } IDVBTuneRequestVtbl;
+
 interface IDVBTuneRequest {
     CONST_VTBL IDVBTuneRequestVtbl* lpVtbl;
 };
@@ -6638,29 +6961,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMPEG2TuneRequest* This);
+        IMPEG2TuneRequest *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMPEG2TuneRequest* This);
+        IMPEG2TuneRequest *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -6668,7 +6991,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -6680,44 +7003,45 @@
 
     /*** ITuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *get_Components)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         IComponents **Components);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         ITuneRequest **NewTuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_Locator)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         ILocator **Locator);
 
     HRESULT (STDMETHODCALLTYPE *put_Locator)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         ILocator *Locator);
 
     /*** IMPEG2TuneRequest methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TSID)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         LONG *TSID);
 
     HRESULT (STDMETHODCALLTYPE *put_TSID)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         LONG TSID);
 
     HRESULT (STDMETHODCALLTYPE *get_ProgNo)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         LONG *ProgNo);
 
     HRESULT (STDMETHODCALLTYPE *put_ProgNo)(
-        IMPEG2TuneRequest* This,
+        IMPEG2TuneRequest *This,
         LONG ProgNo);
 
     END_INTERFACE
 } IMPEG2TuneRequestVtbl;
+
 interface IMPEG2TuneRequest {
     CONST_VTBL IMPEG2TuneRequestVtbl* lpVtbl;
 };
@@ -6830,29 +7154,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMPEG2TuneRequestFactory* This,
+        IMPEG2TuneRequestFactory *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMPEG2TuneRequestFactory* This);
+        IMPEG2TuneRequestFactory *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMPEG2TuneRequestFactory* This);
+        IMPEG2TuneRequestFactory *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IMPEG2TuneRequestFactory* This,
+        IMPEG2TuneRequestFactory *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IMPEG2TuneRequestFactory* This,
+        IMPEG2TuneRequestFactory *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IMPEG2TuneRequestFactory* This,
+        IMPEG2TuneRequestFactory *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -6860,7 +7184,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IMPEG2TuneRequestFactory* This,
+        IMPEG2TuneRequestFactory *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -6872,12 +7196,13 @@
 
     /*** IMPEG2TuneRequestFactory methods ***/
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequest)(
-        IMPEG2TuneRequestFactory* This,
+        IMPEG2TuneRequestFactory *This,
         ITuningSpace *TuningSpace,
         IMPEG2TuneRequest **TuneRequest);
 
     END_INTERFACE
 } IMPEG2TuneRequestFactoryVtbl;
+
 interface IMPEG2TuneRequestFactory {
     CONST_VTBL IMPEG2TuneRequestFactoryVtbl* lpVtbl;
 };
@@ -6952,18 +7277,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMPEG2TuneRequestSupport* This,
+        IMPEG2TuneRequestSupport *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMPEG2TuneRequestSupport* This);
+        IMPEG2TuneRequestSupport *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMPEG2TuneRequestSupport* This);
+        IMPEG2TuneRequestSupport *This);
 
     END_INTERFACE
 } IMPEG2TuneRequestSupportVtbl;
+
 interface IMPEG2TuneRequestSupport {
     CONST_VTBL IMPEG2TuneRequestSupportVtbl* lpVtbl;
 };
@@ -7027,35 +7353,36 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ITunerCap* This,
+        ITunerCap *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ITunerCap* This);
+        ITunerCap *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ITunerCap* This);
+        ITunerCap *This);
 
     /*** ITunerCap methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SupportedNetworkTypes)(
-        ITunerCap* This,
+        ITunerCap *This,
         ULONG ulcNetworkTypesMax,
         ULONG *pulcNetworkTypes,
         GUID *pguidNetworkTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_SupportedVideoFormats)(
-        ITunerCap* This,
+        ITunerCap *This,
         ULONG *pulAMTunerModeType,
         ULONG *pulAnalogVideoStandard);
 
     HRESULT (STDMETHODCALLTYPE *get_AuxInputCount)(
-        ITunerCap* This,
+        ITunerCap *This,
         ULONG *pulCompositeCount,
         ULONG *pulSvideoCount);
 
     END_INTERFACE
 } ITunerCapVtbl;
+
 interface ITunerCap {
     CONST_VTBL ITunerCapVtbl* lpVtbl;
 };
@@ -7123,23 +7450,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ITunerCapEx* This,
+        ITunerCapEx *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ITunerCapEx* This);
+        ITunerCapEx *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ITunerCapEx* This);
+        ITunerCapEx *This);
 
     /*** ITunerCapEx methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Has608_708Caption)(
-        ITunerCapEx* This,
+        ITunerCapEx *This,
         VARIANT_BOOL *pbHasCaption);
 
     END_INTERFACE
 } ITunerCapExVtbl;
+
 interface ITunerCapEx {
     CONST_VTBL ITunerCapExVtbl* lpVtbl;
 };
@@ -7226,59 +7554,60 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ITuner* This,
+        ITuner *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ITuner* This);
+        ITuner *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ITuner* This);
+        ITuner *This);
 
     /*** ITuner methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        ITuner* This,
+        ITuner *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *put_TuningSpace)(
-        ITuner* This,
+        ITuner *This,
         ITuningSpace *TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *EnumTuningSpaces)(
-        ITuner* This,
+        ITuner *This,
         IEnumTuningSpaces **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_TuneRequest)(
-        ITuner* This,
+        ITuner *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *put_TuneRequest)(
-        ITuner* This,
+        ITuner *This,
         ITuneRequest *TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *Validate)(
-        ITuner* This,
+        ITuner *This,
         ITuneRequest *TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_PreferredComponentTypes)(
-        ITuner* This,
+        ITuner *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_PreferredComponentTypes)(
-        ITuner* This,
+        ITuner *This,
         IComponentTypes *ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
-        ITuner* This,
+        ITuner *This,
         LONG *Strength);
 
     HRESULT (STDMETHODCALLTYPE *TriggerSignalEvents)(
-        ITuner* This,
+        ITuner *This,
         LONG Interval);
 
     END_INTERFACE
 } ITunerVtbl;
+
 interface ITuner {
     CONST_VTBL ITunerVtbl* lpVtbl;
 };
@@ -7386,77 +7715,78 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IScanningTuner* This);
+        IScanningTuner *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IScanningTuner* This);
+        IScanningTuner *This);
 
     /*** ITuner methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *put_TuningSpace)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         ITuningSpace *TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *EnumTuningSpaces)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         IEnumTuningSpaces **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_TuneRequest)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *put_TuneRequest)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         ITuneRequest *TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *Validate)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         ITuneRequest *TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_PreferredComponentTypes)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_PreferredComponentTypes)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         IComponentTypes *ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         LONG *Strength);
 
     HRESULT (STDMETHODCALLTYPE *TriggerSignalEvents)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         LONG Interval);
 
     /*** IScanningTuner methods ***/
     HRESULT (STDMETHODCALLTYPE *SeekUp)(
-        IScanningTuner* This);
+        IScanningTuner *This);
 
     HRESULT (STDMETHODCALLTYPE *SeekDown)(
-        IScanningTuner* This);
+        IScanningTuner *This);
 
     HRESULT (STDMETHODCALLTYPE *ScanUp)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         LONG MillisecondsPause);
 
     HRESULT (STDMETHODCALLTYPE *ScanDown)(
-        IScanningTuner* This,
+        IScanningTuner *This,
         LONG MillisecondsPause);
 
     HRESULT (STDMETHODCALLTYPE *AutoProgram)(
-        IScanningTuner* This);
+        IScanningTuner *This);
 
     END_INTERFACE
 } IScanningTunerVtbl;
+
 interface IScanningTuner {
     CONST_VTBL IScanningTunerVtbl* lpVtbl;
 };
@@ -7606,121 +7936,122 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IScanningTunerEx* This);
+        IScanningTunerEx *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IScanningTunerEx* This);
+        IScanningTunerEx *This);
 
     /*** ITuner methods ***/
     HRESULT (STDMETHODCALLTYPE *get_TuningSpace)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         ITuningSpace **TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *put_TuningSpace)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         ITuningSpace *TuningSpace);
 
     HRESULT (STDMETHODCALLTYPE *EnumTuningSpaces)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         IEnumTuningSpaces **ppEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_TuneRequest)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         ITuneRequest **TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *put_TuneRequest)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         ITuneRequest *TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *Validate)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         ITuneRequest *TuneRequest);
 
     HRESULT (STDMETHODCALLTYPE *get_PreferredComponentTypes)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         IComponentTypes **ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *put_PreferredComponentTypes)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         IComponentTypes *ComponentTypes);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG *Strength);
 
     HRESULT (STDMETHODCALLTYPE *TriggerSignalEvents)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG Interval);
 
     /*** IScanningTuner methods ***/
     HRESULT (STDMETHODCALLTYPE *SeekUp)(
-        IScanningTunerEx* This);
+        IScanningTunerEx *This);
 
     HRESULT (STDMETHODCALLTYPE *SeekDown)(
-        IScanningTunerEx* This);
+        IScanningTunerEx *This);
 
     HRESULT (STDMETHODCALLTYPE *ScanUp)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG MillisecondsPause);
 
     HRESULT (STDMETHODCALLTYPE *ScanDown)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG MillisecondsPause);
 
     HRESULT (STDMETHODCALLTYPE *AutoProgram)(
-        IScanningTunerEx* This);
+        IScanningTunerEx *This);
 
     /*** IScanningTunerEx methods ***/
     HRESULT (STDMETHODCALLTYPE *GetCurrentLocator)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         ILocator **pILocator);
 
     HRESULT (STDMETHODCALLTYPE *PerformExhaustiveScan)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG dwLowerFreq,
         LONG dwHigherFreq,
         VARIANT_BOOL bFineTune,
         HEVENT hEvent);
 
     HRESULT (STDMETHODCALLTYPE *TerminateCurrentScan)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG *pcurrentFreq);
 
     HRESULT (STDMETHODCALLTYPE *ResumeCurrentScan)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         HEVENT hEvent);
 
     HRESULT (STDMETHODCALLTYPE *GetTunerScanningCapability)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG *HardwareAssistedScanning,
         LONG *NumStandardsSupported,
         GUID *BroadcastStandards);
 
     HRESULT (STDMETHODCALLTYPE *GetTunerStatus)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG *SecondsLeft,
         LONG *CurrentLockType,
         LONG *AutoDetect,
         LONG *CurrentFreq);
 
     HRESULT (STDMETHODCALLTYPE *GetCurrentTunerStandardCapability)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         GUID CurrentBroadcastStandard,
         LONG *SettlingTime,
         LONG *TvStandardsSupported);
 
     HRESULT (STDMETHODCALLTYPE *SetScanSignalTypeFilter)(
-        IScanningTunerEx* This,
+        IScanningTunerEx *This,
         LONG ScanModulationTypes,
         LONG AnalogVideoStandard);
 
     END_INTERFACE
 } IScanningTunerExVtbl;
+
 interface IScanningTunerEx {
     CONST_VTBL IScanningTunerExVtbl* lpVtbl;
 };
@@ -7920,29 +8251,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IComponentType* This,
+        IComponentType *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IComponentType* This);
+        IComponentType *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IComponentType* This);
+        IComponentType *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IComponentType* This,
+        IComponentType *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IComponentType* This,
+        IComponentType *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IComponentType* This,
+        IComponentType *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -7950,7 +8281,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IComponentType* This,
+        IComponentType *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -7962,75 +8293,76 @@
 
     /*** IComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Category)(
-        IComponentType* This,
+        IComponentType *This,
         ComponentCategory *Category);
 
     HRESULT (STDMETHODCALLTYPE *put_Category)(
-        IComponentType* This,
+        IComponentType *This,
         ComponentCategory Category);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
-        IComponentType* This,
+        IComponentType *This,
         BSTR *MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
-        IComponentType* This,
+        IComponentType *This,
         BSTR MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
-        IComponentType* This,
+        IComponentType *This,
         GUID *MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
-        IComponentType* This,
+        IComponentType *This,
         REFCLSID MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
-        IComponentType* This,
+        IComponentType *This,
         BSTR *MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
-        IComponentType* This,
+        IComponentType *This,
         BSTR MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
-        IComponentType* This,
+        IComponentType *This,
         GUID *MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
-        IComponentType* This,
+        IComponentType *This,
         REFCLSID MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
-        IComponentType* This,
+        IComponentType *This,
         BSTR *MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
-        IComponentType* This,
+        IComponentType *This,
         BSTR MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
-        IComponentType* This,
+        IComponentType *This,
         GUID *MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
-        IComponentType* This,
+        IComponentType *This,
         REFCLSID MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaType)(
-        IComponentType* This,
+        IComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaType)(
-        IComponentType* This,
+        IComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IComponentType* This,
+        IComponentType *This,
         IComponentType **NewCT);
 
     END_INTERFACE
 } IComponentTypeVtbl;
+
 interface IComponentType {
     CONST_VTBL IComponentTypeVtbl* lpVtbl;
 };
@@ -8175,29 +8507,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ILanguageComponentType* This);
+        ILanguageComponentType *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ILanguageComponentType* This);
+        ILanguageComponentType *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -8205,7 +8537,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -8217,84 +8549,85 @@
 
     /*** IComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Category)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         ComponentCategory *Category);
 
     HRESULT (STDMETHODCALLTYPE *put_Category)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         ComponentCategory Category);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         BSTR *MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         BSTR MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         GUID *MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         REFCLSID MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         BSTR *MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         BSTR MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         GUID *MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         REFCLSID MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         BSTR *MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         BSTR MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         GUID *MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         REFCLSID MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaType)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         IComponentType **NewCT);
 
     /*** ILanguageComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_LangID)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         LONG *LangID);
 
     HRESULT (STDMETHODCALLTYPE *put_LangID)(
-        ILanguageComponentType* This,
+        ILanguageComponentType *This,
         LONG LangID);
 
     END_INTERFACE
 } ILanguageComponentTypeVtbl;
+
 interface ILanguageComponentType {
     CONST_VTBL ILanguageComponentTypeVtbl* lpVtbl;
 };
@@ -8449,29 +8782,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMPEG2ComponentType* This);
+        IMPEG2ComponentType *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMPEG2ComponentType* This);
+        IMPEG2ComponentType *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -8479,7 +8812,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -8491,93 +8824,94 @@
 
     /*** IComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Category)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         ComponentCategory *Category);
 
     HRESULT (STDMETHODCALLTYPE *put_Category)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         ComponentCategory Category);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         BSTR *MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         BSTR MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         GUID *MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         REFCLSID MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         BSTR *MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         BSTR MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         GUID *MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         REFCLSID MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         BSTR *MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         BSTR MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         GUID *MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         REFCLSID MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         IComponentType **NewCT);
 
     /*** ILanguageComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_LangID)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         LONG *LangID);
 
     HRESULT (STDMETHODCALLTYPE *put_LangID)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         LONG LangID);
 
     /*** IMPEG2ComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_StreamType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         MPEG2StreamType *MP2StreamType);
 
     HRESULT (STDMETHODCALLTYPE *put_StreamType)(
-        IMPEG2ComponentType* This,
+        IMPEG2ComponentType *This,
         MPEG2StreamType MP2StreamType);
 
     END_INTERFACE
 } IMPEG2ComponentTypeVtbl;
+
 interface IMPEG2ComponentType {
     CONST_VTBL IMPEG2ComponentTypeVtbl* lpVtbl;
 };
@@ -8742,29 +9076,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IATSCComponentType* This);
+        IATSCComponentType *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IATSCComponentType* This);
+        IATSCComponentType *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -8772,7 +9106,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -8784,102 +9118,103 @@
 
     /*** IComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Category)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         ComponentCategory *Category);
 
     HRESULT (STDMETHODCALLTYPE *put_Category)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         ComponentCategory Category);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         BSTR *MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         BSTR MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         GUID *MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         REFCLSID MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         BSTR *MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         BSTR MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         GUID *MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         REFCLSID MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         BSTR *MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         BSTR MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         GUID *MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         REFCLSID MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         IComponentType **NewCT);
 
     /*** ILanguageComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_LangID)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         LONG *LangID);
 
     HRESULT (STDMETHODCALLTYPE *put_LangID)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         LONG LangID);
 
     /*** IMPEG2ComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_StreamType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         MPEG2StreamType *MP2StreamType);
 
     HRESULT (STDMETHODCALLTYPE *put_StreamType)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         MPEG2StreamType MP2StreamType);
 
     /*** IATSCComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Flags)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         LONG *Flags);
 
     HRESULT (STDMETHODCALLTYPE *put_Flags)(
-        IATSCComponentType* This,
+        IATSCComponentType *This,
         LONG flags);
 
     END_INTERFACE
 } IATSCComponentTypeVtbl;
+
 interface IATSCComponentType {
     CONST_VTBL IATSCComponentTypeVtbl* lpVtbl;
 };
@@ -9062,36 +9397,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumComponentTypes* This,
+        IEnumComponentTypes *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumComponentTypes* This);
+        IEnumComponentTypes *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumComponentTypes* This);
+        IEnumComponentTypes *This);
 
     /*** IEnumComponentTypes methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumComponentTypes* This,
+        IEnumComponentTypes *This,
         ULONG celt,
         IComponentType **rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumComponentTypes* This,
+        IEnumComponentTypes *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumComponentTypes* This);
+        IEnumComponentTypes *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumComponentTypes* This,
+        IEnumComponentTypes *This,
         IEnumComponentTypes **ppEnum);
 
     END_INTERFACE
 } IEnumComponentTypesVtbl;
+
 interface IEnumComponentTypes {
     CONST_VTBL IEnumComponentTypesVtbl* lpVtbl;
 };
@@ -9187,29 +9523,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IComponentTypes* This);
+        IComponentTypes *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IComponentTypes* This);
+        IComponentTypes *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -9217,7 +9553,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -9229,42 +9565,43 @@
 
     /*** IComponentTypes methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Count)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         LONG *Count);
 
     HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         IEnumVARIANT **ppNewEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumComponentTypes)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         IEnumComponentTypes **ppNewEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_Item)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         VARIANT Index,
         IComponentType **ComponentType);
 
     HRESULT (STDMETHODCALLTYPE *put_Item)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         VARIANT Index,
         IComponentType *ComponentType);
 
     HRESULT (STDMETHODCALLTYPE *Add)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         IComponentType *ComponentType,
         VARIANT *NewIndex);
 
     HRESULT (STDMETHODCALLTYPE *Remove)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         VARIANT Index);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IComponentTypes* This,
+        IComponentTypes *This,
         IComponentTypes **NewList);
 
     END_INTERFACE
 } IComponentTypesVtbl;
+
 interface IComponentTypes {
     CONST_VTBL IComponentTypesVtbl* lpVtbl;
 };
@@ -9394,29 +9731,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IComponent* This,
+        IComponent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IComponent* This);
+        IComponent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IComponent* This);
+        IComponent *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IComponent* This,
+        IComponent *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IComponent* This,
+        IComponent *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IComponent* This,
+        IComponent *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -9424,7 +9761,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IComponent* This,
+        IComponent *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -9436,43 +9773,44 @@
 
     /*** IComponent methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Type)(
-        IComponent* This,
+        IComponent *This,
         IComponentType **CT);
 
     HRESULT (STDMETHODCALLTYPE *put_Type)(
-        IComponent* This,
+        IComponent *This,
         IComponentType *CT);
 
     HRESULT (STDMETHODCALLTYPE *get_DescLangID)(
-        IComponent* This,
+        IComponent *This,
         LONG *LangID);
 
     HRESULT (STDMETHODCALLTYPE *put_DescLangID)(
-        IComponent* This,
+        IComponent *This,
         LONG LangID);
 
     HRESULT (STDMETHODCALLTYPE *get_Status)(
-        IComponent* This,
+        IComponent *This,
         ComponentStatus *Status);
 
     HRESULT (STDMETHODCALLTYPE *put_Status)(
-        IComponent* This,
+        IComponent *This,
         ComponentStatus Status);
 
     HRESULT (STDMETHODCALLTYPE *get_Description)(
-        IComponent* This,
+        IComponent *This,
         BSTR *Description);
 
     HRESULT (STDMETHODCALLTYPE *put_Description)(
-        IComponent* This,
+        IComponent *This,
         BSTR Description);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IComponent* This,
+        IComponent *This,
         IComponent **NewComponent);
 
     END_INTERFACE
 } IComponentVtbl;
+
 interface IComponent {
     CONST_VTBL IComponentVtbl* lpVtbl;
 };
@@ -9585,29 +9923,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAnalogAudioComponentType* This);
+        IAnalogAudioComponentType *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAnalogAudioComponentType* This);
+        IAnalogAudioComponentType *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -9615,7 +9953,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -9627,84 +9965,85 @@
 
     /*** IComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Category)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         ComponentCategory *Category);
 
     HRESULT (STDMETHODCALLTYPE *put_Category)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         ComponentCategory Category);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaMajorType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         BSTR *MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaMajorType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         BSTR MediaMajorType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaMajorType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         GUID *MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaMajorType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         REFCLSID MediaMajorTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaSubType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         BSTR *MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaSubType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         BSTR MediaSubType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaSubType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         GUID *MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaSubType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         REFCLSID MediaSubTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaFormatType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         BSTR *MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaFormatType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         BSTR MediaFormatType);
 
     HRESULT (STDMETHODCALLTYPE *get__MediaFormatType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         GUID *MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *put__MediaFormatType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         REFCLSID MediaFormatTypeGuid);
 
     HRESULT (STDMETHODCALLTYPE *get_MediaType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *put_MediaType)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         AM_MEDIA_TYPE *MediaType);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         IComponentType **NewCT);
 
     /*** IAnalogAudioComponentType methods ***/
     HRESULT (STDMETHODCALLTYPE *get_AnalogAudioMode)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         TVAudioMode *Mode);
 
     HRESULT (STDMETHODCALLTYPE *put_AnalogAudioMode)(
-        IAnalogAudioComponentType* This,
+        IAnalogAudioComponentType *This,
         TVAudioMode Mode);
 
     END_INTERFACE
 } IAnalogAudioComponentTypeVtbl;
+
 interface IAnalogAudioComponentType {
     CONST_VTBL IAnalogAudioComponentTypeVtbl* lpVtbl;
 };
@@ -9871,29 +10210,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IMPEG2Component* This);
+        IMPEG2Component *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IMPEG2Component* This);
+        IMPEG2Component *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -9901,7 +10240,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -9913,68 +10252,69 @@
 
     /*** IComponent methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Type)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         IComponentType **CT);
 
     HRESULT (STDMETHODCALLTYPE *put_Type)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         IComponentType *CT);
 
     HRESULT (STDMETHODCALLTYPE *get_DescLangID)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         LONG *LangID);
 
     HRESULT (STDMETHODCALLTYPE *put_DescLangID)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         LONG LangID);
 
     HRESULT (STDMETHODCALLTYPE *get_Status)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         ComponentStatus *Status);
 
     HRESULT (STDMETHODCALLTYPE *put_Status)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         ComponentStatus Status);
 
     HRESULT (STDMETHODCALLTYPE *get_Description)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         BSTR *Description);
 
     HRESULT (STDMETHODCALLTYPE *put_Description)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         BSTR Description);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         IComponent **NewComponent);
 
     /*** IMPEG2Component methods ***/
     HRESULT (STDMETHODCALLTYPE *get_PID)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         LONG *PID);
 
     HRESULT (STDMETHODCALLTYPE *put_PID)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         LONG PID);
 
     HRESULT (STDMETHODCALLTYPE *get_PCRPID)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         LONG *PCRPID);
 
     HRESULT (STDMETHODCALLTYPE *put_PCRPID)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         LONG PCRPID);
 
     HRESULT (STDMETHODCALLTYPE *get_ProgramNumber)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         LONG *ProgramNumber);
 
     HRESULT (STDMETHODCALLTYPE *put_ProgramNumber)(
-        IMPEG2Component* This,
+        IMPEG2Component *This,
         LONG ProgramNumber);
 
     END_INTERFACE
 } IMPEG2ComponentVtbl;
+
 interface IMPEG2Component {
     CONST_VTBL IMPEG2ComponentVtbl* lpVtbl;
 };
@@ -10121,36 +10461,37 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IEnumComponents* This,
+        IEnumComponents *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IEnumComponents* This);
+        IEnumComponents *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IEnumComponents* This);
+        IEnumComponents *This);
 
     /*** IEnumComponents methods ***/
     HRESULT (STDMETHODCALLTYPE *Next)(
-        IEnumComponents* This,
+        IEnumComponents *This,
         ULONG celt,
         IComponent **rgelt,
         ULONG *pceltFetched);
 
     HRESULT (STDMETHODCALLTYPE *Skip)(
-        IEnumComponents* This,
+        IEnumComponents *This,
         ULONG celt);
 
     HRESULT (STDMETHODCALLTYPE *Reset)(
-        IEnumComponents* This);
+        IEnumComponents *This);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IEnumComponents* This,
+        IEnumComponents *This,
         IEnumComponents **ppEnum);
 
     END_INTERFACE
 } IEnumComponentsVtbl;
+
 interface IEnumComponents {
     CONST_VTBL IEnumComponentsVtbl* lpVtbl;
 };
@@ -10246,29 +10587,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IComponents* This,
+        IComponents *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IComponents* This);
+        IComponents *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IComponents* This);
+        IComponents *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IComponents* This,
+        IComponents *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IComponents* This,
+        IComponents *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IComponents* This,
+        IComponents *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -10276,7 +10617,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IComponents* This,
+        IComponents *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -10288,42 +10629,43 @@
 
     /*** IComponents methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Count)(
-        IComponents* This,
+        IComponents *This,
         LONG *Count);
 
     HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
-        IComponents* This,
+        IComponents *This,
         IEnumVARIANT **ppNewEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumComponents)(
-        IComponents* This,
+        IComponents *This,
         IEnumComponents **ppNewEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_Item)(
-        IComponents* This,
+        IComponents *This,
         VARIANT Index,
         IComponent **ppComponent);
 
     HRESULT (STDMETHODCALLTYPE *Add)(
-        IComponents* This,
+        IComponents *This,
         IComponent *Component,
         VARIANT *NewIndex);
 
     HRESULT (STDMETHODCALLTYPE *Remove)(
-        IComponents* This,
+        IComponents *This,
         VARIANT Index);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IComponents* This,
+        IComponents *This,
         IComponents **NewList);
 
     HRESULT (STDMETHODCALLTYPE *put_Item)(
-        IComponents* This,
+        IComponents *This,
         VARIANT Index,
         IComponent *ppComponent);
 
     END_INTERFACE
 } IComponentsVtbl;
+
 interface IComponents {
     CONST_VTBL IComponentsVtbl* lpVtbl;
 };
@@ -10449,29 +10791,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IComponentsOld* This);
+        IComponentsOld *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IComponentsOld* This);
+        IComponentsOld *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -10479,7 +10821,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -10491,37 +10833,38 @@
 
     /*** IComponentsOld methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Count)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         LONG *Count);
 
     HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         IEnumVARIANT **ppNewEnum);
 
     HRESULT (STDMETHODCALLTYPE *EnumComponents)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         IEnumComponents **ppNewEnum);
 
     HRESULT (STDMETHODCALLTYPE *get_Item)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         VARIANT Index,
         IComponent **ppComponent);
 
     HRESULT (STDMETHODCALLTYPE *Add)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         IComponent *Component,
         VARIANT *NewIndex);
 
     HRESULT (STDMETHODCALLTYPE *Remove)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         VARIANT Index);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IComponentsOld* This,
+        IComponentsOld *This,
         IComponents **NewList);
 
     END_INTERFACE
 } IComponentsOldVtbl;
+
 interface IComponentsOld {
     CONST_VTBL IComponentsOldVtbl* lpVtbl;
 };
@@ -10665,29 +11008,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ILocator* This,
+        ILocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ILocator* This);
+        ILocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ILocator* This);
+        ILocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        ILocator* This,
+        ILocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        ILocator* This,
+        ILocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        ILocator* This,
+        ILocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -10695,7 +11038,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        ILocator* This,
+        ILocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -10707,67 +11050,68 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        ILocator* This,
+        ILocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        ILocator* This,
+        ILocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        ILocator* This,
+        ILocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        ILocator* This,
+        ILocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        ILocator* This,
+        ILocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        ILocator* This,
+        ILocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        ILocator* This,
+        ILocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        ILocator* This,
+        ILocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        ILocator* This,
+        ILocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        ILocator* This,
+        ILocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        ILocator* This,
+        ILocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        ILocator* This,
+        ILocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        ILocator* This,
+        ILocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        ILocator* This,
+        ILocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        ILocator* This,
+        ILocator *This,
         ILocator **NewLocator);
 
     END_INTERFACE
 } ILocatorVtbl;
+
 interface ILocator {
     CONST_VTBL ILocatorVtbl* lpVtbl;
 };
@@ -10904,29 +11248,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IAnalogLocator* This);
+        IAnalogLocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IAnalogLocator* This);
+        IAnalogLocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -10934,7 +11278,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -10946,76 +11290,77 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         ILocator **NewLocator);
 
     /*** IAnalogLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_VideoStandard)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         AnalogVideoStandard *AVS);
 
     HRESULT (STDMETHODCALLTYPE *put_VideoStandard)(
-        IAnalogLocator* This,
+        IAnalogLocator *This,
         AnalogVideoStandard AVS);
 
     END_INTERFACE
 } IAnalogLocatorVtbl;
+
 interface IAnalogLocator {
     CONST_VTBL IAnalogLocatorVtbl* lpVtbl;
 };
@@ -11156,29 +11501,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDigitalLocator* This);
+        IDigitalLocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDigitalLocator* This);
+        IDigitalLocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -11186,7 +11531,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -11198,67 +11543,68 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDigitalLocator* This,
+        IDigitalLocator *This,
         ILocator **NewLocator);
 
     END_INTERFACE
 } IDigitalLocatorVtbl;
+
 interface IDigitalLocator {
     CONST_VTBL IDigitalLocatorVtbl* lpVtbl;
 };
@@ -11401,29 +11747,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IATSCLocator* This);
+        IATSCLocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IATSCLocator* This);
+        IATSCLocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -11431,7 +11777,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -11443,84 +11789,85 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         ILocator **NewLocator);
 
     /*** IATSCLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_PhysicalChannel)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         LONG *PhysicalChannel);
 
     HRESULT (STDMETHODCALLTYPE *put_PhysicalChannel)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         LONG PhysicalChannel);
 
     HRESULT (STDMETHODCALLTYPE *get_TSID)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         LONG *TSID);
 
     HRESULT (STDMETHODCALLTYPE *put_TSID)(
-        IATSCLocator* This,
+        IATSCLocator *This,
         LONG TSID);
 
     END_INTERFACE
 } IATSCLocatorVtbl;
+
 interface IATSCLocator {
     CONST_VTBL IATSCLocatorVtbl* lpVtbl;
 };
@@ -11675,29 +12022,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IATSCLocator2* This);
+        IATSCLocator2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IATSCLocator2* This);
+        IATSCLocator2 *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -11705,7 +12052,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -11717,93 +12064,94 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         ILocator **NewLocator);
 
     /*** IATSCLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_PhysicalChannel)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG *PhysicalChannel);
 
     HRESULT (STDMETHODCALLTYPE *put_PhysicalChannel)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG PhysicalChannel);
 
     HRESULT (STDMETHODCALLTYPE *get_TSID)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG *TSID);
 
     HRESULT (STDMETHODCALLTYPE *put_TSID)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG TSID);
 
     /*** IATSCLocator2 methods ***/
     HRESULT (STDMETHODCALLTYPE *get_ProgramNumber)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG *ProgramNumber);
 
     HRESULT (STDMETHODCALLTYPE *put_ProgramNumber)(
-        IATSCLocator2* This,
+        IATSCLocator2 *This,
         LONG ProgramNumber);
 
     END_INTERFACE
 } IATSCLocator2Vtbl;
+
 interface IATSCLocator2 {
     CONST_VTBL IATSCLocator2Vtbl* lpVtbl;
 };
@@ -11962,29 +12310,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDigitalCableLocator* This);
+        IDigitalCableLocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDigitalCableLocator* This);
+        IDigitalCableLocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -11992,7 +12340,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -12004,93 +12352,94 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         ILocator **NewLocator);
 
     /*** IATSCLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_PhysicalChannel)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG *PhysicalChannel);
 
     HRESULT (STDMETHODCALLTYPE *put_PhysicalChannel)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG PhysicalChannel);
 
     HRESULT (STDMETHODCALLTYPE *get_TSID)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG *TSID);
 
     HRESULT (STDMETHODCALLTYPE *put_TSID)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG TSID);
 
     /*** IATSCLocator2 methods ***/
     HRESULT (STDMETHODCALLTYPE *get_ProgramNumber)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG *ProgramNumber);
 
     HRESULT (STDMETHODCALLTYPE *put_ProgramNumber)(
-        IDigitalCableLocator* This,
+        IDigitalCableLocator *This,
         LONG ProgramNumber);
 
     END_INTERFACE
 } IDigitalCableLocatorVtbl;
+
 interface IDigitalCableLocator {
     CONST_VTBL IDigitalCableLocatorVtbl* lpVtbl;
 };
@@ -12291,29 +12640,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBTLocator* This);
+        IDVBTLocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBTLocator* This);
+        IDVBTLocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -12321,7 +12670,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -12333,124 +12682,125 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         ILocator **NewLocator);
 
     /*** IDVBTLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Bandwidth)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         LONG *BandWidthVal);
 
     HRESULT (STDMETHODCALLTYPE *put_Bandwidth)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         LONG BandwidthVal);
 
     HRESULT (STDMETHODCALLTYPE *get_LPInnerFEC)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_LPInnerFEC)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_LPInnerFECRate)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_LPInnerFECRate)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_HAlpha)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         HierarchyAlpha *Alpha);
 
     HRESULT (STDMETHODCALLTYPE *put_HAlpha)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         HierarchyAlpha Alpha);
 
     HRESULT (STDMETHODCALLTYPE *get_Guard)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         GuardInterval *GI);
 
     HRESULT (STDMETHODCALLTYPE *put_Guard)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         GuardInterval GI);
 
     HRESULT (STDMETHODCALLTYPE *get_Mode)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         TransmissionMode *mode);
 
     HRESULT (STDMETHODCALLTYPE *put_Mode)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         TransmissionMode mode);
 
     HRESULT (STDMETHODCALLTYPE *get_OtherFrequencyInUse)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         VARIANT_BOOL *OtherFrequencyInUseVal);
 
     HRESULT (STDMETHODCALLTYPE *put_OtherFrequencyInUse)(
-        IDVBTLocator* This,
+        IDVBTLocator *This,
         VARIANT_BOOL OtherFrequencyInUseVal);
 
     END_INTERFACE
 } IDVBTLocatorVtbl;
+
 interface IDVBTLocator {
     CONST_VTBL IDVBTLocatorVtbl* lpVtbl;
 };
@@ -12645,29 +12995,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBTLocator2* This);
+        IDVBTLocator2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBTLocator2* This);
+        IDVBTLocator2 *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -12675,7 +13025,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -12687,133 +13037,134 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         ILocator **NewLocator);
 
     /*** IDVBTLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_Bandwidth)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         LONG *BandWidthVal);
 
     HRESULT (STDMETHODCALLTYPE *put_Bandwidth)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         LONG BandwidthVal);
 
     HRESULT (STDMETHODCALLTYPE *get_LPInnerFEC)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_LPInnerFEC)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_LPInnerFECRate)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_LPInnerFECRate)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_HAlpha)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         HierarchyAlpha *Alpha);
 
     HRESULT (STDMETHODCALLTYPE *put_HAlpha)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         HierarchyAlpha Alpha);
 
     HRESULT (STDMETHODCALLTYPE *get_Guard)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         GuardInterval *GI);
 
     HRESULT (STDMETHODCALLTYPE *put_Guard)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         GuardInterval GI);
 
     HRESULT (STDMETHODCALLTYPE *get_Mode)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         TransmissionMode *mode);
 
     HRESULT (STDMETHODCALLTYPE *put_Mode)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         TransmissionMode mode);
 
     HRESULT (STDMETHODCALLTYPE *get_OtherFrequencyInUse)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         VARIANT_BOOL *OtherFrequencyInUseVal);
 
     HRESULT (STDMETHODCALLTYPE *put_OtherFrequencyInUse)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         VARIANT_BOOL OtherFrequencyInUseVal);
 
     /*** IDVBTLocator2 methods ***/
     HRESULT (STDMETHODCALLTYPE *get_PhysicalLayerPipeId)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         LONG *PhysicalLayerPipeIdVal);
 
     HRESULT (STDMETHODCALLTYPE *put_PhysicalLayerPipeId)(
-        IDVBTLocator2* This,
+        IDVBTLocator2 *This,
         LONG PhysicalLayerPipeIdVal);
 
     END_INTERFACE
 } IDVBTLocator2Vtbl;
+
 interface IDVBTLocator2 {
     CONST_VTBL IDVBTLocator2Vtbl* lpVtbl;
 };
@@ -13042,29 +13393,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBSLocator* This);
+        IDVBSLocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBSLocator* This);
+        IDVBSLocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -13072,7 +13423,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -13084,108 +13435,109 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         ILocator **NewLocator);
 
     /*** IDVBSLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SignalPolarisation)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         Polarisation *PolarisationVal);
 
     HRESULT (STDMETHODCALLTYPE *put_SignalPolarisation)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         Polarisation PolarisationVal);
 
     HRESULT (STDMETHODCALLTYPE *get_WestPosition)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         VARIANT_BOOL *WestLongitude);
 
     HRESULT (STDMETHODCALLTYPE *put_WestPosition)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         VARIANT_BOOL WestLongitude);
 
     HRESULT (STDMETHODCALLTYPE *get_OrbitalPosition)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG *longitude);
 
     HRESULT (STDMETHODCALLTYPE *put_OrbitalPosition)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG longitude);
 
     HRESULT (STDMETHODCALLTYPE *get_Azimuth)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG *Azimuth);
 
     HRESULT (STDMETHODCALLTYPE *put_Azimuth)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG Azimuth);
 
     HRESULT (STDMETHODCALLTYPE *get_Elevation)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG *Elevation);
 
     HRESULT (STDMETHODCALLTYPE *put_Elevation)(
-        IDVBSLocator* This,
+        IDVBSLocator *This,
         LONG Elevation);
 
     END_INTERFACE
 } IDVBSLocatorVtbl;
+
 interface IDVBSLocator {
     CONST_VTBL IDVBSLocatorVtbl* lpVtbl;
 };
@@ -13400,29 +13752,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBSLocator2* This);
+        IDVBSLocator2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBSLocator2* This);
+        IDVBSLocator2 *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -13430,7 +13782,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -13442,165 +13794,166 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         ILocator **NewLocator);
 
     /*** IDVBSLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SignalPolarisation)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         Polarisation *PolarisationVal);
 
     HRESULT (STDMETHODCALLTYPE *put_SignalPolarisation)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         Polarisation PolarisationVal);
 
     HRESULT (STDMETHODCALLTYPE *get_WestPosition)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         VARIANT_BOOL *WestLongitude);
 
     HRESULT (STDMETHODCALLTYPE *put_WestPosition)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         VARIANT_BOOL WestLongitude);
 
     HRESULT (STDMETHODCALLTYPE *get_OrbitalPosition)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG *longitude);
 
     HRESULT (STDMETHODCALLTYPE *put_OrbitalPosition)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG longitude);
 
     HRESULT (STDMETHODCALLTYPE *get_Azimuth)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG *Azimuth);
 
     HRESULT (STDMETHODCALLTYPE *put_Azimuth)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG Azimuth);
 
     HRESULT (STDMETHODCALLTYPE *get_Elevation)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG *Elevation);
 
     HRESULT (STDMETHODCALLTYPE *put_Elevation)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG Elevation);
 
     /*** IDVBSLocator2 methods ***/
     HRESULT (STDMETHODCALLTYPE *get_DiseqLNBSource)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LNB_Source *DiseqLNBSourceVal);
 
     HRESULT (STDMETHODCALLTYPE *put_DiseqLNBSource)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LNB_Source DiseqLNBSourceVal);
 
     HRESULT (STDMETHODCALLTYPE *get_LocalOscillatorOverrideLow)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG *LocalOscillatorOverrideLowVal);
 
     HRESULT (STDMETHODCALLTYPE *put_LocalOscillatorOverrideLow)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG LocalOscillatorOverrideLowVal);
 
     HRESULT (STDMETHODCALLTYPE *get_LocalOscillatorOverrideHigh)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG *LocalOscillatorOverrideHighVal);
 
     HRESULT (STDMETHODCALLTYPE *put_LocalOscillatorOverrideHigh)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG LocalOscillatorOverrideHighVal);
 
     HRESULT (STDMETHODCALLTYPE *get_LocalLNBSwitchOverride)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG *LocalLNBSwitchOverrideVal);
 
     HRESULT (STDMETHODCALLTYPE *put_LocalLNBSwitchOverride)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         LONG LocalLNBSwitchOverrideVal);
 
     HRESULT (STDMETHODCALLTYPE *get_LocalSpectralInversionOverride)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         SpectralInversion *LocalSpectralInversionOverrideVal);
 
     HRESULT (STDMETHODCALLTYPE *put_LocalSpectralInversionOverride)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         SpectralInversion LocalSpectralInversionOverrideVal);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalRollOff)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         RollOff *RollOffVal);
 
     HRESULT (STDMETHODCALLTYPE *put_SignalRollOff)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         RollOff RollOffVal);
 
     HRESULT (STDMETHODCALLTYPE *get_SignalPilot)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         Pilot *PilotVal);
 
     HRESULT (STDMETHODCALLTYPE *put_SignalPilot)(
-        IDVBSLocator2* This,
+        IDVBSLocator2 *This,
         Pilot PilotVal);
 
     END_INTERFACE
 } IDVBSLocator2Vtbl;
+
 interface IDVBSLocator2 {
     CONST_VTBL IDVBSLocator2Vtbl* lpVtbl;
 };
@@ -13831,29 +14184,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IDVBCLocator* This);
+        IDVBCLocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IDVBCLocator* This);
+        IDVBCLocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -13861,7 +14214,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -13873,67 +14226,68 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IDVBCLocator* This,
+        IDVBCLocator *This,
         ILocator **NewLocator);
 
     END_INTERFACE
 } IDVBCLocatorVtbl;
+
 interface IDVBCLocator {
     CONST_VTBL IDVBCLocatorVtbl* lpVtbl;
 };
@@ -14064,29 +14418,29 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IISDBSLocator* This);
+        IISDBSLocator *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IISDBSLocator* This);
+        IISDBSLocator *This);
 
     /*** IDispatch methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         UINT *pctinfo);
 
     HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         UINT iTInfo,
         LCID lcid,
         ITypeInfo **ppTInfo);
 
     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         REFIID riid,
         LPOLESTR *rgszNames,
         UINT cNames,
@@ -14094,7 +14448,7 @@
         DISPID *rgDispId);
 
     HRESULT (STDMETHODCALLTYPE *Invoke)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         DISPID dispIdMember,
         REFIID riid,
         LCID lcid,
@@ -14106,108 +14460,109 @@
 
     /*** ILocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_CarrierFrequency)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG *Frequency);
 
     HRESULT (STDMETHODCALLTYPE *put_CarrierFrequency)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG Frequency);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFEC)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFEC)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFEC)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         FECMethod *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFEC)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         FECMethod FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         BinaryConvolutionCodeRate *FEC);
 
     HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         BinaryConvolutionCodeRate FEC);
 
     HRESULT (STDMETHODCALLTYPE *get_Modulation)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         ModulationType *Modulation);
 
     HRESULT (STDMETHODCALLTYPE *put_Modulation)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         ModulationType Modulation);
 
     HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG *Rate);
 
     HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG Rate);
 
     HRESULT (STDMETHODCALLTYPE *Clone)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         ILocator **NewLocator);
 
     /*** IDVBSLocator methods ***/
     HRESULT (STDMETHODCALLTYPE *get_SignalPolarisation)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         Polarisation *PolarisationVal);
 
     HRESULT (STDMETHODCALLTYPE *put_SignalPolarisation)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         Polarisation PolarisationVal);
 
     HRESULT (STDMETHODCALLTYPE *get_WestPosition)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         VARIANT_BOOL *WestLongitude);
 
     HRESULT (STDMETHODCALLTYPE *put_WestPosition)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         VARIANT_BOOL WestLongitude);
 
     HRESULT (STDMETHODCALLTYPE *get_OrbitalPosition)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG *longitude);
 
     HRESULT (STDMETHODCALLTYPE *put_OrbitalPosition)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG longitude);
 
     HRESULT (STDMETHODCALLTYPE *get_Azimuth)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG *Azimuth);
 
     HRESULT (STDMETHODCALLTYPE *put_Azimuth)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG Azimuth);
 
     HRESULT (STDMETHODCALLTYPE *get_Elevation)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG *Elevation);
 
     HRESULT (STDMETHODCALLTYPE *put_Elevation)(
-        IISDBSLocator* This,
+        IISDBSLocator *This,
         LONG Elevation);
 
     END_INTERFACE
 } IISDBSLocatorVtbl;
+
 interface IISDBSLocator {
     CONST_VTBL IISDBSLocatorVtbl* lpVtbl;
 };
@@ -14395,39 +14750,40 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESEvent* This,
+        IESEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESEvent* This);
+        IESEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESEvent* This);
+        IESEvent *This);
 
     /*** IESEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetEventId)(
-        IESEvent* This,
+        IESEvent *This,
         DWORD *pdwEventId);
 
     HRESULT (STDMETHODCALLTYPE *GetEventType)(
-        IESEvent* This,
+        IESEvent *This,
         GUID *pguidEventType);
 
     HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
-        IESEvent* This,
+        IESEvent *This,
         DWORD dwResult);
 
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IESEvent* This,
+        IESEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetStringData)(
-        IESEvent* This,
+        IESEvent *This,
         BSTR *pbstrData);
 
     END_INTERFACE
 } IESEventVtbl;
+
 interface IESEvent {
     CONST_VTBL IESEventVtbl* lpVtbl;
 };
@@ -14514,58 +14870,59 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESOpenMmiEvent* This);
+        IESOpenMmiEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESOpenMmiEvent* This);
+        IESOpenMmiEvent *This);
 
     /*** IESEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetEventId)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         DWORD *pdwEventId);
 
     HRESULT (STDMETHODCALLTYPE *GetEventType)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         GUID *pguidEventType);
 
     HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         DWORD dwResult);
 
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetStringData)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         BSTR *pbstrData);
 
     /*** IESOpenMmiEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetDialogNumber)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         DWORD *pDialogRequest,
         DWORD *pDialogNumber);
 
     HRESULT (STDMETHODCALLTYPE *GetDialogType)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         GUID *guidDialogType);
 
     HRESULT (STDMETHODCALLTYPE *GetDialogData)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetDialogStringData)(
-        IESOpenMmiEvent* This,
+        IESOpenMmiEvent *This,
         BSTR *pbstrBaseUrl,
         BSTR *pbstrData);
 
     END_INTERFACE
 } IESOpenMmiEventVtbl;
+
 interface IESOpenMmiEvent {
     CONST_VTBL IESOpenMmiEventVtbl* lpVtbl;
 };
@@ -14659,44 +15016,45 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESCloseMmiEvent* This,
+        IESCloseMmiEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESCloseMmiEvent* This);
+        IESCloseMmiEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESCloseMmiEvent* This);
+        IESCloseMmiEvent *This);
 
     /*** IESEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetEventId)(
-        IESCloseMmiEvent* This,
+        IESCloseMmiEvent *This,
         DWORD *pdwEventId);
 
     HRESULT (STDMETHODCALLTYPE *GetEventType)(
-        IESCloseMmiEvent* This,
+        IESCloseMmiEvent *This,
         GUID *pguidEventType);
 
     HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
-        IESCloseMmiEvent* This,
+        IESCloseMmiEvent *This,
         DWORD dwResult);
 
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IESCloseMmiEvent* This,
+        IESCloseMmiEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetStringData)(
-        IESCloseMmiEvent* This,
+        IESCloseMmiEvent *This,
         BSTR *pbstrData);
 
     /*** IESCloseMmiEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetDialogNumber)(
-        IESCloseMmiEvent* This,
+        IESCloseMmiEvent *This,
         DWORD *pDialogNumber);
 
     END_INTERFACE
 } IESCloseMmiEventVtbl;
+
 interface IESCloseMmiEvent {
     CONST_VTBL IESCloseMmiEventVtbl* lpVtbl;
 };
@@ -14778,44 +15136,45 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESValueUpdatedEvent* This,
+        IESValueUpdatedEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESValueUpdatedEvent* This);
+        IESValueUpdatedEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESValueUpdatedEvent* This);
+        IESValueUpdatedEvent *This);
 
     /*** IESEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetEventId)(
-        IESValueUpdatedEvent* This,
+        IESValueUpdatedEvent *This,
         DWORD *pdwEventId);
 
     HRESULT (STDMETHODCALLTYPE *GetEventType)(
-        IESValueUpdatedEvent* This,
+        IESValueUpdatedEvent *This,
         GUID *pguidEventType);
 
     HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
-        IESValueUpdatedEvent* This,
+        IESValueUpdatedEvent *This,
         DWORD dwResult);
 
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IESValueUpdatedEvent* This,
+        IESValueUpdatedEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetStringData)(
-        IESValueUpdatedEvent* This,
+        IESValueUpdatedEvent *This,
         BSTR *pbstrData);
 
     /*** IESValueUpdatedEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetValueNames)(
-        IESValueUpdatedEvent* This,
+        IESValueUpdatedEvent *This,
         SAFEARRAY **pbstrNames);
 
     END_INTERFACE
 } IESValueUpdatedEventVtbl;
+
 interface IESValueUpdatedEvent {
     CONST_VTBL IESValueUpdatedEventVtbl* lpVtbl;
 };
@@ -14906,56 +15265,57 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESRequestTunerEvent* This);
+        IESRequestTunerEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESRequestTunerEvent* This);
+        IESRequestTunerEvent *This);
 
     /*** IESEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetEventId)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         DWORD *pdwEventId);
 
     HRESULT (STDMETHODCALLTYPE *GetEventType)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         GUID *pguidEventType);
 
     HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         DWORD dwResult);
 
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetStringData)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         BSTR *pbstrData);
 
     /*** IESRequestTunerEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetPriority)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         BYTE *pbyPriority);
 
     HRESULT (STDMETHODCALLTYPE *GetReason)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         BYTE *pbyReason);
 
     HRESULT (STDMETHODCALLTYPE *GetConsequences)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         BYTE *pbyConsequences);
 
     HRESULT (STDMETHODCALLTYPE *GetEstimatedTime)(
-        IESRequestTunerEvent* This,
+        IESRequestTunerEvent *This,
         DWORD *pdwEstimatedTime);
 
     END_INTERFACE
 } IESRequestTunerEventVtbl;
+
 interface IESRequestTunerEvent {
     CONST_VTBL IESRequestTunerEventVtbl* lpVtbl;
 };
@@ -15058,56 +15418,57 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESIsdbCasResponseEvent* This);
+        IESIsdbCasResponseEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESIsdbCasResponseEvent* This);
+        IESIsdbCasResponseEvent *This);
 
     /*** IESEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetEventId)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         DWORD *pdwEventId);
 
     HRESULT (STDMETHODCALLTYPE *GetEventType)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         GUID *pguidEventType);
 
     HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         DWORD dwResult);
 
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetStringData)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         BSTR *pbstrData);
 
     /*** IESIsdbCasResponseEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetRequestId)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         DWORD *pRequestId);
 
     HRESULT (STDMETHODCALLTYPE *GetStatus)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         DWORD *pStatus);
 
     HRESULT (STDMETHODCALLTYPE *GetDataLength)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         DWORD *pRequestLength);
 
     HRESULT (STDMETHODCALLTYPE *GetResponseData)(
-        IESIsdbCasResponseEvent* This,
+        IESIsdbCasResponseEvent *This,
         SAFEARRAY **pbData);
 
     END_INTERFACE
 } IESIsdbCasResponseEventVtbl;
+
 interface IESIsdbCasResponseEvent {
     CONST_VTBL IESIsdbCasResponseEventVtbl* lpVtbl;
 };
@@ -15201,23 +15562,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IGpnvsCommonBase* This,
+        IGpnvsCommonBase *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IGpnvsCommonBase* This);
+        IGpnvsCommonBase *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IGpnvsCommonBase* This);
+        IGpnvsCommonBase *This);
 
     /*** IGpnvsCommonBase methods ***/
     HRESULT (STDMETHODCALLTYPE *GetValueUpdateName)(
-        IGpnvsCommonBase* This,
+        IGpnvsCommonBase *This,
         BSTR *pbstrName);
 
     END_INTERFACE
 } IGpnvsCommonBaseVtbl;
+
 interface IGpnvsCommonBase {
     CONST_VTBL IGpnvsCommonBaseVtbl* lpVtbl;
 };
@@ -15284,19 +15646,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESEventFactory* This,
+        IESEventFactory *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESEventFactory* This);
+        IESEventFactory *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESEventFactory* This);
+        IESEventFactory *This);
 
     /*** IESEventFactory methods ***/
     HRESULT (STDMETHODCALLTYPE *CreateESEvent)(
-        IESEventFactory* This,
+        IESEventFactory *This,
         IUnknown *pServiceProvider,
         DWORD dwEventId,
         GUID guidEventType,
@@ -15308,6 +15670,7 @@
 
     END_INTERFACE
 } IESEventFactoryVtbl;
+
 interface IESEventFactory {
     CONST_VTBL IESEventFactoryVtbl* lpVtbl;
 };
@@ -15397,84 +15760,85 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESLicenseRenewalResultEvent* This);
+        IESLicenseRenewalResultEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESLicenseRenewalResultEvent* This);
+        IESLicenseRenewalResultEvent *This);
 
     /*** IESEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetEventId)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         DWORD *pdwEventId);
 
     HRESULT (STDMETHODCALLTYPE *GetEventType)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         GUID *pguidEventType);
 
     HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         DWORD dwResult);
 
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetStringData)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         BSTR *pbstrData);
 
     /*** IESLicenseRenewalResultEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetCallersId)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         DWORD *pdwCallersId);
 
     HRESULT (STDMETHODCALLTYPE *GetFileName)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         BSTR *pbstrFilename);
 
     HRESULT (STDMETHODCALLTYPE *IsRenewalSuccessful)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         WINBOOL *pfRenewalSuccessful);
 
     HRESULT (STDMETHODCALLTYPE *IsCheckEntitlementCallRequired)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         WINBOOL *pfCheckEntTokenCallNeeded);
 
     HRESULT (STDMETHODCALLTYPE *GetDescrambledStatus)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         DWORD *pDescrambledStatus);
 
     HRESULT (STDMETHODCALLTYPE *GetRenewalResultCode)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         DWORD *pdwRenewalResultCode);
 
     HRESULT (STDMETHODCALLTYPE *GetCASFailureCode)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         DWORD *pdwCASFailureCode);
 
     HRESULT (STDMETHODCALLTYPE *GetRenewalHResult)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         HRESULT *phr);
 
     HRESULT (STDMETHODCALLTYPE *GetEntitlementTokenLength)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         DWORD *pdwLength);
 
     HRESULT (STDMETHODCALLTYPE *GetEntitlementToken)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetExpiryDate)(
-        IESLicenseRenewalResultEvent* This,
+        IESLicenseRenewalResultEvent *This,
         DWORD64 *pqwExpiryDate);
 
     END_INTERFACE
 } IESLicenseRenewalResultEventVtbl;
+
 interface IESLicenseRenewalResultEvent {
     CONST_VTBL IESLicenseRenewalResultEventVtbl* lpVtbl;
 };
@@ -15611,64 +15975,65 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESFileExpiryDateEvent* This);
+        IESFileExpiryDateEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESFileExpiryDateEvent* This);
+        IESFileExpiryDateEvent *This);
 
     /*** IESEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetEventId)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         DWORD *pdwEventId);
 
     HRESULT (STDMETHODCALLTYPE *GetEventType)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         GUID *pguidEventType);
 
     HRESULT (STDMETHODCALLTYPE *SetCompletionStatus)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         DWORD dwResult);
 
     HRESULT (STDMETHODCALLTYPE *GetData)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         SAFEARRAY **pbData);
 
     HRESULT (STDMETHODCALLTYPE *GetStringData)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         BSTR *pbstrData);
 
     /*** IESFileExpiryDateEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *GetTunerId)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         GUID *pguidTunerId);
 
     HRESULT (STDMETHODCALLTYPE *GetExpiryDate)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         DWORD64 *pqwExpiryDate);
 
     HRESULT (STDMETHODCALLTYPE *GetFinalExpiryDate)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         DWORD64 *pqwExpiryDate);
 
     HRESULT (STDMETHODCALLTYPE *GetMaxRenewalCount)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         DWORD *dwMaxRenewalCount);
 
     HRESULT (STDMETHODCALLTYPE *IsEntitlementTokenPresent)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         WINBOOL *pfEntTokenPresent);
 
     HRESULT (STDMETHODCALLTYPE *DoesExpireAfterFirstUse)(
-        IESFileExpiryDateEvent* This,
+        IESFileExpiryDateEvent *This,
         WINBOOL *pfExpireAfterFirstUse);
 
     END_INTERFACE
 } IESFileExpiryDateEventVtbl;
+
 interface IESFileExpiryDateEvent {
     CONST_VTBL IESFileExpiryDateEventVtbl* lpVtbl;
 };
@@ -15771,24 +16136,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESEvents* This,
+        IESEvents *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESEvents* This);
+        IESEvents *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESEvents* This);
+        IESEvents *This);
 
     /*** IESEvents methods ***/
     HRESULT (STDMETHODCALLTYPE *OnESEventReceived)(
-        IESEvents* This,
+        IESEvents *This,
         GUID guidEventType,
         IESEvent *pESEvent);
 
     END_INTERFACE
 } IESEventsVtbl;
+
 interface IESEvents {
     CONST_VTBL IESEventsVtbl* lpVtbl;
 };
@@ -15848,23 +16214,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESEventService* This,
+        IESEventService *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESEventService* This);
+        IESEventService *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESEventService* This);
+        IESEventService *This);
 
     /*** IESEventService methods ***/
     HRESULT (STDMETHODCALLTYPE *FireESEvent)(
-        IESEventService* This,
+        IESEventService *This,
         IESEvent *pESEvent);
 
     END_INTERFACE
 } IESEventServiceVtbl;
+
 interface IESEventService {
     CONST_VTBL IESEventServiceVtbl* lpVtbl;
 };
@@ -15939,41 +16306,42 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IESEventServiceConfiguration* This,
+        IESEventServiceConfiguration *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IESEventServiceConfiguration* This);
+        IESEventServiceConfiguration *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IESEventServiceConfiguration* This);
+        IESEventServiceConfiguration *This);
 
     /*** IESEventServiceConfiguration methods ***/
     HRESULT (STDMETHODCALLTYPE *SetParent)(
-        IESEventServiceConfiguration* This,
+        IESEventServiceConfiguration *This,
         IESEventService *pEventService);
 
     HRESULT (STDMETHODCALLTYPE *RemoveParent)(
-        IESEventServiceConfiguration* This);
+        IESEventServiceConfiguration *This);
 
     HRESULT (STDMETHODCALLTYPE *SetOwner)(
-        IESEventServiceConfiguration* This,
+        IESEventServiceConfiguration *This,
         IESEvents *pESEvents);
 
     HRESULT (STDMETHODCALLTYPE *RemoveOwner)(
-        IESEventServiceConfiguration* This);
+        IESEventServiceConfiguration *This);
 
     HRESULT (STDMETHODCALLTYPE *SetGraph)(
-        IESEventServiceConfiguration* This,
+        IESEventServiceConfiguration *This,
         IFilterGraph *pGraph);
 
     HRESULT (STDMETHODCALLTYPE *RemoveGraph)(
-        IESEventServiceConfiguration* This,
+        IESEventServiceConfiguration *This,
         IFilterGraph *pGraph);
 
     END_INTERFACE
 } IESEventServiceConfigurationVtbl;
+
 interface IESEventServiceConfiguration {
     CONST_VTBL IESEventServiceConfigurationVtbl* lpVtbl;
 };
@@ -16053,23 +16421,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBroadcastEvent* This,
+        IBroadcastEvent *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBroadcastEvent* This);
+        IBroadcastEvent *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBroadcastEvent* This);
+        IBroadcastEvent *This);
 
     /*** IBroadcastEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *Fire)(
-        IBroadcastEvent* This,
+        IBroadcastEvent *This,
         GUID EventID);
 
     END_INTERFACE
 } IBroadcastEventVtbl;
+
 interface IBroadcastEvent {
     CONST_VTBL IBroadcastEventVtbl* lpVtbl;
 };
@@ -16133,24 +16502,24 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBroadcastEventEx* This,
+        IBroadcastEventEx *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBroadcastEventEx* This);
+        IBroadcastEventEx *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBroadcastEventEx* This);
+        IBroadcastEventEx *This);
 
     /*** IBroadcastEvent methods ***/
     HRESULT (STDMETHODCALLTYPE *Fire)(
-        IBroadcastEventEx* This,
+        IBroadcastEventEx *This,
         GUID EventID);
 
     /*** IBroadcastEventEx methods ***/
     HRESULT (STDMETHODCALLTYPE *FireEx)(
-        IBroadcastEventEx* This,
+        IBroadcastEventEx *This,
         GUID EventID,
         ULONG Param1,
         ULONG Param2,
@@ -16159,6 +16528,7 @@
 
     END_INTERFACE
 } IBroadcastEventExVtbl;
+
 interface IBroadcastEventEx {
     CONST_VTBL IBroadcastEventExVtbl* lpVtbl;
 };
@@ -16228,27 +16598,28 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IRegisterTuner* This,
+        IRegisterTuner *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IRegisterTuner* This);
+        IRegisterTuner *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IRegisterTuner* This);
+        IRegisterTuner *This);
 
     /*** IRegisterTuner methods ***/
     HRESULT (STDMETHODCALLTYPE *Register)(
-        IRegisterTuner* This,
+        IRegisterTuner *This,
         ITuner *pTuner,
         IGraphBuilder *pGraph);
 
     HRESULT (STDMETHODCALLTYPE *Unregister)(
-        IRegisterTuner* This);
+        IRegisterTuner *This);
 
     END_INTERFACE
 } IRegisterTunerVtbl;
+
 interface IRegisterTuner {
     CONST_VTBL IRegisterTunerVtbl* lpVtbl;
 };
@@ -16334,50 +16705,51 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDAComparable* This,
+        IBDAComparable *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDAComparable* This);
+        IBDAComparable *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDAComparable* This);
+        IBDAComparable *This);
 
     /*** IBDAComparable methods ***/
     HRESULT (STDMETHODCALLTYPE *CompareExact)(
-        IBDAComparable* This,
+        IBDAComparable *This,
         IDispatch *CompareTo,
         LONG *Result);
 
     HRESULT (STDMETHODCALLTYPE *CompareEquivalent)(
-        IBDAComparable* This,
+        IBDAComparable *This,
         IDispatch *CompareTo,
         DWORD dwFlags,
         LONG *Result);
 
     HRESULT (STDMETHODCALLTYPE *HashExact)(
-        IBDAComparable* This,
+        IBDAComparable *This,
         INT64 *Result);
 
     HRESULT (STDMETHODCALLTYPE *HashExactIncremental)(
-        IBDAComparable* This,
+        IBDAComparable *This,
         INT64 PartialResult,
         INT64 *Result);
 
     HRESULT (STDMETHODCALLTYPE *HashEquivalent)(
-        IBDAComparable* This,
+        IBDAComparable *This,
         DWORD dwFlags,
         INT64 *Result);
 
     HRESULT (STDMETHODCALLTYPE *HashEquivalentIncremental)(
-        IBDAComparable* This,
+        IBDAComparable *This,
         INT64 PartialResult,
         DWORD dwFlags,
         INT64 *Result);
 
     END_INTERFACE
 } IBDAComparableVtbl;
+
 interface IBDAComparable {
     CONST_VTBL IBDAComparableVtbl* lpVtbl;
 };
@@ -16463,35 +16835,36 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPersistTuneXml* This,
+        IPersistTuneXml *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPersistTuneXml* This);
+        IPersistTuneXml *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPersistTuneXml* This);
+        IPersistTuneXml *This);
 
     /*** IPersist methods ***/
     HRESULT (STDMETHODCALLTYPE *GetClassID)(
-        IPersistTuneXml* This,
+        IPersistTuneXml *This,
         CLSID *pClassID);
 
     /*** IPersistTuneXml methods ***/
     HRESULT (STDMETHODCALLTYPE *InitNew)(
-        IPersistTuneXml* This);
+        IPersistTuneXml *This);
 
     HRESULT (STDMETHODCALLTYPE *Load)(
-        IPersistTuneXml* This,
+        IPersistTuneXml *This,
         VARIANT varValue);
 
     HRESULT (STDMETHODCALLTYPE *Save)(
-        IPersistTuneXml* This,
+        IPersistTuneXml *This,
         VARIANT *pvarFragment);
 
     END_INTERFACE
 } IPersistTuneXmlVtbl;
+
 interface IPersistTuneXml {
     CONST_VTBL IPersistTuneXmlVtbl* lpVtbl;
 };
@@ -16566,24 +16939,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPersistTuneXmlUtility* This,
+        IPersistTuneXmlUtility *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPersistTuneXmlUtility* This);
+        IPersistTuneXmlUtility *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPersistTuneXmlUtility* This);
+        IPersistTuneXmlUtility *This);
 
     /*** IPersistTuneXmlUtility methods ***/
     HRESULT (STDMETHODCALLTYPE *Deserialize)(
-        IPersistTuneXmlUtility* This,
+        IPersistTuneXmlUtility *This,
         VARIANT varValue,
         IUnknown **ppObject);
 
     END_INTERFACE
 } IPersistTuneXmlUtilityVtbl;
+
 interface IPersistTuneXmlUtility {
     CONST_VTBL IPersistTuneXmlUtilityVtbl* lpVtbl;
 };
@@ -16644,30 +17018,31 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IPersistTuneXmlUtility2* This,
+        IPersistTuneXmlUtility2 *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IPersistTuneXmlUtility2* This);
+        IPersistTuneXmlUtility2 *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IPersistTuneXmlUtility2* This);
+        IPersistTuneXmlUtility2 *This);
 
     /*** IPersistTuneXmlUtility methods ***/
     HRESULT (STDMETHODCALLTYPE *Deserialize)(
-        IPersistTuneXmlUtility2* This,
+        IPersistTuneXmlUtility2 *This,
         VARIANT varValue,
         IUnknown **ppObject);
 
     /*** IPersistTuneXmlUtility2 methods ***/
     HRESULT (STDMETHODCALLTYPE *Serialize)(
-        IPersistTuneXmlUtility2* This,
+        IPersistTuneXmlUtility2 *This,
         ITuneRequest *piTuneRequest,
         BSTR *pString);
 
     END_INTERFACE
 } IPersistTuneXmlUtility2Vtbl;
+
 interface IPersistTuneXmlUtility2 {
     CONST_VTBL IPersistTuneXmlUtility2Vtbl* lpVtbl;
 };
@@ -16734,24 +17109,25 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IBDACreateTuneRequestEx* This,
+        IBDACreateTuneRequestEx *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IBDACreateTuneRequestEx* This);
+        IBDACreateTuneRequestEx *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IBDACreateTuneRequestEx* This);
+        IBDACreateTuneRequestEx *This);
 
     /*** IBDACreateTuneRequestEx methods ***/
     HRESULT (STDMETHODCALLTYPE *CreateTuneRequestEx)(
-        IBDACreateTuneRequestEx* This,
+        IBDACreateTuneRequestEx *This,
         REFCLSID TuneRequestIID,
         ITuneRequest **TuneRequest);
 
     END_INTERFACE
 } IBDACreateTuneRequestExVtbl;
+
 interface IBDACreateTuneRequestEx {
     CONST_VTBL IBDACreateTuneRequestExVtbl* lpVtbl;
 };
@@ -16787,6 +17163,8 @@
 
 #endif  /* __IBDACreateTuneRequestEx_INTERFACE_DEFINED__ */
 
+#ifndef __TunerLib_LIBRARY_DEFINED__
+#define __TunerLib_LIBRARY_DEFINED__
 
 DEFINE_GUID(LIBID_TunerLib, 0x9b085638, 0x018e, 0x11d3, 0x9d,0x8e, 0x00,0xc0,0x4f,0x72,0xd9,0x80);
 
@@ -17349,6 +17727,7 @@
 #endif
 #endif
 
+#endif /* __TunerLib_LIBRARY_DEFINED__ */
 #endif
 /* Begin additional prototypes for all interfaces */
 
diff --git a/mingw-w64-headers/include/uianimation.h b/mingw-w64-headers/include/uianimation.h
index e759107..4aa9198 100644
--- a/mingw-w64-headers/include/uianimation.h
+++ b/mingw-w64-headers/include/uianimation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/uianimation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/uianimation.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/uiautomationclient.h b/mingw-w64-headers/include/uiautomationclient.h
index e6b4b15..8d97524 100644
--- a/mingw-w64-headers/include/uiautomationclient.h
+++ b/mingw-w64-headers/include/uiautomationclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/uiautomationclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/uiautomationclient.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/uiautomationcore.h b/mingw-w64-headers/include/uiautomationcore.h
index a338bab..e827cd0 100644
--- a/mingw-w64-headers/include/uiautomationcore.h
+++ b/mingw-w64-headers/include/uiautomationcore.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/uiautomationcore.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/uiautomationcore.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/uiviewsettingsinterop.h b/mingw-w64-headers/include/uiviewsettingsinterop.h
index ef5d3c1..ec8f720 100644
--- a/mingw-w64-headers/include/uiviewsettingsinterop.h
+++ b/mingw-w64-headers/include/uiviewsettingsinterop.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/uiviewsettingsinterop.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/uiviewsettingsinterop.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/unknwn.h b/mingw-w64-headers/include/unknwn.h
index 051c5ec..949d268 100644
--- a/mingw-w64-headers/include/unknwn.h
+++ b/mingw-w64-headers/include/unknwn.h
@@ -1,11 +1,12 @@
-/*** Autogenerated by WIDL 1.6 from include/unknwn.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/unknwn.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>
@@ -20,16 +21,25 @@
 #ifndef __IUnknown_FWD_DEFINED__
 #define __IUnknown_FWD_DEFINED__
 typedef interface IUnknown IUnknown;
+#ifdef __cplusplus
+interface IUnknown;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __AsyncIUnknown_FWD_DEFINED__
 #define __AsyncIUnknown_FWD_DEFINED__
 typedef interface AsyncIUnknown AsyncIUnknown;
+#ifdef __cplusplus
+interface AsyncIUnknown;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IClassFactory_FWD_DEFINED__
 #define __IClassFactory_FWD_DEFINED__
 typedef interface IClassFactory IClassFactory;
+#ifdef __cplusplus
+interface IClassFactory;
+#endif /* __cplusplus */
 #endif
 
 /* Headers for imported files */
@@ -93,6 +103,7 @@
 MIDL_INTERFACE("00000000-0000-0000-c000-000000000046")
 IUnknown
 {
+
     BEGIN_INTERFACE
 
     virtual HRESULT STDMETHODCALLTYPE QueryInterface(
@@ -106,6 +117,7 @@
         ) = 0;
 
     END_INTERFACE
+
 };
 #ifdef __CRT_UUID_DECL
 __CRT_UUID_DECL(IUnknown, 0x00000000, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
@@ -116,18 +128,19 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IUnknown* This,
+        IUnknown *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IUnknown* This);
+        IUnknown *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IUnknown* This);
+        IUnknown *This);
 
     END_INTERFACE
 } IUnknownVtbl;
+
 interface IUnknown {
     CONST_VTBL IUnknownVtbl* lpVtbl;
 };
@@ -200,39 +213,40 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        AsyncIUnknown* This,
+        AsyncIUnknown *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        AsyncIUnknown* This);
+        AsyncIUnknown *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        AsyncIUnknown* This);
+        AsyncIUnknown *This);
 
     /*** AsyncIUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *Begin_QueryInterface)(
-        AsyncIUnknown* This,
+        AsyncIUnknown *This,
         REFIID riid);
 
     HRESULT (STDMETHODCALLTYPE *Finish_QueryInterface)(
-        AsyncIUnknown* This,
+        AsyncIUnknown *This,
         void **ppvObject);
 
     HRESULT (STDMETHODCALLTYPE *Begin_AddRef)(
-        AsyncIUnknown* This);
+        AsyncIUnknown *This);
 
     ULONG (STDMETHODCALLTYPE *Finish_AddRef)(
-        AsyncIUnknown* This);
+        AsyncIUnknown *This);
 
     HRESULT (STDMETHODCALLTYPE *Begin_Release)(
-        AsyncIUnknown* This);
+        AsyncIUnknown *This);
 
     ULONG (STDMETHODCALLTYPE *Finish_Release)(
-        AsyncIUnknown* This);
+        AsyncIUnknown *This);
 
     END_INTERFACE
 } AsyncIUnknownVtbl;
+
 interface AsyncIUnknown {
     CONST_VTBL AsyncIUnknownVtbl* lpVtbl;
 };
@@ -322,29 +336,30 @@
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        IClassFactory* This,
+        IClassFactory *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        IClassFactory* This);
+        IClassFactory *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        IClassFactory* This);
+        IClassFactory *This);
 
     /*** IClassFactory methods ***/
     HRESULT (STDMETHODCALLTYPE *CreateInstance)(
-        IClassFactory* This,
+        IClassFactory *This,
         IUnknown *pUnkOuter,
         REFIID riid,
         void **ppvObject);
 
     HRESULT (STDMETHODCALLTYPE *LockServer)(
-        IClassFactory* This,
+        IClassFactory *This,
         WINBOOL fLock);
 
     END_INTERFACE
 } IClassFactoryVtbl;
+
 interface IClassFactory {
     CONST_VTBL IClassFactoryVtbl* lpVtbl;
 };
diff --git a/mingw-w64-headers/include/unknwnbase.h b/mingw-w64-headers/include/unknwnbase.h
index b827355..f1d4a0f 100644
--- a/mingw-w64-headers/include/unknwnbase.h
+++ b/mingw-w64-headers/include/unknwnbase.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/unknwnbase.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/unknwnbase.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/urlhist.h b/mingw-w64-headers/include/urlhist.h
index fc10c35..bfddfb6 100644
--- a/mingw-w64-headers/include/urlhist.h
+++ b/mingw-w64-headers/include/urlhist.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/urlhist.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/urlhist.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/urlmon.h b/mingw-w64-headers/include/urlmon.h
index 65c644c..bc19b35 100644
--- a/mingw-w64-headers/include/urlmon.h
+++ b/mingw-w64-headers/include/urlmon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/urlmon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/urlmon.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/vmr9.h b/mingw-w64-headers/include/vmr9.h
index 10676e1..3a2cab5 100644
--- a/mingw-w64-headers/include/vmr9.h
+++ b/mingw-w64-headers/include/vmr9.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/vmr9.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/vmr9.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/vss.h b/mingw-w64-headers/include/vss.h
index 4b7d24f..0428095 100644
--- a/mingw-w64-headers/include/vss.h
+++ b/mingw-w64-headers/include/vss.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/vss.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/vss.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wbemads.h b/mingw-w64-headers/include/wbemads.h
index e6b2fa3..1dc1a6c 100644
--- a/mingw-w64-headers/include/wbemads.h
+++ b/mingw-w64-headers/include/wbemads.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wbemads.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wbemads.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wbemcli.h b/mingw-w64-headers/include/wbemcli.h
index ac0a3ed..c034e17 100644
--- a/mingw-w64-headers/include/wbemcli.h
+++ b/mingw-w64-headers/include/wbemcli.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wbemcli.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wbemcli.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wbemdisp.h b/mingw-w64-headers/include/wbemdisp.h
index c03f729..c6f85d1 100644
--- a/mingw-w64-headers/include/wbemdisp.h
+++ b/mingw-w64-headers/include/wbemdisp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wbemdisp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wbemdisp.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wbemprov.h b/mingw-w64-headers/include/wbemprov.h
index 2d16eb3..a7bd4ac 100644
--- a/mingw-w64-headers/include/wbemprov.h
+++ b/mingw-w64-headers/include/wbemprov.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wbemprov.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wbemprov.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wbemtran.h b/mingw-w64-headers/include/wbemtran.h
index c3c19ad..7ef4a2e 100644
--- a/mingw-w64-headers/include/wbemtran.h
+++ b/mingw-w64-headers/include/wbemtran.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wbemtran.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wbemtran.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wdstptmgmt.h b/mingw-w64-headers/include/wdstptmgmt.h
index c625c24..5e45d92 100644
--- a/mingw-w64-headers/include/wdstptmgmt.h
+++ b/mingw-w64-headers/include/wdstptmgmt.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wdstptmgmt.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wdstptmgmt.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wincodec.h b/mingw-w64-headers/include/wincodec.h
index 931e3fe..0580629 100644
--- a/mingw-w64-headers/include/wincodec.h
+++ b/mingw-w64-headers/include/wincodec.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wincodec.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wincodec.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wincodecsdk.h b/mingw-w64-headers/include/wincodecsdk.h
index 5d88e8d..b010223 100644
--- a/mingw-w64-headers/include/wincodecsdk.h
+++ b/mingw-w64-headers/include/wincodecsdk.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wincodecsdk.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wincodecsdk.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/windows.foundation.h b/mingw-w64-headers/include/windows.foundation.h
index 0cc7bd2..11828f6 100644
--- a/mingw-w64-headers/include/windows.foundation.h
+++ b/mingw-w64-headers/include/windows.foundation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/windows.foundation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/windows.foundation.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/windows.security.cryptography.h b/mingw-w64-headers/include/windows.security.cryptography.h
index 78c71c8..c60712d 100644
--- a/mingw-w64-headers/include/windows.security.cryptography.h
+++ b/mingw-w64-headers/include/windows.security.cryptography.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/windows.security.cryptography.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/windows.security.cryptography.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/windows.storage.h b/mingw-w64-headers/include/windows.storage.h
index ef88d30..17d7889 100644
--- a/mingw-w64-headers/include/windows.storage.h
+++ b/mingw-w64-headers/include/windows.storage.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/windows.storage.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/windows.storage.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/windows.storage.streams.h b/mingw-w64-headers/include/windows.storage.streams.h
index 567d228..cdcd474 100644
--- a/mingw-w64-headers/include/windows.storage.streams.h
+++ b/mingw-w64-headers/include/windows.storage.streams.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/windows.storage.streams.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/windows.storage.streams.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/windows.system.h b/mingw-w64-headers/include/windows.system.h
index e20c34a..dc9cb79 100644
--- a/mingw-w64-headers/include/windows.system.h
+++ b/mingw-w64-headers/include/windows.system.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/windows.system.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/windows.system.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/windows.system.threading.h b/mingw-w64-headers/include/windows.system.threading.h
index c0a4d0a..a173c9c 100644
--- a/mingw-w64-headers/include/windows.system.threading.h
+++ b/mingw-w64-headers/include/windows.system.threading.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/windows.system.threading.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/windows.system.threading.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wmcodecdsp.h b/mingw-w64-headers/include/wmcodecdsp.h
index f9eadb7..ac7f6c0 100644
--- a/mingw-w64-headers/include/wmcodecdsp.h
+++ b/mingw-w64-headers/include/wmcodecdsp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wmcodecdsp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wmcodecdsp.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wmcontainer.h b/mingw-w64-headers/include/wmcontainer.h
index c4a7247..c66aa93 100644
--- a/mingw-w64-headers/include/wmcontainer.h
+++ b/mingw-w64-headers/include/wmcontainer.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wmcontainer.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wmcontainer.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wmdrmsdk.h b/mingw-w64-headers/include/wmdrmsdk.h
index 06e84ec..9e0ab16 100644
--- a/mingw-w64-headers/include/wmdrmsdk.h
+++ b/mingw-w64-headers/include/wmdrmsdk.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wmdrmsdk.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wmdrmsdk.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wmsbuffer.h b/mingw-w64-headers/include/wmsbuffer.h
index 3f3d7cb..6c0ff71 100644
--- a/mingw-w64-headers/include/wmsbuffer.h
+++ b/mingw-w64-headers/include/wmsbuffer.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wmsbuffer.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wmsbuffer.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wmsdkidl.h b/mingw-w64-headers/include/wmsdkidl.h
index 4650789..e5d89bb 100644
--- a/mingw-w64-headers/include/wmsdkidl.h
+++ b/mingw-w64-headers/include/wmsdkidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wmsdkidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wmsdkidl.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wpcapi.h b/mingw-w64-headers/include/wpcapi.h
index 6120531..752ffc7 100644
--- a/mingw-w64-headers/include/wpcapi.h
+++ b/mingw-w64-headers/include/wpcapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wpcapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wpcapi.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wsdattachment.h b/mingw-w64-headers/include/wsdattachment.h
index 4a0deed..37efcec 100644
--- a/mingw-w64-headers/include/wsdattachment.h
+++ b/mingw-w64-headers/include/wsdattachment.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wsdattachment.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wsdattachment.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wsdbase.h b/mingw-w64-headers/include/wsdbase.h
index a342355..95fa092 100644
--- a/mingw-w64-headers/include/wsdbase.h
+++ b/mingw-w64-headers/include/wsdbase.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wsdbase.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wsdbase.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wsdclient.h b/mingw-w64-headers/include/wsdclient.h
index 8ce4dc6..3e3ad8a 100644
--- a/mingw-w64-headers/include/wsdclient.h
+++ b/mingw-w64-headers/include/wsdclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wsdclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wsdclient.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wsddisco.h b/mingw-w64-headers/include/wsddisco.h
index 2526701..dc2e65b 100644
--- a/mingw-w64-headers/include/wsddisco.h
+++ b/mingw-w64-headers/include/wsddisco.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wsddisco.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wsddisco.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wsdhost.h b/mingw-w64-headers/include/wsdhost.h
index 059d41d..51f2aac 100644
--- a/mingw-w64-headers/include/wsdhost.h
+++ b/mingw-w64-headers/include/wsdhost.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wsdhost.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wsdhost.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wsdxml.h b/mingw-w64-headers/include/wsdxml.h
index 9fa93df..1149b3c 100644
--- a/mingw-w64-headers/include/wsdxml.h
+++ b/mingw-w64-headers/include/wsdxml.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wsdxml.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wsdxml.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wsmandisp.h b/mingw-w64-headers/include/wsmandisp.h
index bfd4606..8386b70 100644
--- a/mingw-w64-headers/include/wsmandisp.h
+++ b/mingw-w64-headers/include/wsmandisp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wsmandisp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wsmandisp.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wtypes.h b/mingw-w64-headers/include/wtypes.h
index d3bbbd9..890d9ee 100644
--- a/mingw-w64-headers/include/wtypes.h
+++ b/mingw-w64-headers/include/wtypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wtypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wtypes.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/wtypesbase.h b/mingw-w64-headers/include/wtypesbase.h
index ac4a23c..babc1d2 100644
--- a/mingw-w64-headers/include/wtypesbase.h
+++ b/mingw-w64-headers/include/wtypesbase.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/wtypesbase.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/wtypesbase.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xapo.h b/mingw-w64-headers/include/xapo.h
index 897018f..c2839db 100644
--- a/mingw-w64-headers/include/xapo.h
+++ b/mingw-w64-headers/include/xapo.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xapo.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xapo.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xaudio2.h b/mingw-w64-headers/include/xaudio2.h
index 2f58cad..16f02ad 100644
--- a/mingw-w64-headers/include/xaudio2.h
+++ b/mingw-w64-headers/include/xaudio2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xaudio2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xaudio2.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xaudio2fx.h b/mingw-w64-headers/include/xaudio2fx.h
index 5a1160c..f16e2e2 100644
--- a/mingw-w64-headers/include/xaudio2fx.h
+++ b/mingw-w64-headers/include/xaudio2fx.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xaudio2fx.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xaudio2fx.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xmllite.h b/mingw-w64-headers/include/xmllite.h
index a9eec4e..143a658 100644
--- a/mingw-w64-headers/include/xmllite.h
+++ b/mingw-w64-headers/include/xmllite.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xmllite.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xmllite.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xpsdigitalsignature.h b/mingw-w64-headers/include/xpsdigitalsignature.h
index d51bbae..9e75c07 100644
--- a/mingw-w64-headers/include/xpsdigitalsignature.h
+++ b/mingw-w64-headers/include/xpsdigitalsignature.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xpsdigitalsignature.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xpsdigitalsignature.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xpsobjectmodel.h b/mingw-w64-headers/include/xpsobjectmodel.h
index 111254a..df155fd 100644
--- a/mingw-w64-headers/include/xpsobjectmodel.h
+++ b/mingw-w64-headers/include/xpsobjectmodel.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xpsobjectmodel.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xpsobjectmodel.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xpsobjectmodel_1.h b/mingw-w64-headers/include/xpsobjectmodel_1.h
index f114e2a..5eadd34 100644
--- a/mingw-w64-headers/include/xpsobjectmodel_1.h
+++ b/mingw-w64-headers/include/xpsobjectmodel_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xpsobjectmodel_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xpsobjectmodel_1.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xpsprint.h b/mingw-w64-headers/include/xpsprint.h
index 0a95513..292563a 100644
--- a/mingw-w64-headers/include/xpsprint.h
+++ b/mingw-w64-headers/include/xpsprint.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xpsprint.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xpsprint.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/mingw-w64-headers/include/xpsrassvc.h b/mingw-w64-headers/include/xpsrassvc.h
index 41b74fb..4b5742d 100644
--- a/mingw-w64-headers/include/xpsrassvc.h
+++ b/mingw-w64-headers/include/xpsrassvc.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.0-rc1 from include/xpsrassvc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc3 from include/xpsrassvc.idl - Do not edit ***/
 
 #ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
