diff --git a/mingw-w64-headers/include/bdaiface.h b/mingw-w64-headers/include/bdaiface.h
index 06ab703..8db19af 100644
--- a/mingw-w64-headers/include/bdaiface.h
+++ b/mingw-w64-headers/include/bdaiface.h
@@ -470,63 +470,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_PutSignalSource_Proxy(
-    IBDA_NetworkProvider* This,
-    ULONG ulSignalSource);
-void __RPC_STUB IBDA_NetworkProvider_PutSignalSource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_GetSignalSource_Proxy(
-    IBDA_NetworkProvider* This,
-    ULONG *pulSignalSource);
-void __RPC_STUB IBDA_NetworkProvider_GetSignalSource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_GetNetworkType_Proxy(
-    IBDA_NetworkProvider* This,
-    GUID *pguidNetworkType);
-void __RPC_STUB IBDA_NetworkProvider_GetNetworkType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_PutTuningSpace_Proxy(
-    IBDA_NetworkProvider* This,
-    REFGUID guidTuningSpace);
-void __RPC_STUB IBDA_NetworkProvider_PutTuningSpace_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_GetTuningSpace_Proxy(
-    IBDA_NetworkProvider* This,
-    GUID *pguidTuingSpace);
-void __RPC_STUB IBDA_NetworkProvider_GetTuningSpace_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_RegisterDeviceFilter_Proxy(
-    IBDA_NetworkProvider* This,
-    IUnknown *pUnkFilterControl,
-    ULONG *ppvRegisitrationContext);
-void __RPC_STUB IBDA_NetworkProvider_RegisterDeviceFilter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NetworkProvider_UnRegisterDeviceFilter_Proxy(
-    IBDA_NetworkProvider* This,
-    ULONG pvRegistrationContext);
-void __RPC_STUB IBDA_NetworkProvider_UnRegisterDeviceFilter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_NetworkProvider_INTERFACE_DEFINED__ */
 
@@ -651,48 +594,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_GetMulticastListSize_Proxy(
-    IBDA_EthernetFilter* This,
-    ULONG *pulcbAddresses);
-void __RPC_STUB IBDA_EthernetFilter_GetMulticastListSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_PutMulticastList_Proxy(
-    IBDA_EthernetFilter* This,
-    ULONG ulcbAddresses,
-    BYTE pAddressList[]);
-void __RPC_STUB IBDA_EthernetFilter_PutMulticastList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_GetMulticastList_Proxy(
-    IBDA_EthernetFilter* This,
-    ULONG *pulcbAddresses,
-    BYTE pAddressList[]);
-void __RPC_STUB IBDA_EthernetFilter_GetMulticastList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_PutMulticastMode_Proxy(
-    IBDA_EthernetFilter* This,
-    ULONG ulModeMask);
-void __RPC_STUB IBDA_EthernetFilter_PutMulticastMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_EthernetFilter_GetMulticastMode_Proxy(
-    IBDA_EthernetFilter* This,
-    ULONG *pulModeMask);
-void __RPC_STUB IBDA_EthernetFilter_GetMulticastMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_EthernetFilter_INTERFACE_DEFINED__ */
 
@@ -817,48 +718,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_GetMulticastListSize_Proxy(
-    IBDA_IPV4Filter* This,
-    ULONG *pulcbAddresses);
-void __RPC_STUB IBDA_IPV4Filter_GetMulticastListSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_PutMulticastList_Proxy(
-    IBDA_IPV4Filter* This,
-    ULONG ulcbAddresses,
-    BYTE pAddressList[]);
-void __RPC_STUB IBDA_IPV4Filter_PutMulticastList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_GetMulticastList_Proxy(
-    IBDA_IPV4Filter* This,
-    ULONG *pulcbAddresses,
-    BYTE pAddressList[]);
-void __RPC_STUB IBDA_IPV4Filter_GetMulticastList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_PutMulticastMode_Proxy(
-    IBDA_IPV4Filter* This,
-    ULONG ulModeMask);
-void __RPC_STUB IBDA_IPV4Filter_PutMulticastMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPV4Filter_GetMulticastMode_Proxy(
-    IBDA_IPV4Filter* This,
-    ULONG *pulModeMask);
-void __RPC_STUB IBDA_IPV4Filter_GetMulticastMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_IPV4Filter_INTERFACE_DEFINED__ */
 
@@ -983,48 +842,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_GetMulticastListSize_Proxy(
-    IBDA_IPV6Filter* This,
-    ULONG *pulcbAddresses);
-void __RPC_STUB IBDA_IPV6Filter_GetMulticastListSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_PutMulticastList_Proxy(
-    IBDA_IPV6Filter* This,
-    ULONG ulcbAddresses,
-    BYTE pAddressList[]);
-void __RPC_STUB IBDA_IPV6Filter_PutMulticastList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_GetMulticastList_Proxy(
-    IBDA_IPV6Filter* This,
-    ULONG *pulcbAddresses,
-    BYTE pAddressList[]);
-void __RPC_STUB IBDA_IPV6Filter_GetMulticastList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_PutMulticastMode_Proxy(
-    IBDA_IPV6Filter* This,
-    ULONG ulModeMask);
-void __RPC_STUB IBDA_IPV6Filter_PutMulticastMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPV6Filter_GetMulticastMode_Proxy(
-    IBDA_IPV6Filter* This,
-    ULONG *pulModeMask);
-void __RPC_STUB IBDA_IPV6Filter_GetMulticastMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_IPV6Filter_INTERFACE_DEFINED__ */
 
@@ -1131,35 +948,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DeviceControl_StartChanges_Proxy(
-    IBDA_DeviceControl* This);
-void __RPC_STUB IBDA_DeviceControl_StartChanges_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DeviceControl_CheckChanges_Proxy(
-    IBDA_DeviceControl* This);
-void __RPC_STUB IBDA_DeviceControl_CheckChanges_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DeviceControl_CommitChanges_Proxy(
-    IBDA_DeviceControl* This);
-void __RPC_STUB IBDA_DeviceControl_CommitChanges_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DeviceControl_GetChangeState_Proxy(
-    IBDA_DeviceControl* This,
-    ULONG *pState);
-void __RPC_STUB IBDA_DeviceControl_GetChangeState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DeviceControl_INTERFACE_DEFINED__ */
 
@@ -1258,30 +1046,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_PinControl_GetPinID_Proxy(
-    IBDA_PinControl* This,
-    ULONG *pulPinID);
-void __RPC_STUB IBDA_PinControl_GetPinID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_PinControl_GetPinType_Proxy(
-    IBDA_PinControl* This,
-    ULONG *pulPinType);
-void __RPC_STUB IBDA_PinControl_GetPinType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_PinControl_RegistrationContext_Proxy(
-    IBDA_PinControl* This,
-    ULONG *pulRegistrationCtx);
-void __RPC_STUB IBDA_PinControl_RegistrationContext_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_PinControl_INTERFACE_DEFINED__ */
 
@@ -1413,54 +1177,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_PutNetworkType_Proxy(
-    IBDA_SignalProperties* This,
-    REFGUID guidNetworkType);
-void __RPC_STUB IBDA_SignalProperties_PutNetworkType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_GetNetworkType_Proxy(
-    IBDA_SignalProperties* This,
-    GUID *pguidNetworkType);
-void __RPC_STUB IBDA_SignalProperties_GetNetworkType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_PutSignalSource_Proxy(
-    IBDA_SignalProperties* This,
-    ULONG ulSignalSource);
-void __RPC_STUB IBDA_SignalProperties_PutSignalSource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_GetSignalSource_Proxy(
-    IBDA_SignalProperties* This,
-    ULONG *pulSignalSource);
-void __RPC_STUB IBDA_SignalProperties_GetSignalSource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_PutTuningSpace_Proxy(
-    IBDA_SignalProperties* This,
-    REFGUID guidTuningSpace);
-void __RPC_STUB IBDA_SignalProperties_PutTuningSpace_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalProperties_GetTuningSpace_Proxy(
-    IBDA_SignalProperties* This,
-    GUID *pguidTuingSpace);
-void __RPC_STUB IBDA_SignalProperties_GetTuningSpace_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_SignalProperties_INTERFACE_DEFINED__ */
 
@@ -1636,86 +1352,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SignalStrength_Proxy(
-    IBDA_SignalStatistics* This,
-    LONG lDbStrength);
-void __RPC_STUB IBDA_SignalStatistics_put_SignalStrength_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SignalStrength_Proxy(
-    IBDA_SignalStatistics* This,
-    LONG *plDbStrength);
-void __RPC_STUB IBDA_SignalStatistics_get_SignalStrength_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SignalQuality_Proxy(
-    IBDA_SignalStatistics* This,
-    LONG lPercentQuality);
-void __RPC_STUB IBDA_SignalStatistics_put_SignalQuality_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SignalQuality_Proxy(
-    IBDA_SignalStatistics* This,
-    LONG *plPercentQuality);
-void __RPC_STUB IBDA_SignalStatistics_get_SignalQuality_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SignalPresent_Proxy(
-    IBDA_SignalStatistics* This,
-    BOOLEAN fPresent);
-void __RPC_STUB IBDA_SignalStatistics_put_SignalPresent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SignalPresent_Proxy(
-    IBDA_SignalStatistics* This,
-    BOOLEAN *pfPresent);
-void __RPC_STUB IBDA_SignalStatistics_get_SignalPresent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SignalLocked_Proxy(
-    IBDA_SignalStatistics* This,
-    BOOLEAN fLocked);
-void __RPC_STUB IBDA_SignalStatistics_put_SignalLocked_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SignalLocked_Proxy(
-    IBDA_SignalStatistics* This,
-    BOOLEAN *pfLocked);
-void __RPC_STUB IBDA_SignalStatistics_get_SignalLocked_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_put_SampleTime_Proxy(
-    IBDA_SignalStatistics* This,
-    LONG lmsSampleTime);
-void __RPC_STUB IBDA_SignalStatistics_put_SampleTime_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_SignalStatistics_get_SampleTime_Proxy(
-    IBDA_SignalStatistics* This,
-    LONG *plmsSampleTime);
-void __RPC_STUB IBDA_SignalStatistics_get_SampleTime_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_SignalStatistics_INTERFACE_DEFINED__ */
 
@@ -1938,112 +1574,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_Topology_GetNodeTypes_Proxy(
-    IBDA_Topology* This,
-    ULONG *pulcNodeTypes,
-    ULONG ulcNodeTypesMax,
-    ULONG rgulNodeTypes[]);
-void __RPC_STUB IBDA_Topology_GetNodeTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_GetNodeDescriptors_Proxy(
-    IBDA_Topology* This,
-    ULONG *ulcNodeDescriptors,
-    ULONG ulcNodeDescriptorsMax,
-    BDANODE_DESCRIPTOR rgNodeDescriptors[]);
-void __RPC_STUB IBDA_Topology_GetNodeDescriptors_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_GetNodeInterfaces_Proxy(
-    IBDA_Topology* This,
-    ULONG ulNodeType,
-    ULONG *pulcInterfaces,
-    ULONG ulcInterfacesMax,
-    GUID rgguidInterfaces[]);
-void __RPC_STUB IBDA_Topology_GetNodeInterfaces_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_GetPinTypes_Proxy(
-    IBDA_Topology* This,
-    ULONG *pulcPinTypes,
-    ULONG ulcPinTypesMax,
-    ULONG rgulPinTypes[]);
-void __RPC_STUB IBDA_Topology_GetPinTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_GetTemplateConnections_Proxy(
-    IBDA_Topology* This,
-    ULONG *pulcConnections,
-    ULONG ulcConnectionsMax,
-    BDA_TEMPLATE_CONNECTION rgConnections[]);
-void __RPC_STUB IBDA_Topology_GetTemplateConnections_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_CreatePin_Proxy(
-    IBDA_Topology* This,
-    ULONG ulPinType,
-    ULONG *pulPinId);
-void __RPC_STUB IBDA_Topology_CreatePin_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_DeletePin_Proxy(
-    IBDA_Topology* This,
-    ULONG ulPinId);
-void __RPC_STUB IBDA_Topology_DeletePin_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_SetMediaType_Proxy(
-    IBDA_Topology* This,
-    ULONG ulPinId,
-    AM_MEDIA_TYPE *pMediaType);
-void __RPC_STUB IBDA_Topology_SetMediaType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_SetMedium_Proxy(
-    IBDA_Topology* This,
-    ULONG ulPinId,
-    REGPINMEDIUM *pMedium);
-void __RPC_STUB IBDA_Topology_SetMedium_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_CreateTopology_Proxy(
-    IBDA_Topology* This,
-    ULONG ulInputPinId,
-    ULONG ulOutputPinId);
-void __RPC_STUB IBDA_Topology_CreateTopology_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Topology_GetControlNode_Proxy(
-    IBDA_Topology* This,
-    ULONG ulInputPinId,
-    ULONG ulOutputPinId,
-    ULONG ulNodeType,
-    IUnknown **ppControlNode);
-void __RPC_STUB IBDA_Topology_GetControlNode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_Topology_INTERFACE_DEFINED__ */
 
@@ -2129,20 +1659,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_VoidTransform_Start_Proxy(
-    IBDA_VoidTransform* This);
-void __RPC_STUB IBDA_VoidTransform_Start_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_VoidTransform_Stop_Proxy(
-    IBDA_VoidTransform* This);
-void __RPC_STUB IBDA_VoidTransform_Stop_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_VoidTransform_INTERFACE_DEFINED__ */
 
@@ -2228,20 +1744,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_NullTransform_Start_Proxy(
-    IBDA_NullTransform* This);
-void __RPC_STUB IBDA_NullTransform_Start_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NullTransform_Stop_Proxy(
-    IBDA_NullTransform* This);
-void __RPC_STUB IBDA_NullTransform_Stop_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_NullTransform_INTERFACE_DEFINED__ */
 
@@ -2439,102 +1941,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Autotune_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG ulTransponder);
-void __RPC_STUB IBDA_FrequencyFilter_put_Autotune_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Autotune_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG *pulTransponder);
-void __RPC_STUB IBDA_FrequencyFilter_get_Autotune_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Frequency_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG ulFrequency);
-void __RPC_STUB IBDA_FrequencyFilter_put_Frequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Frequency_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG *pulFrequency);
-void __RPC_STUB IBDA_FrequencyFilter_get_Frequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Polarity_Proxy(
-    IBDA_FrequencyFilter* This,
-    Polarisation Polarity);
-void __RPC_STUB IBDA_FrequencyFilter_put_Polarity_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Polarity_Proxy(
-    IBDA_FrequencyFilter* This,
-    Polarisation *pPolarity);
-void __RPC_STUB IBDA_FrequencyFilter_get_Polarity_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Range_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG ulRange);
-void __RPC_STUB IBDA_FrequencyFilter_put_Range_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Range_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG *pulRange);
-void __RPC_STUB IBDA_FrequencyFilter_get_Range_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_Bandwidth_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG ulBandwidth);
-void __RPC_STUB IBDA_FrequencyFilter_put_Bandwidth_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_Bandwidth_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG *pulBandwidth);
-void __RPC_STUB IBDA_FrequencyFilter_get_Bandwidth_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_put_FrequencyMultiplier_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG ulMultiplier);
-void __RPC_STUB IBDA_FrequencyFilter_put_FrequencyMultiplier_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FrequencyFilter_get_FrequencyMultiplier_Proxy(
-    IBDA_FrequencyFilter* This,
-    ULONG *pulMultiplier);
-void __RPC_STUB IBDA_FrequencyFilter_get_FrequencyMultiplier_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_FrequencyFilter_INTERFACE_DEFINED__ */
 
@@ -2666,54 +2072,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_put_LocalOscilatorFrequencyLowBand_Proxy(
-    IBDA_LNBInfo* This,
-    ULONG ulLOFLow);
-void __RPC_STUB IBDA_LNBInfo_put_LocalOscilatorFrequencyLowBand_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_get_LocalOscilatorFrequencyLowBand_Proxy(
-    IBDA_LNBInfo* This,
-    ULONG *pulLOFLow);
-void __RPC_STUB IBDA_LNBInfo_get_LocalOscilatorFrequencyLowBand_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_put_LocalOscilatorFrequencyHighBand_Proxy(
-    IBDA_LNBInfo* This,
-    ULONG ulLOFHigh);
-void __RPC_STUB IBDA_LNBInfo_put_LocalOscilatorFrequencyHighBand_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_get_LocalOscilatorFrequencyHighBand_Proxy(
-    IBDA_LNBInfo* This,
-    ULONG *pulLOFHigh);
-void __RPC_STUB IBDA_LNBInfo_get_LocalOscilatorFrequencyHighBand_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_put_HighLowSwitchFrequency_Proxy(
-    IBDA_LNBInfo* This,
-    ULONG ulSwitchFrequency);
-void __RPC_STUB IBDA_LNBInfo_put_HighLowSwitchFrequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_LNBInfo_get_HighLowSwitchFrequency_Proxy(
-    IBDA_LNBInfo* This,
-    ULONG *pulSwitchFrequency);
-void __RPC_STUB IBDA_LNBInfo_get_HighLowSwitchFrequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_LNBInfo_INTERFACE_DEFINED__ */
 
@@ -2853,58 +2211,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_EnableDiseqCommands_Proxy(
-    IBDA_DiseqCommand* This,
-    BOOLEAN bEnable);
-void __RPC_STUB IBDA_DiseqCommand_put_EnableDiseqCommands_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_DiseqLNBSource_Proxy(
-    IBDA_DiseqCommand* This,
-    ULONG ulLNBSource);
-void __RPC_STUB IBDA_DiseqCommand_put_DiseqLNBSource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_DiseqUseToneBurst_Proxy(
-    IBDA_DiseqCommand* This,
-    BOOLEAN bUseToneBurst);
-void __RPC_STUB IBDA_DiseqCommand_put_DiseqUseToneBurst_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_DiseqRepeats_Proxy(
-    IBDA_DiseqCommand* This,
-    ULONG ulRepeats);
-void __RPC_STUB IBDA_DiseqCommand_put_DiseqRepeats_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_put_DiseqSendCommand_Proxy(
-    IBDA_DiseqCommand* This,
-    ULONG ulRequestId,
-    ULONG ulcbCommandLen,
-    BYTE *pbCommand);
-void __RPC_STUB IBDA_DiseqCommand_put_DiseqSendCommand_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DiseqCommand_get_DiseqResponse_Proxy(
-    IBDA_DiseqCommand* This,
-    ULONG ulRequestId,
-    ULONG *pulcbResponseLen,
-    BYTE pbResponse[]);
-void __RPC_STUB IBDA_DiseqCommand_get_DiseqResponse_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DiseqCommand_INTERFACE_DEFINED__ */
 
@@ -2980,13 +2286,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_AutoDemodulate_put_AutoDemodulate_Proxy(
-    IBDA_AutoDemodulate* This);
-void __RPC_STUB IBDA_AutoDemodulate_put_AutoDemodulate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_AutoDemodulate_INTERFACE_DEFINED__ */
 
@@ -3103,34 +2402,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_AutoDemodulateEx_get_SupportedDeviceNodeTypes_Proxy(
-    IBDA_AutoDemodulateEx* This,
-    ULONG ulcDeviceNodeTypesMax,
-    ULONG *pulcDeviceNodeTypes,
-    GUID *pguidDeviceNodeTypes);
-void __RPC_STUB IBDA_AutoDemodulateEx_get_SupportedDeviceNodeTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_AutoDemodulateEx_get_SupportedVideoFormats_Proxy(
-    IBDA_AutoDemodulateEx* This,
-    ULONG *pulAMTunerModeType,
-    ULONG *pulAnalogVideoStandard);
-void __RPC_STUB IBDA_AutoDemodulateEx_get_SupportedVideoFormats_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_AutoDemodulateEx_get_AuxInputCount_Proxy(
-    IBDA_AutoDemodulateEx* This,
-    ULONG *pulCompositeCount,
-    ULONG *pulSvideoCount);
-void __RPC_STUB IBDA_AutoDemodulateEx_get_AuxInputCount_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_AutoDemodulateEx_INTERFACE_DEFINED__ */
 
@@ -3350,118 +2621,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_ModulationType_Proxy(
-    IBDA_DigitalDemodulator* This,
-    ModulationType *pModulationType);
-void __RPC_STUB IBDA_DigitalDemodulator_put_ModulationType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_ModulationType_Proxy(
-    IBDA_DigitalDemodulator* This,
-    ModulationType *pModulationType);
-void __RPC_STUB IBDA_DigitalDemodulator_get_ModulationType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_InnerFECMethod_Proxy(
-    IBDA_DigitalDemodulator* This,
-    FECMethod *pFECMethod);
-void __RPC_STUB IBDA_DigitalDemodulator_put_InnerFECMethod_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_InnerFECMethod_Proxy(
-    IBDA_DigitalDemodulator* This,
-    FECMethod *pFECMethod);
-void __RPC_STUB IBDA_DigitalDemodulator_get_InnerFECMethod_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_InnerFECRate_Proxy(
-    IBDA_DigitalDemodulator* This,
-    BinaryConvolutionCodeRate *pFECRate);
-void __RPC_STUB IBDA_DigitalDemodulator_put_InnerFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_InnerFECRate_Proxy(
-    IBDA_DigitalDemodulator* This,
-    BinaryConvolutionCodeRate *pFECRate);
-void __RPC_STUB IBDA_DigitalDemodulator_get_InnerFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_OuterFECMethod_Proxy(
-    IBDA_DigitalDemodulator* This,
-    FECMethod *pFECMethod);
-void __RPC_STUB IBDA_DigitalDemodulator_put_OuterFECMethod_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_OuterFECMethod_Proxy(
-    IBDA_DigitalDemodulator* This,
-    FECMethod *pFECMethod);
-void __RPC_STUB IBDA_DigitalDemodulator_get_OuterFECMethod_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_OuterFECRate_Proxy(
-    IBDA_DigitalDemodulator* This,
-    BinaryConvolutionCodeRate *pFECRate);
-void __RPC_STUB IBDA_DigitalDemodulator_put_OuterFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_OuterFECRate_Proxy(
-    IBDA_DigitalDemodulator* This,
-    BinaryConvolutionCodeRate *pFECRate);
-void __RPC_STUB IBDA_DigitalDemodulator_get_OuterFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_SymbolRate_Proxy(
-    IBDA_DigitalDemodulator* This,
-    ULONG *pSymbolRate);
-void __RPC_STUB IBDA_DigitalDemodulator_put_SymbolRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_SymbolRate_Proxy(
-    IBDA_DigitalDemodulator* This,
-    ULONG *pSymbolRate);
-void __RPC_STUB IBDA_DigitalDemodulator_get_SymbolRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_put_SpectralInversion_Proxy(
-    IBDA_DigitalDemodulator* This,
-    SpectralInversion *pSpectralInversion);
-void __RPC_STUB IBDA_DigitalDemodulator_put_SpectralInversion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator_get_SpectralInversion_Proxy(
-    IBDA_DigitalDemodulator* This,
-    SpectralInversion *pSpectralInversion);
-void __RPC_STUB IBDA_DigitalDemodulator_get_SpectralInversion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DigitalDemodulator_INTERFACE_DEFINED__ */
 
@@ -3730,70 +2889,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_put_GuardInterval_Proxy(
-    IBDA_DigitalDemodulator2* This,
-    GuardInterval *pGuardInterval);
-void __RPC_STUB IBDA_DigitalDemodulator2_put_GuardInterval_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_get_GuardInterval_Proxy(
-    IBDA_DigitalDemodulator2* This,
-    GuardInterval *pGuardInterval);
-void __RPC_STUB IBDA_DigitalDemodulator2_get_GuardInterval_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_put_TransmissionMode_Proxy(
-    IBDA_DigitalDemodulator2* This,
-    TransmissionMode *pTransmissionMode);
-void __RPC_STUB IBDA_DigitalDemodulator2_put_TransmissionMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_get_TransmissionMode_Proxy(
-    IBDA_DigitalDemodulator2* This,
-    TransmissionMode *pTransmissionMode);
-void __RPC_STUB IBDA_DigitalDemodulator2_get_TransmissionMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_put_RollOff_Proxy(
-    IBDA_DigitalDemodulator2* This,
-    RollOff *pRollOff);
-void __RPC_STUB IBDA_DigitalDemodulator2_put_RollOff_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_get_RollOff_Proxy(
-    IBDA_DigitalDemodulator2* This,
-    RollOff *pRollOff);
-void __RPC_STUB IBDA_DigitalDemodulator2_get_RollOff_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_put_Pilot_Proxy(
-    IBDA_DigitalDemodulator2* This,
-    Pilot *pPilot);
-void __RPC_STUB IBDA_DigitalDemodulator2_put_Pilot_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator2_get_Pilot_Proxy(
-    IBDA_DigitalDemodulator2* This,
-    Pilot *pPilot);
-void __RPC_STUB IBDA_DigitalDemodulator2_get_Pilot_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DigitalDemodulator2_INTERFACE_DEFINED__ */
 
@@ -4085,38 +3180,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator3_put_SignalTimeouts_Proxy(
-    IBDA_DigitalDemodulator3* This,
-    BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);
-void __RPC_STUB IBDA_DigitalDemodulator3_put_SignalTimeouts_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator3_get_SignalTimeouts_Proxy(
-    IBDA_DigitalDemodulator3* This,
-    BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);
-void __RPC_STUB IBDA_DigitalDemodulator3_get_SignalTimeouts_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator3_put_PLPNumber_Proxy(
-    IBDA_DigitalDemodulator3* This,
-    ULONG *pPLPNumber);
-void __RPC_STUB IBDA_DigitalDemodulator3_put_PLPNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DigitalDemodulator3_get_PLPNumber_Proxy(
-    IBDA_DigitalDemodulator3* This,
-    ULONG *pPLPNumber);
-void __RPC_STUB IBDA_DigitalDemodulator3_get_PLPNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DigitalDemodulator3_INTERFACE_DEFINED__ */
 
@@ -4204,22 +3267,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ICCSubStreamFiltering_get_SubstreamTypes_Proxy(
-    ICCSubStreamFiltering* This,
-    LONG *pTypes);
-void __RPC_STUB ICCSubStreamFiltering_get_SubstreamTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICCSubStreamFiltering_put_SubstreamTypes_Proxy(
-    ICCSubStreamFiltering* This,
-    LONG Types);
-void __RPC_STUB ICCSubStreamFiltering_put_SubstreamTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ICCSubStreamFiltering_INTERFACE_DEFINED__ */
 
@@ -4311,24 +3358,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_IPSinkControl_GetMulticastList_Proxy(
-    IBDA_IPSinkControl* This,
-    ULONG *pulcbSize,
-    BYTE **pbBuffer);
-void __RPC_STUB IBDA_IPSinkControl_GetMulticastList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPSinkControl_GetAdapterIPAddress_Proxy(
-    IBDA_IPSinkControl* This,
-    ULONG *pulcbSize,
-    BYTE **pbBuffer);
-void __RPC_STUB IBDA_IPSinkControl_GetAdapterIPAddress_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_IPSinkControl_INTERFACE_DEFINED__ */
 
@@ -4429,31 +3458,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_IPSinkInfo_get_MulticastList_Proxy(
-    IBDA_IPSinkInfo* This,
-    ULONG *pulcbAddresses,
-    BYTE **ppbAddressList);
-void __RPC_STUB IBDA_IPSinkInfo_get_MulticastList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPSinkInfo_get_AdapterIPAddress_Proxy(
-    IBDA_IPSinkInfo* This,
-    BSTR *pbstrBuffer);
-void __RPC_STUB IBDA_IPSinkInfo_get_AdapterIPAddress_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_IPSinkInfo_get_AdapterDescription_Proxy(
-    IBDA_IPSinkInfo* This,
-    BSTR *pbstrBuffer);
-void __RPC_STUB IBDA_IPSinkInfo_get_AdapterDescription_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_IPSinkInfo_INTERFACE_DEFINED__ */
 
@@ -4566,39 +3570,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IEnumPIDMap_Next_Proxy(
-    IEnumPIDMap* This,
-    ULONG cRequest,
-    PID_MAP *pPIDMap,
-    ULONG *pcReceived);
-void __RPC_STUB IEnumPIDMap_Next_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumPIDMap_Skip_Proxy(
-    IEnumPIDMap* This,
-    ULONG cRecords);
-void __RPC_STUB IEnumPIDMap_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumPIDMap_Reset_Proxy(
-    IEnumPIDMap* This);
-void __RPC_STUB IEnumPIDMap_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumPIDMap_Clone_Proxy(
-    IEnumPIDMap* This,
-    IEnumPIDMap **ppIEnumPIDMap);
-void __RPC_STUB IEnumPIDMap_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IEnumPIDMap_INTERFACE_DEFINED__ */
 
@@ -4703,33 +3674,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMPEG2PIDMap_MapPID_Proxy(
-    IMPEG2PIDMap* This,
-    ULONG culPID,
-    ULONG *pulPID,
-    MEDIA_SAMPLE_CONTENT MediaSampleContent);
-void __RPC_STUB IMPEG2PIDMap_MapPID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2PIDMap_UnmapPID_Proxy(
-    IMPEG2PIDMap* This,
-    ULONG culPID,
-    ULONG *pulPID);
-void __RPC_STUB IMPEG2PIDMap_UnmapPID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2PIDMap_EnumPIDMap_Proxy(
-    IMPEG2PIDMap* This,
-    IEnumPIDMap **pIEnumPIDMap);
-void __RPC_STUB IMPEG2PIDMap_EnumPIDMap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMPEG2PIDMap_INTERFACE_DEFINED__ */
 
@@ -4871,59 +3815,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IFrequencyMap_get_FrequencyMapping_Proxy(
-    IFrequencyMap* This,
-    ULONG *ulCount,
-    ULONG **ppulList);
-void __RPC_STUB IFrequencyMap_get_FrequencyMapping_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IFrequencyMap_put_FrequencyMapping_Proxy(
-    IFrequencyMap* This,
-    ULONG ulCount,
-    ULONG pList[]);
-void __RPC_STUB IFrequencyMap_put_FrequencyMapping_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IFrequencyMap_get_CountryCode_Proxy(
-    IFrequencyMap* This,
-    ULONG *pulCountryCode);
-void __RPC_STUB IFrequencyMap_get_CountryCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IFrequencyMap_put_CountryCode_Proxy(
-    IFrequencyMap* This,
-    ULONG ulCountryCode);
-void __RPC_STUB IFrequencyMap_put_CountryCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IFrequencyMap_get_DefaultFrequencyMapping_Proxy(
-    IFrequencyMap* This,
-    ULONG ulCountryCode,
-    ULONG *pulCount,
-    ULONG **ppulList);
-void __RPC_STUB IFrequencyMap_get_DefaultFrequencyMapping_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IFrequencyMap_get_CountryCodeList_Proxy(
-    IFrequencyMap* This,
-    ULONG *pulCount,
-    ULONG **ppulList);
-void __RPC_STUB IFrequencyMap_get_CountryCodeList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IFrequencyMap_INTERFACE_DEFINED__ */
 
@@ -5002,15 +3893,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_EasMessage_get_EasMessage_Proxy(
-    IBDA_EasMessage* This,
-    ULONG ulEventID,
-    IUnknown **ppEASObject);
-void __RPC_STUB IBDA_EasMessage_get_EasMessage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_EasMessage_INTERFACE_DEFINED__ */
 
@@ -5087,14 +3969,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_TransportStreamInfo_get_PatTableTickCount_Proxy(
-    IBDA_TransportStreamInfo* This,
-    ULONG *pPatTickCount);
-void __RPC_STUB IBDA_TransportStreamInfo_get_PatTableTickCount_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_TransportStreamInfo_INTERFACE_DEFINED__ */
 
@@ -5298,100 +4172,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_get_SmartCardStatus_Proxy(
-    IBDA_ConditionalAccess* This,
-    SmartCardStatusType *pCardStatus,
-    SmartCardAssociationType *pCardAssociation,
-    BSTR *pbstrCardError,
-    VARIANT_BOOL *pfOOBLocked);
-void __RPC_STUB IBDA_ConditionalAccess_get_SmartCardStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_get_SmartCardInfo_Proxy(
-    IBDA_ConditionalAccess* This,
-    BSTR *pbstrCardName,
-    BSTR *pbstrCardManufacturer,
-    VARIANT_BOOL *pfDaylightSavings,
-    BYTE *pbyRatingRegion,
-    LONG *plTimeZoneOffsetMinutes,
-    BSTR *pbstrLanguage,
-    EALocationCodeType *pEALocationCode);
-void __RPC_STUB IBDA_ConditionalAccess_get_SmartCardInfo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_get_SmartCardApplications_Proxy(
-    IBDA_ConditionalAccess* This,
-    ULONG *pulcApplications,
-    ULONG ulcApplicationsMax,
-    SmartCardApplication rgApplications[]);
-void __RPC_STUB IBDA_ConditionalAccess_get_SmartCardApplications_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_get_Entitlement_Proxy(
-    IBDA_ConditionalAccess* This,
-    USHORT usVirtualChannel,
-    EntitlementType *pEntitlement);
-void __RPC_STUB IBDA_ConditionalAccess_get_Entitlement_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_TuneByChannel_Proxy(
-    IBDA_ConditionalAccess* This,
-    USHORT usVirtualChannel);
-void __RPC_STUB IBDA_ConditionalAccess_TuneByChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_SetProgram_Proxy(
-    IBDA_ConditionalAccess* This,
-    USHORT usProgramNumber);
-void __RPC_STUB IBDA_ConditionalAccess_SetProgram_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_AddProgram_Proxy(
-    IBDA_ConditionalAccess* This,
-    USHORT usProgramNumber);
-void __RPC_STUB IBDA_ConditionalAccess_AddProgram_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_RemoveProgram_Proxy(
-    IBDA_ConditionalAccess* This,
-    USHORT usProgramNumber);
-void __RPC_STUB IBDA_ConditionalAccess_RemoveProgram_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_GetModuleUI_Proxy(
-    IBDA_ConditionalAccess* This,
-    BYTE byDialogNumber,
-    BSTR *pbstrURL);
-void __RPC_STUB IBDA_ConditionalAccess_GetModuleUI_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccess_InformUIClosed_Proxy(
-    IBDA_ConditionalAccess* This,
-    BYTE byDialogNumber,
-    UICloseReasonType CloseReason);
-void __RPC_STUB IBDA_ConditionalAccess_InformUIClosed_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_ConditionalAccess_INTERFACE_DEFINED__ */
 
@@ -5565,23 +4345,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DRM_GetDRMPairingStatus_Proxy(
-    IBDA_DRM* This,
-    DWORD *pdwStatus,
-    HRESULT *phError);
-void __RPC_STUB IBDA_DRM_GetDRMPairingStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRM_PerformDRMPairing_Proxy(
-    IBDA_DRM* This,
-    WINBOOL fSync);
-void __RPC_STUB IBDA_DRM_PerformDRMPairing_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DRM_INTERFACE_DEFINED__ */
 
@@ -5694,37 +4457,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_NameValueService_GetValueNameByIndex_Proxy(
-    IBDA_NameValueService* This,
-    ULONG ulIndex,
-    BSTR *pbstrName);
-void __RPC_STUB IBDA_NameValueService_GetValueNameByIndex_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NameValueService_GetValue_Proxy(
-    IBDA_NameValueService* This,
-    BSTR bstrName,
-    BSTR bstrLanguage,
-    BSTR *pbstrValue);
-void __RPC_STUB IBDA_NameValueService_GetValue_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_NameValueService_SetValue_Proxy(
-    IBDA_NameValueService* This,
-    ULONG ulDialogRequest,
-    BSTR bstrLanguage,
-    BSTR bstrName,
-    BSTR bstrValue,
-    ULONG ulReserved);
-void __RPC_STUB IBDA_NameValueService_SetValue_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_NameValueService_INTERFACE_DEFINED__ */
 
@@ -5869,58 +4601,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_CheckEntitlementToken_Proxy(
-    IBDA_ConditionalAccessEx* This,
-    ULONG ulDialogRequest,
-    BSTR bstrLanguage,
-    BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,
-    ULONG ulcbEntitlementTokenLen,
-    BYTE *pbEntitlementToken,
-    ULONG *pulDescrambleStatus);
-void __RPC_STUB IBDA_ConditionalAccessEx_CheckEntitlementToken_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_SetCaptureToken_Proxy(
-    IBDA_ConditionalAccessEx* This,
-    ULONG ulcbCaptureTokenLen,
-    BYTE *pbCaptureToken);
-void __RPC_STUB IBDA_ConditionalAccessEx_SetCaptureToken_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_OpenBroadcastMmi_Proxy(
-    IBDA_ConditionalAccessEx* This,
-    ULONG ulDialogRequest,
-    BSTR bstrLanguage,
-    ULONG EventId);
-void __RPC_STUB IBDA_ConditionalAccessEx_OpenBroadcastMmi_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_CloseMmiDialog_Proxy(
-    IBDA_ConditionalAccessEx* This,
-    ULONG ulDialogRequest,
-    BSTR bstrLanguage,
-    ULONG ulDialogNumber,
-    BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,
-    ULONG *pulSessionResult);
-void __RPC_STUB IBDA_ConditionalAccessEx_CloseMmiDialog_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_ConditionalAccessEx_CreateDialogRequestNumber_Proxy(
-    IBDA_ConditionalAccessEx* This,
-    ULONG *pulDialogRequestNumber);
-void __RPC_STUB IBDA_ConditionalAccessEx_CreateDialogRequestNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_ConditionalAccessEx_INTERFACE_DEFINED__ */
 
@@ -6001,16 +4681,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_ISDBConditionalAccess_SetIsdbCasRequest_Proxy(
-    IBDA_ISDBConditionalAccess* This,
-    ULONG ulRequestId,
-    ULONG ulcbRequestBufferLen,
-    BYTE *pbRequestBuffer);
-void __RPC_STUB IBDA_ISDBConditionalAccess_SetIsdbCasRequest_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_ISDBConditionalAccess_INTERFACE_DEFINED__ */
 
@@ -6089,15 +4759,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_EventingService_CompleteEvent_Proxy(
-    IBDA_EventingService* This,
-    ULONG ulEventID,
-    ULONG ulEventResult);
-void __RPC_STUB IBDA_EventingService_CompleteEvent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_EventingService_INTERFACE_DEFINED__ */
 
@@ -6195,27 +4856,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_AUX_QueryCapabilities_Proxy(
-    IBDA_AUX* This,
-    DWORD *pdwNumAuxInputsBSTR);
-void __RPC_STUB IBDA_AUX_QueryCapabilities_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_AUX_EnumCapability_Proxy(
-    IBDA_AUX* This,
-    DWORD dwIndex,
-    DWORD *dwInputID,
-    GUID *pConnectorType,
-    DWORD *ConnTypeNum,
-    DWORD *NumVideoStds,
-    ULONGLONG *AnalogStds);
-void __RPC_STUB IBDA_AUX_EnumCapability_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_AUX_INTERFACE_DEFINED__ */
 
@@ -6410,83 +5050,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_Encoder_QueryCapabilities_Proxy(
-    IBDA_Encoder* This,
-    DWORD *NumAudioFmts,
-    DWORD *NumVideoFmts);
-void __RPC_STUB IBDA_Encoder_QueryCapabilities_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Encoder_EnumAudioCapability_Proxy(
-    IBDA_Encoder* This,
-    DWORD FmtIndex,
-    DWORD *MethodID,
-    DWORD *AlgorithmType,
-    DWORD *SamplingRate,
-    DWORD *BitDepth,
-    DWORD *NumChannels);
-void __RPC_STUB IBDA_Encoder_EnumAudioCapability_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Encoder_EnumVideoCapability_Proxy(
-    IBDA_Encoder* This,
-    DWORD FmtIndex,
-    DWORD *MethodID,
-    DWORD *AlgorithmType,
-    DWORD *VerticalSize,
-    DWORD *HorizontalSize,
-    DWORD *AspectRatio,
-    DWORD *FrameRateCode,
-    DWORD *ProgressiveSequence);
-void __RPC_STUB IBDA_Encoder_EnumVideoCapability_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Encoder_SetParameters_Proxy(
-    IBDA_Encoder* This,
-    DWORD AudioBitrateMode,
-    DWORD AudioBitrate,
-    DWORD AudioMethodID,
-    DWORD AudioProgram,
-    DWORD VideoBitrateMode,
-    DWORD VideoBitrate,
-    DWORD VideoMethodID);
-void __RPC_STUB IBDA_Encoder_SetParameters_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_Encoder_GetState_Proxy(
-    IBDA_Encoder* This,
-    DWORD *AudioBitrateMax,
-    DWORD *AudioBitrateMin,
-    DWORD *AudioBitrateMode,
-    DWORD *AudioBitrateStepping,
-    DWORD *AudioBitrate,
-    DWORD *AudioMethodID,
-    DWORD *AvailableAudioPrograms,
-    DWORD *AudioProgram,
-    DWORD *VideoBitrateMax,
-    DWORD *VideoBitrateMin,
-    DWORD *VideoBitrateMode,
-    DWORD *VideoBitrate,
-    DWORD *VideoBitrateStepping,
-    DWORD *VideoMethodID,
-    DWORD *SignalSourceID,
-    ULONGLONG *SignalFormat,
-    WINBOOL *SignalLock,
-    LONG *SignalLevel,
-    DWORD *SignalToNoiseRatio);
-void __RPC_STUB IBDA_Encoder_GetState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_Encoder_INTERFACE_DEFINED__ */
 
@@ -6651,73 +5214,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_FDC_GetStatus_Proxy(
-    IBDA_FDC* This,
-    DWORD *CurrentBitrate,
-    WINBOOL *CarrierLock,
-    DWORD *CurrentFrequency,
-    WINBOOL *CurrentSpectrumInversion,
-    BSTR *CurrentPIDList,
-    BSTR *CurrentTIDList,
-    WINBOOL *Overflow);
-void __RPC_STUB IBDA_FDC_GetStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FDC_RequestTables_Proxy(
-    IBDA_FDC* This,
-    BSTR TableIDs);
-void __RPC_STUB IBDA_FDC_RequestTables_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FDC_AddPid_Proxy(
-    IBDA_FDC* This,
-    BSTR PidsToAdd,
-    DWORD *RemainingFilterEntries);
-void __RPC_STUB IBDA_FDC_AddPid_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FDC_RemovePid_Proxy(
-    IBDA_FDC* This,
-    BSTR PidsToRemove);
-void __RPC_STUB IBDA_FDC_RemovePid_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FDC_AddTid_Proxy(
-    IBDA_FDC* This,
-    BSTR TidsToAdd,
-    BSTR *CurrentTidList);
-void __RPC_STUB IBDA_FDC_AddTid_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FDC_RemoveTid_Proxy(
-    IBDA_FDC* This,
-    BSTR TidsToRemove);
-void __RPC_STUB IBDA_FDC_RemoveTid_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_FDC_GetTableSection_Proxy(
-    IBDA_FDC* This,
-    DWORD *Pid,
-    DWORD MaxBufferSize,
-    DWORD *ActualSize,
-    BYTE *SecBuffer);
-void __RPC_STUB IBDA_FDC_GetTableSection_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_FDC_INTERFACE_DEFINED__ */
 
@@ -6858,58 +5354,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetGuideDataType_Proxy(
-    IBDA_GuideDataDeliveryService* This,
-    GUID *pguidDataType);
-void __RPC_STUB IBDA_GuideDataDeliveryService_GetGuideDataType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetGuideData_Proxy(
-    IBDA_GuideDataDeliveryService* This,
-    ULONG *pulcbBufferLen,
-    BYTE *pbBuffer,
-    ULONG *pulGuideDataPercentageProgress);
-void __RPC_STUB IBDA_GuideDataDeliveryService_GetGuideData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_RequestGuideDataUpdate_Proxy(
-    IBDA_GuideDataDeliveryService* This);
-void __RPC_STUB IBDA_GuideDataDeliveryService_RequestGuideDataUpdate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx_Proxy(
-    IBDA_GuideDataDeliveryService* This,
-    ULONG64 ul64ServiceIdx,
-    BSTR *pbstrTuneXml);
-void __RPC_STUB IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetServices_Proxy(
-    IBDA_GuideDataDeliveryService* This,
-    ULONG *pulcbBufferLen,
-    BYTE *pbBuffer);
-void __RPC_STUB IBDA_GuideDataDeliveryService_GetServices_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml_Proxy(
-    IBDA_GuideDataDeliveryService* This,
-    BSTR bstrTuneXml,
-    BSTR *pbstrServiceDescription);
-void __RPC_STUB IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_GuideDataDeliveryService_INTERFACE_DEFINED__ */
 
@@ -6999,23 +5443,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DRMService_SetDRM_Proxy(
-    IBDA_DRMService* This,
-    GUID *puuidNewDrm);
-void __RPC_STUB IBDA_DRMService_SetDRM_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRMService_GetDRMStatus_Proxy(
-    IBDA_DRMService* This,
-    BSTR *pbstrDrmUuidList,
-    GUID *DrmUuid);
-void __RPC_STUB IBDA_DRMService_GetDRMStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DRMService_INTERFACE_DEFINED__ */
 
@@ -7213,92 +5640,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_GetStatus_Proxy(
-    IBDA_WMDRMSession* This,
-    ULONG *MaxCaptureToken,
-    ULONG *MaxStreamingPid,
-    ULONG *MaxLicense,
-    ULONG *MinSecurityLevel,
-    ULONG *RevInfoSequenceNumber,
-    ULONGLONG *RevInfoIssuedTime,
-    ULONG *RevInfoTTL,
-    ULONG *RevListVersion,
-    ULONG *ulState);
-void __RPC_STUB IBDA_WMDRMSession_GetStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_SetRevInfo_Proxy(
-    IBDA_WMDRMSession* This,
-    ULONG ulRevInfoLen,
-    BYTE *pbRevInfo);
-void __RPC_STUB IBDA_WMDRMSession_SetRevInfo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_SetCrl_Proxy(
-    IBDA_WMDRMSession* This,
-    ULONG ulCrlLen,
-    BYTE *pbCrlLen);
-void __RPC_STUB IBDA_WMDRMSession_SetCrl_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_TransactMessage_Proxy(
-    IBDA_WMDRMSession* This,
-    ULONG ulcbRequest,
-    BYTE *pbRequest,
-    ULONG *pulcbResponse,
-    BYTE *pbResponse);
-void __RPC_STUB IBDA_WMDRMSession_TransactMessage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_GetLicense_Proxy(
-    IBDA_WMDRMSession* This,
-    GUID *uuidKey,
-    ULONG *pulPackageLen,
-    BYTE *pbPackage);
-void __RPC_STUB IBDA_WMDRMSession_GetLicense_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_ReissueLicense_Proxy(
-    IBDA_WMDRMSession* This,
-    GUID *uuidKey);
-void __RPC_STUB IBDA_WMDRMSession_ReissueLicense_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_RenewLicense_Proxy(
-    IBDA_WMDRMSession* This,
-    ULONG ulInXmrLicenseLen,
-    BYTE *pbInXmrLicense,
-    ULONG ulEntitlementTokenLen,
-    BYTE *pbEntitlementToken,
-    ULONG *pulDescrambleStatus,
-    ULONG *pulOutXmrLicenseLen,
-    BYTE *pbOutXmrLicense);
-void __RPC_STUB IBDA_WMDRMSession_RenewLicense_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMSession_GetKeyInfo_Proxy(
-    IBDA_WMDRMSession* This,
-    ULONG *pulKeyInfoLen,
-    BYTE *pbKeyInfo);
-void __RPC_STUB IBDA_WMDRMSession_GetKeyInfo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_WMDRMSession_INTERFACE_DEFINED__ */
 
@@ -7450,64 +5791,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_PurchaseEntitlement_Proxy(
-    IBDA_WMDRMTuner* This,
-    ULONG ulDialogRequest,
-    BSTR bstrLanguage,
-    ULONG ulPurchaseTokenLen,
-    BYTE *pbPurchaseToken,
-    ULONG *pulDescrambleStatus,
-    ULONG *pulCaptureTokenLen,
-    BYTE *pbCaptureToken);
-void __RPC_STUB IBDA_WMDRMTuner_PurchaseEntitlement_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_CancelCaptureToken_Proxy(
-    IBDA_WMDRMTuner* This,
-    ULONG ulCaptureTokenLen,
-    BYTE *pbCaptureToken);
-void __RPC_STUB IBDA_WMDRMTuner_CancelCaptureToken_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_SetPidProtection_Proxy(
-    IBDA_WMDRMTuner* This,
-    ULONG ulPid,
-    GUID *uuidKey);
-void __RPC_STUB IBDA_WMDRMTuner_SetPidProtection_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_GetPidProtection_Proxy(
-    IBDA_WMDRMTuner* This,
-    ULONG pulPid,
-    GUID *uuidKey);
-void __RPC_STUB IBDA_WMDRMTuner_GetPidProtection_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_SetSyncValue_Proxy(
-    IBDA_WMDRMTuner* This,
-    ULONG ulSyncValue);
-void __RPC_STUB IBDA_WMDRMTuner_SetSyncValue_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_WMDRMTuner_GetStartCodeProfile_Proxy(
-    IBDA_WMDRMTuner* This,
-    ULONG *pulStartCodeProfileLen,
-    BYTE *pbStartCodeProfile);
-void __RPC_STUB IBDA_WMDRMTuner_GetStartCodeProfile_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_WMDRMTuner_INTERFACE_DEFINED__ */
 
@@ -7608,31 +5891,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DRIDRMService_SetDRM_Proxy(
-    IBDA_DRIDRMService* This,
-    BSTR bstrNewDrm);
-void __RPC_STUB IBDA_DRIDRMService_SetDRM_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRIDRMService_GetDRMStatus_Proxy(
-    IBDA_DRIDRMService* This,
-    BSTR *pbstrDrmUuidList,
-    GUID *DrmUuid);
-void __RPC_STUB IBDA_DRIDRMService_GetDRMStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRIDRMService_GetPairingStatus_Proxy(
-    IBDA_DRIDRMService* This,
-    BDA_DrmPairingError *penumPairingStatus);
-void __RPC_STUB IBDA_DRIDRMService_GetPairingStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DRIDRMService_INTERFACE_DEFINED__ */
 
@@ -7794,71 +6052,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_AcknowledgeLicense_Proxy(
-    IBDA_DRIWMDRMSession* This,
-    HRESULT hrLicenseAck);
-void __RPC_STUB IBDA_DRIWMDRMSession_AcknowledgeLicense_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_ProcessLicenseChallenge_Proxy(
-    IBDA_DRIWMDRMSession* This,
-    DWORD dwcbLicenseMessage,
-    BYTE *pbLicenseMessage,
-    DWORD *pdwcbLicenseResponse,
-    BYTE **ppbLicenseResponse);
-void __RPC_STUB IBDA_DRIWMDRMSession_ProcessLicenseChallenge_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_ProcessRegistrationChallenge_Proxy(
-    IBDA_DRIWMDRMSession* This,
-    DWORD dwcbRegistrationMessage,
-    BYTE *pbRegistrationMessage,
-    DWORD *pdwcbRegistrationResponse,
-    BYTE **ppbRegistrationResponse);
-void __RPC_STUB IBDA_DRIWMDRMSession_ProcessRegistrationChallenge_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_SetRevInfo_Proxy(
-    IBDA_DRIWMDRMSession* This,
-    DWORD dwRevInfoLen,
-    BYTE *pbRevInfo,
-    DWORD *pdwResponse);
-void __RPC_STUB IBDA_DRIWMDRMSession_SetRevInfo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_SetCrl_Proxy(
-    IBDA_DRIWMDRMSession* This,
-    DWORD dwCrlLen,
-    BYTE *pbCrlLen,
-    DWORD *pdwResponse);
-void __RPC_STUB IBDA_DRIWMDRMSession_SetCrl_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_GetHMSAssociationData_Proxy(
-    IBDA_DRIWMDRMSession* This);
-void __RPC_STUB IBDA_DRIWMDRMSession_GetHMSAssociationData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_DRIWMDRMSession_GetLastCardeaError_Proxy(
-    IBDA_DRIWMDRMSession* This,
-    DWORD *pdwError);
-void __RPC_STUB IBDA_DRIWMDRMSession_GetLastCardeaError_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_DRIWMDRMSession_INTERFACE_DEFINED__ */
 
@@ -7950,24 +6143,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_MUX_SetPidList_Proxy(
-    IBDA_MUX* This,
-    ULONG ulPidListCount,
-    BDA_MUX_PIDLISTITEM *pbPidListBuffer);
-void __RPC_STUB IBDA_MUX_SetPidList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_MUX_GetPidList_Proxy(
-    IBDA_MUX* This,
-    ULONG *pulPidListCount,
-    BDA_MUX_PIDLISTITEM *pbPidListBuffer);
-void __RPC_STUB IBDA_MUX_GetPidList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_MUX_INTERFACE_DEFINED__ */
 
@@ -8057,23 +6232,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_TransportStreamSelector_SetTSID_Proxy(
-    IBDA_TransportStreamSelector* This,
-    USHORT usTSID);
-void __RPC_STUB IBDA_TransportStreamSelector_SetTSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_TransportStreamSelector_GetTSInformation_Proxy(
-    IBDA_TransportStreamSelector* This,
-    ULONG *pulTSInformationBufferLen,
-    BYTE *pbTSInformationBuffer);
-void __RPC_STUB IBDA_TransportStreamSelector_GetTSInformation_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_TransportStreamSelector_INTERFACE_DEFINED__ */
 
@@ -8171,29 +6329,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDA_UserActivityService_SetCurrentTunerUseReason_Proxy(
-    IBDA_UserActivityService* This,
-    DWORD dwUseReason);
-void __RPC_STUB IBDA_UserActivityService_SetCurrentTunerUseReason_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_UserActivityService_GetUserActivityInterval_Proxy(
-    IBDA_UserActivityService* This,
-    DWORD *pdwActivityInterval);
-void __RPC_STUB IBDA_UserActivityService_GetUserActivityInterval_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDA_UserActivityService_UserActivityDetected_Proxy(
-    IBDA_UserActivityService* This);
-void __RPC_STUB IBDA_UserActivityService_UserActivityDetected_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDA_UserActivityService_INTERFACE_DEFINED__ */
 
diff --git a/mingw-w64-headers/include/objidl.h b/mingw-w64-headers/include/objidl.h
index 3d348b4..0c5e920 100644
--- a/mingw-w64-headers/include/objidl.h
+++ b/mingw-w64-headers/include/objidl.h
@@ -729,71 +729,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(
-    IMarshal* This,
-    REFIID riid,
-    void *pv,
-    DWORD dwDestContext,
-    void *pvDestContext,
-    DWORD mshlflags,
-    CLSID *pCid);
-void __RPC_STUB IMarshal_GetUnmarshalClass_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(
-    IMarshal* This,
-    REFIID riid,
-    void *pv,
-    DWORD dwDestContext,
-    void *pvDestContext,
-    DWORD mshlflags,
-    DWORD *pSize);
-void __RPC_STUB IMarshal_GetMarshalSizeMax_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(
-    IMarshal* This,
-    IStream *pStm,
-    REFIID riid,
-    void *pv,
-    DWORD dwDestContext,
-    void *pvDestContext,
-    DWORD mshlflags);
-void __RPC_STUB IMarshal_MarshalInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(
-    IMarshal* This,
-    IStream *pStm,
-    REFIID riid,
-    void **ppv);
-void __RPC_STUB IMarshal_UnmarshalInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(
-    IMarshal* This,
-    IStream *pStm);
-void __RPC_STUB IMarshal_ReleaseMarshalData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(
-    IMarshal* This,
-    DWORD dwReserved);
-void __RPC_STUB IMarshal_DisconnectObject_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMarshal_INTERFACE_DEFINED__ */
 
@@ -1189,54 +1124,6 @@
 
 #endif
 
-void * STDMETHODCALLTYPE IMalloc_Alloc_Proxy(
-    IMalloc* This,
-    SIZE_T cb);
-void __RPC_STUB IMalloc_Alloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void * STDMETHODCALLTYPE IMalloc_Realloc_Proxy(
-    IMalloc* This,
-    void *pv,
-    SIZE_T cb);
-void __RPC_STUB IMalloc_Realloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IMalloc_Free_Proxy(
-    IMalloc* This,
-    void *pv);
-void __RPC_STUB IMalloc_Free_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-SIZE_T STDMETHODCALLTYPE IMalloc_GetSize_Proxy(
-    IMalloc* This,
-    void *pv);
-void __RPC_STUB IMalloc_GetSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(
-    IMalloc* This,
-    void *pv);
-void __RPC_STUB IMalloc_DidAlloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(
-    IMalloc* This);
-void __RPC_STUB IMalloc_HeapMinimize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMalloc_INTERFACE_DEFINED__ */
 
@@ -1320,16 +1207,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(
-    IStdMarshalInfo* This,
-    DWORD dwDestContext,
-    void *pvDestContext,
-    CLSID *pClsid);
-void __RPC_STUB IStdMarshalInfo_GetClassForHandler_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IStdMarshalInfo_INTERFACE_DEFINED__ */
 
@@ -1432,25 +1309,6 @@
 
 #endif
 
-DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(
-    IExternalConnection* This,
-    DWORD extconn,
-    DWORD reserved);
-void __RPC_STUB IExternalConnection_AddConnection_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(
-    IExternalConnection* This,
-    DWORD extconn,
-    DWORD reserved,
-    WINBOOL fLastReleaseCloses);
-void __RPC_STUB IExternalConnection_ReleaseConnection_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IExternalConnection_INTERFACE_DEFINED__ */
 
@@ -1540,15 +1398,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMultiQI_QueryMultipleInterfaces_Proxy(
-    IMultiQI* This,
-    ULONG cMQIs,
-    MULTI_QI *pMQIs);
-void __RPC_STUB IMultiQI_QueryMultipleInterfaces_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMultiQI_INTERFACE_DEFINED__ */
 
@@ -1638,24 +1487,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE AsyncIMultiQI_Begin_QueryMultipleInterfaces_Proxy(
-    IMultiQI* This,
-    ULONG cMQIs,
-    MULTI_QI *pMQIs);
-void __RPC_STUB AsyncIMultiQI_Begin_QueryMultipleInterfaces_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIMultiQI_Finish_QueryMultipleInterfaces_Proxy(
-    IMultiQI* This,
-    ULONG cMQIs,
-    MULTI_QI *pMQIs);
-void __RPC_STUB AsyncIMultiQI_Finish_QueryMultipleInterfaces_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __AsyncIMultiQI_INTERFACE_DEFINED__ */
 
@@ -1737,15 +1568,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IInternalUnknown_QueryInternalInterface_Proxy(
-    IInternalUnknown* This,
-    REFIID riid,
-    void **ppv);
-void __RPC_STUB IInternalUnknown_QueryInternalInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IInternalUnknown_INTERFACE_DEFINED__ */
 
@@ -1873,29 +1695,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(
-    IEnumUnknown* This,
-    ULONG celt);
-void __RPC_STUB IEnumUnknown_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(
-    IEnumUnknown* This);
-void __RPC_STUB IEnumUnknown_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(
-    IEnumUnknown* This,
-    IEnumUnknown **ppenum);
-void __RPC_STUB IEnumUnknown_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IEnumUnknown_Next_Proxy(
     IEnumUnknown* This,
     ULONG celt,
@@ -2031,29 +1830,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(
-    IEnumString* This,
-    ULONG celt);
-void __RPC_STUB IEnumString_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(
-    IEnumString* This);
-void __RPC_STUB IEnumString_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(
-    IEnumString* This,
-    IEnumString **ppenum);
-void __RPC_STUB IEnumString_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IEnumString_Next_Proxy(
     IEnumString* This,
     ULONG celt,
@@ -2452,14 +2228,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(
-    IStream* This,
-    ULARGE_INTEGER libNewSize);
-void __RPC_STUB IStream_SetSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(
     IStream* This,
     IStream *pstm,
@@ -2471,58 +2239,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(
-    IStream* This,
-    DWORD grfCommitFlags);
-void __RPC_STUB IStream_Commit_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(
-    IStream* This);
-void __RPC_STUB IStream_Revert_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(
-    IStream* This,
-    ULARGE_INTEGER libOffset,
-    ULARGE_INTEGER cb,
-    DWORD dwLockType);
-void __RPC_STUB IStream_LockRegion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(
-    IStream* This,
-    ULARGE_INTEGER libOffset,
-    ULARGE_INTEGER cb,
-    DWORD dwLockType);
-void __RPC_STUB IStream_UnlockRegion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(
-    IStream* This,
-    STATSTG *pstatstg,
-    DWORD grfStatFlag);
-void __RPC_STUB IStream_Stat_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(
-    IStream* This,
-    IStream **ppstm);
-void __RPC_STUB IStream_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IStream_Seek_Proxy(
     IStream* This,
     LARGE_INTEGER dlibMove,
@@ -2685,48 +2401,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(
-    IRpcChannelBuffer* This,
-    RPCOLEMESSAGE *pMessage,
-    REFIID riid);
-void __RPC_STUB IRpcChannelBuffer_GetBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(
-    IRpcChannelBuffer* This,
-    RPCOLEMESSAGE *pMessage,
-    ULONG *pStatus);
-void __RPC_STUB IRpcChannelBuffer_SendReceive_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(
-    IRpcChannelBuffer* This,
-    RPCOLEMESSAGE *pMessage);
-void __RPC_STUB IRpcChannelBuffer_FreeBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(
-    IRpcChannelBuffer* This,
-    DWORD *pdwDestContext,
-    void **ppvDestContext);
-void __RPC_STUB IRpcChannelBuffer_GetDestCtx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(
-    IRpcChannelBuffer* This);
-void __RPC_STUB IRpcChannelBuffer_IsConnected_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRpcChannelBuffer_INTERFACE_DEFINED__ */
 
@@ -2851,14 +2525,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer2_GetProtocolVersion_Proxy(
-    IRpcChannelBuffer2* This,
-    DWORD *pdwVersion);
-void __RPC_STUB IRpcChannelBuffer2_GetProtocolVersion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRpcChannelBuffer2_INTERFACE_DEFINED__ */
 
@@ -3024,35 +2690,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAsyncRpcChannelBuffer_Send_Proxy(
-    IAsyncRpcChannelBuffer* This,
-    RPCOLEMESSAGE *pMsg,
-    ISynchronize *pSync,
-    ULONG *pulStatus);
-void __RPC_STUB IAsyncRpcChannelBuffer_Send_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAsyncRpcChannelBuffer_Receive_Proxy(
-    IAsyncRpcChannelBuffer* This,
-    RPCOLEMESSAGE *pMsg,
-    ULONG *pulStatus);
-void __RPC_STUB IAsyncRpcChannelBuffer_Receive_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAsyncRpcChannelBuffer_GetDestCtxEx_Proxy(
-    IAsyncRpcChannelBuffer* This,
-    RPCOLEMESSAGE *pMsg,
-    DWORD *pdwDestContext,
-    void **ppvDestContext);
-void __RPC_STUB IAsyncRpcChannelBuffer_GetDestCtxEx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAsyncRpcChannelBuffer_INTERFACE_DEFINED__ */
 
@@ -3270,71 +2907,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_Send_Proxy(
-    IRpcChannelBuffer3* This,
-    RPCOLEMESSAGE *pMsg,
-    ULONG *pulStatus);
-void __RPC_STUB IRpcChannelBuffer3_Send_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_Receive_Proxy(
-    IRpcChannelBuffer3* This,
-    RPCOLEMESSAGE *pMsg,
-    ULONG ulSize,
-    ULONG *pulStatus);
-void __RPC_STUB IRpcChannelBuffer3_Receive_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_Cancel_Proxy(
-    IRpcChannelBuffer3* This,
-    RPCOLEMESSAGE *pMsg);
-void __RPC_STUB IRpcChannelBuffer3_Cancel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_GetCallContext_Proxy(
-    IRpcChannelBuffer3* This,
-    RPCOLEMESSAGE *pMsg,
-    REFIID riid,
-    void **pInterface);
-void __RPC_STUB IRpcChannelBuffer3_GetCallContext_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_GetDestCtxEx_Proxy(
-    IRpcChannelBuffer3* This,
-    RPCOLEMESSAGE *pMsg,
-    DWORD *pdwDestContext,
-    void **ppvDestContext);
-void __RPC_STUB IRpcChannelBuffer3_GetDestCtxEx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_GetState_Proxy(
-    IRpcChannelBuffer3* This,
-    RPCOLEMESSAGE *pMsg,
-    DWORD *pState);
-void __RPC_STUB IRpcChannelBuffer3_GetState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcChannelBuffer3_RegisterAsync_Proxy(
-    IRpcChannelBuffer3* This,
-    RPCOLEMESSAGE *pMsg,
-    IAsyncManager *pAsyncMgr);
-void __RPC_STUB IRpcChannelBuffer3_RegisterAsync_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRpcChannelBuffer3_INTERFACE_DEFINED__ */
 
@@ -3412,14 +2984,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRpcSyntaxNegotiate_NegotiateSyntax_Proxy(
-    IRpcSyntaxNegotiate* This,
-    RPCOLEMESSAGE *pMsg);
-void __RPC_STUB IRpcSyntaxNegotiate_NegotiateSyntax_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRpcSyntaxNegotiate_INTERFACE_DEFINED__ */
 
@@ -3507,21 +3071,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(
-    IRpcProxyBuffer* This,
-    IRpcChannelBuffer *pRpcChannelBuffer);
-void __RPC_STUB IRpcProxyBuffer_Connect_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(
-    IRpcProxyBuffer* This);
-void __RPC_STUB IRpcProxyBuffer_Disconnect_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRpcProxyBuffer_INTERFACE_DEFINED__ */
 
@@ -3667,61 +3216,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(
-    IRpcStubBuffer* This,
-    IUnknown *pUnkServer);
-void __RPC_STUB IRpcStubBuffer_Connect_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(
-    IRpcStubBuffer* This);
-void __RPC_STUB IRpcStubBuffer_Disconnect_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(
-    IRpcStubBuffer* This,
-    RPCOLEMESSAGE *_prpcmsg,
-    IRpcChannelBuffer *_pRpcChannelBuffer);
-void __RPC_STUB IRpcStubBuffer_Invoke_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-IRpcStubBuffer * STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(
-    IRpcStubBuffer* This,
-    REFIID riid);
-void __RPC_STUB IRpcStubBuffer_IsIIDSupported_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(
-    IRpcStubBuffer* This);
-void __RPC_STUB IRpcStubBuffer_CountRefs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(
-    IRpcStubBuffer* This,
-    void **ppv);
-void __RPC_STUB IRpcStubBuffer_DebugServerQueryInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(
-    IRpcStubBuffer* This,
-    void *pv);
-void __RPC_STUB IRpcStubBuffer_DebugServerRelease_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRpcStubBuffer_INTERFACE_DEFINED__ */
 
@@ -3820,27 +3314,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(
-    IPSFactoryBuffer* This,
-    IUnknown *pUnkOuter,
-    REFIID riid,
-    IRpcProxyBuffer **ppProxy,
-    void **ppv);
-void __RPC_STUB IPSFactoryBuffer_CreateProxy_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(
-    IPSFactoryBuffer* This,
-    REFIID riid,
-    IUnknown *pUnkServer,
-    IRpcStubBuffer **ppStub);
-void __RPC_STUB IPSFactoryBuffer_CreateStub_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPSFactoryBuffer_INTERFACE_DEFINED__ */
 
@@ -4027,75 +3500,6 @@
 
 #endif
 
-void STDMETHODCALLTYPE IChannelHook_ClientGetSize_Proxy(
-    IChannelHook* This,
-    REFGUID uExtent,
-    REFIID riid,
-    ULONG *pDataSize);
-void __RPC_STUB IChannelHook_ClientGetSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IChannelHook_ClientFillBuffer_Proxy(
-    IChannelHook* This,
-    REFGUID uExtent,
-    REFIID riid,
-    ULONG *pDataSize,
-    void *pDataBuffer);
-void __RPC_STUB IChannelHook_ClientFillBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IChannelHook_ClientNotify_Proxy(
-    IChannelHook* This,
-    REFGUID uExtent,
-    REFIID riid,
-    ULONG cbDataSize,
-    void *pDataBuffer,
-    DWORD lDataRep,
-    HRESULT hrFault);
-void __RPC_STUB IChannelHook_ClientNotify_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IChannelHook_ServerNotify_Proxy(
-    IChannelHook* This,
-    REFGUID uExtent,
-    REFIID riid,
-    ULONG cbDataSize,
-    void *pDataBuffer,
-    DWORD lDataRep);
-void __RPC_STUB IChannelHook_ServerNotify_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IChannelHook_ServerGetSize_Proxy(
-    IChannelHook* This,
-    REFGUID uExtent,
-    REFIID riid,
-    HRESULT hrFault,
-    ULONG *pDataSize);
-void __RPC_STUB IChannelHook_ServerGetSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IChannelHook_ServerFillBuffer_Proxy(
-    IChannelHook* This,
-    REFGUID uExtent,
-    REFIID riid,
-    ULONG *pDataSize,
-    void *pDataBuffer,
-    HRESULT hrFault);
-void __RPC_STUB IChannelHook_ServerFillBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IChannelHook_INTERFACE_DEFINED__ */
 
@@ -4274,45 +3678,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IClientSecurity_QueryBlanket_Proxy(
-    IClientSecurity* This,
-    IUnknown *pProxy,
-    DWORD *pAuthnSvc,
-    DWORD *pAuthzSvc,
-    OLECHAR **pServerPrincName,
-    DWORD *pAuthnLevel,
-    DWORD *pImpLevel,
-    void **pAuthInfo,
-    DWORD *pCapabilites);
-void __RPC_STUB IClientSecurity_QueryBlanket_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IClientSecurity_SetBlanket_Proxy(
-    IClientSecurity* This,
-    IUnknown *pProxy,
-    DWORD dwAuthnSvc,
-    DWORD dwAuthzSvc,
-    OLECHAR *pServerPrincName,
-    DWORD dwAuthnLevel,
-    DWORD dwImpLevel,
-    void *pAuthInfo,
-    DWORD dwCapabilities);
-void __RPC_STUB IClientSecurity_SetBlanket_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IClientSecurity_CopyProxy_Proxy(
-    IClientSecurity* This,
-    IUnknown *pProxy,
-    IUnknown **ppCopy);
-void __RPC_STUB IClientSecurity_CopyProxy_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IClientSecurity_INTERFACE_DEFINED__ */
 
@@ -4434,41 +3799,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IServerSecurity_QueryBlanket_Proxy(
-    IServerSecurity* This,
-    DWORD *pAuthnSvc,
-    DWORD *pAuthzSvc,
-    OLECHAR **pServerPrincName,
-    DWORD *pAuthnLevel,
-    DWORD *pImpLevel,
-    void **pPrivs,
-    DWORD *pCapabilities);
-void __RPC_STUB IServerSecurity_QueryBlanket_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IServerSecurity_ImpersonateClient_Proxy(
-    IServerSecurity* This);
-void __RPC_STUB IServerSecurity_ImpersonateClient_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IServerSecurity_RevertToSelf_Proxy(
-    IServerSecurity* This);
-void __RPC_STUB IServerSecurity_RevertToSelf_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-WINBOOL STDMETHODCALLTYPE IServerSecurity_IsImpersonating_Proxy(
-    IServerSecurity* This);
-void __RPC_STUB IServerSecurity_IsImpersonating_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IServerSecurity_INTERFACE_DEFINED__ */
 
@@ -4577,26 +3907,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRpcOptions_Set_Proxy(
-    IRpcOptions* This,
-    IUnknown *pPrx,
-    RPCOPT_PROPERTIES dwProperty,
-    ULONG_PTR dwValue);
-void __RPC_STUB IRpcOptions_Set_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcOptions_Query_Proxy(
-    IRpcOptions* This,
-    IUnknown *pPrx,
-    RPCOPT_PROPERTIES dwProperty,
-    ULONG_PTR *pdwValue);
-void __RPC_STUB IRpcOptions_Query_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRpcOptions_INTERFACE_DEFINED__ */
 
@@ -4728,24 +4038,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IGlobalOptions_Set_Proxy(
-    IGlobalOptions* This,
-    GLOBALOPT_PROPERTIES dwProperty,
-    ULONG_PTR dwValue);
-void __RPC_STUB IGlobalOptions_Set_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IGlobalOptions_Query_Proxy(
-    IGlobalOptions* This,
-    GLOBALOPT_PROPERTIES dwProperty,
-    ULONG_PTR *pdwValue);
-void __RPC_STUB IGlobalOptions_Query_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IGlobalOptions_INTERFACE_DEFINED__ */
 
@@ -4838,21 +4130,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ISurrogate_LoadDllServer_Proxy(
-    ISurrogate* This,
-    REFCLSID Clsid);
-void __RPC_STUB ISurrogate_LoadDllServer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ISurrogate_FreeSurrogate_Proxy(
-    ISurrogate* This);
-void __RPC_STUB ISurrogate_FreeSurrogate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ISurrogate_INTERFACE_DEFINED__ */
 
@@ -4962,34 +4239,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IGlobalInterfaceTable_RegisterInterfaceInGlobal_Proxy(
-    IGlobalInterfaceTable* This,
-    IUnknown *pUnk,
-    REFIID riid,
-    DWORD *pdwCookie);
-void __RPC_STUB IGlobalInterfaceTable_RegisterInterfaceInGlobal_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Proxy(
-    IGlobalInterfaceTable* This,
-    DWORD dwCookie);
-void __RPC_STUB IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IGlobalInterfaceTable_GetInterfaceFromGlobal_Proxy(
-    IGlobalInterfaceTable* This,
-    DWORD dwCookie,
-    REFIID riid,
-    void **ppv);
-void __RPC_STUB IGlobalInterfaceTable_GetInterfaceFromGlobal_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IGlobalInterfaceTable_INTERFACE_DEFINED__ */
 
@@ -5091,29 +4340,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ISynchronize_Wait_Proxy(
-    ISynchronize* This,
-    DWORD dwFlags,
-    DWORD dwMilliseconds);
-void __RPC_STUB ISynchronize_Wait_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ISynchronize_Signal_Proxy(
-    ISynchronize* This);
-void __RPC_STUB ISynchronize_Signal_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ISynchronize_Reset_Proxy(
-    ISynchronize* This);
-void __RPC_STUB ISynchronize_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ISynchronize_INTERFACE_DEFINED__ */
 
@@ -5191,14 +4417,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ISynchronizeHandle_GetHandle_Proxy(
-    ISynchronizeHandle* This,
-    HANDLE *ph);
-void __RPC_STUB ISynchronizeHandle_GetHandle_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ISynchronizeHandle_INTERFACE_DEFINED__ */
 
@@ -5287,14 +4505,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ISynchronizeEvent_SetEventHandle_Proxy(
-    ISynchronizeEvent* This,
-    HANDLE *ph);
-void __RPC_STUB ISynchronizeEvent_SetEventHandle_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ISynchronizeEvent_INTERFACE_DEFINED__ */
 
@@ -5387,24 +4597,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ISynchronizeContainer_AddSynchronize_Proxy(
-    ISynchronizeContainer* This,
-    ISynchronize *pSync);
-void __RPC_STUB ISynchronizeContainer_AddSynchronize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ISynchronizeContainer_WaitMultiple_Proxy(
-    ISynchronizeContainer* This,
-    DWORD dwFlags,
-    DWORD dwTimeOut,
-    ISynchronize **ppSync);
-void __RPC_STUB ISynchronizeContainer_WaitMultiple_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ISynchronizeContainer_INTERFACE_DEFINED__ */
 
@@ -5507,13 +4699,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ISynchronizeMutex_ReleaseMutex_Proxy(
-    ISynchronizeMutex* This);
-void __RPC_STUB ISynchronizeMutex_ReleaseMutex_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ISynchronizeMutex_INTERFACE_DEFINED__ */
 
@@ -5603,21 +4788,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ICancelMethodCalls_Cancel_Proxy(
-    ICancelMethodCalls* This,
-    ULONG ulSeconds);
-void __RPC_STUB ICancelMethodCalls_Cancel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICancelMethodCalls_TestCancel_Proxy(
-    ICancelMethodCalls* This);
-void __RPC_STUB ICancelMethodCalls_TestCancel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ICancelMethodCalls_INTERFACE_DEFINED__ */
 
@@ -5725,31 +4895,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAsyncManager_CompleteCall_Proxy(
-    IAsyncManager* This,
-    HRESULT Result);
-void __RPC_STUB IAsyncManager_CompleteCall_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAsyncManager_GetCallContext_Proxy(
-    IAsyncManager* This,
-    REFIID riid,
-    void **pInterface);
-void __RPC_STUB IAsyncManager_GetCallContext_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAsyncManager_GetState_Proxy(
-    IAsyncManager* This,
-    ULONG *pulStateFlags);
-void __RPC_STUB IAsyncManager_GetState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAsyncManager_INTERFACE_DEFINED__ */
 
@@ -5833,17 +4978,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ICallFactory_CreateCall_Proxy(
-    ICallFactory* This,
-    REFIID riid,
-    IUnknown *pCtrlUnk,
-    REFIID riid2,
-    IUnknown **ppv);
-void __RPC_STUB ICallFactory_CreateCall_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ICallFactory_INTERFACE_DEFINED__ */
 
@@ -5934,23 +5068,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRpcHelper_GetDCOMProtocolVersion_Proxy(
-    IRpcHelper* This,
-    DWORD *pComVersion);
-void __RPC_STUB IRpcHelper_GetDCOMProtocolVersion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRpcHelper_GetIIDFromOBJREF_Proxy(
-    IRpcHelper* This,
-    void *pObjRef,
-    IID **piid);
-void __RPC_STUB IRpcHelper_GetIIDFromOBJREF_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRpcHelper_INTERFACE_DEFINED__ */
 
@@ -6032,16 +5149,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IReleaseMarshalBuffers_ReleaseMarshalBuffer_Proxy(
-    IReleaseMarshalBuffers* This,
-    RPCOLEMESSAGE *pMsg,
-    DWORD dwFlags,
-    IUnknown *pChnl);
-void __RPC_STUB IReleaseMarshalBuffers_ReleaseMarshalBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IReleaseMarshalBuffers_INTERFACE_DEFINED__ */
 
@@ -6132,23 +5239,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IWaitMultiple_WaitMultiple_Proxy(
-    IWaitMultiple* This,
-    DWORD timeout,
-    ISynchronize **pSync);
-void __RPC_STUB IWaitMultiple_WaitMultiple_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IWaitMultiple_AddSynchronize_Proxy(
-    IWaitMultiple* This,
-    ISynchronize *pSync);
-void __RPC_STUB IWaitMultiple_AddSynchronize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IWaitMultiple_INTERFACE_DEFINED__ */
 
@@ -6236,20 +5326,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAddrTrackingControl_EnableCOMDynamicAddrTracking_Proxy(
-    IAddrTrackingControl* This);
-void __RPC_STUB IAddrTrackingControl_EnableCOMDynamicAddrTracking_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAddrTrackingControl_DisableCOMDynamicAddrTracking_Proxy(
-    IAddrTrackingControl* This);
-void __RPC_STUB IAddrTrackingControl_DisableCOMDynamicAddrTracking_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAddrTrackingControl_INTERFACE_DEFINED__ */
 
@@ -6341,23 +5417,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAddrExclusionControl_GetCurrentAddrExclusionList_Proxy(
-    IAddrExclusionControl* This,
-    REFIID riid,
-    void **ppEnumerator);
-void __RPC_STUB IAddrExclusionControl_GetCurrentAddrExclusionList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAddrExclusionControl_UpdateAddrExclusionList_Proxy(
-    IAddrExclusionControl* This,
-    IUnknown *pEnumerator);
-void __RPC_STUB IAddrExclusionControl_UpdateAddrExclusionList_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAddrExclusionControl_INTERFACE_DEFINED__ */
 
@@ -6452,25 +5511,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPipeByte_Pull_Proxy(
-    IPipeByte* This,
-    BYTE *buf,
-    ULONG cRequest,
-    ULONG *pcReturned);
-void __RPC_STUB IPipeByte_Pull_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPipeByte_Push_Proxy(
-    IPipeByte* This,
-    BYTE *buf,
-    ULONG cSent);
-void __RPC_STUB IPipeByte_Push_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPipeByte_INTERFACE_DEFINED__ */
 
@@ -6565,25 +5605,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPipeLong_Pull_Proxy(
-    IPipeLong* This,
-    LONG *buf,
-    ULONG cRequest,
-    ULONG *pcReturned);
-void __RPC_STUB IPipeLong_Pull_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPipeLong_Push_Proxy(
-    IPipeLong* This,
-    LONG *buf,
-    ULONG cSent);
-void __RPC_STUB IPipeLong_Push_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPipeLong_INTERFACE_DEFINED__ */
 
@@ -6678,25 +5699,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPipeDouble_Pull_Proxy(
-    IPipeDouble* This,
-    DOUBLE *buf,
-    ULONG cRequest,
-    ULONG *pcReturned);
-void __RPC_STUB IPipeDouble_Pull_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPipeDouble_Push_Proxy(
-    IPipeDouble* This,
-    DOUBLE *buf,
-    ULONG cSent);
-void __RPC_STUB IPipeDouble_Push_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPipeDouble_INTERFACE_DEFINED__ */
 
@@ -6833,47 +5835,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IEnumContextProps_Next_Proxy(
-    IEnumContextProps* This,
-    ULONG celt,
-    ContextProperty *pContextProperties,
-    ULONG *pceltFetched);
-void __RPC_STUB IEnumContextProps_Next_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumContextProps_Skip_Proxy(
-    IEnumContextProps* This,
-    ULONG celt);
-void __RPC_STUB IEnumContextProps_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumContextProps_Reset_Proxy(
-    IEnumContextProps* This);
-void __RPC_STUB IEnumContextProps_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumContextProps_Clone_Proxy(
-    IEnumContextProps* This,
-    IEnumContextProps **ppEnumContextProps);
-void __RPC_STUB IEnumContextProps_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumContextProps_Count_Proxy(
-    IEnumContextProps* This,
-    ULONG *pcelt);
-void __RPC_STUB IEnumContextProps_Count_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IEnumContextProps_INTERFACE_DEFINED__ */
 
@@ -6992,42 +5953,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IContext_SetProperty_Proxy(
-    IContext* This,
-    REFGUID rpolicyId,
-    CPFLAGS flags,
-    IUnknown *pUnk);
-void __RPC_STUB IContext_SetProperty_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IContext_RemoveProperty_Proxy(
-    IContext* This,
-    REFGUID rPolicyId);
-void __RPC_STUB IContext_RemoveProperty_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IContext_GetProperty_Proxy(
-    IContext* This,
-    REFGUID rGuid,
-    CPFLAGS *pFlags,
-    IUnknown **ppUnk);
-void __RPC_STUB IContext_GetProperty_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IContext_EnumContextProps_Proxy(
-    IContext* This,
-    IEnumContextProps **ppEnumContextProps);
-void __RPC_STUB IContext_EnumContextProps_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IContext_INTERFACE_DEFINED__ */
 
@@ -7168,38 +6093,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IComThreadingInfo_GetCurrentApartmentType_Proxy(
-    IComThreadingInfo* This,
-    APTTYPE *pAptType);
-void __RPC_STUB IComThreadingInfo_GetCurrentApartmentType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComThreadingInfo_GetCurrentThreadType_Proxy(
-    IComThreadingInfo* This,
-    THDTYPE *pThreadType);
-void __RPC_STUB IComThreadingInfo_GetCurrentThreadType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComThreadingInfo_GetCurrentLogicalThreadId_Proxy(
-    IComThreadingInfo* This,
-    GUID *pguidLogicalThreadId);
-void __RPC_STUB IComThreadingInfo_GetCurrentLogicalThreadId_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComThreadingInfo_SetCurrentLogicalThreadId_Proxy(
-    IComThreadingInfo* This,
-    REFGUID rguid);
-void __RPC_STUB IComThreadingInfo_SetCurrentLogicalThreadId_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IComThreadingInfo_INTERFACE_DEFINED__ */
 
@@ -7277,14 +6170,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IProcessInitControl_ResetInitializerTimeout_Proxy(
-    IProcessInitControl* This,
-    DWORD dwSecondsRemaining);
-void __RPC_STUB IProcessInitControl_ResetInitializerTimeout_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IProcessInitControl_INTERFACE_DEFINED__ */
 
@@ -7538,15 +6423,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMarshalingStream_GetMarshalingContextAttribute_Proxy(
-    IMarshalingStream* This,
-    CO_MARSHALING_CONTEXT_ATTRIBUTES attribute,
-    ULONG_PTR *pAttributeValue);
-void __RPC_STUB IMarshalingStream_GetMarshalingContextAttribute_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMarshalingStream_INTERFACE_DEFINED__ */
 
@@ -7816,110 +6692,6 @@
 
 #endif
 
-SIZE_T STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(
-    IMallocSpy* This,
-    SIZE_T cbRequest);
-void __RPC_STUB IMallocSpy_PreAlloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void * STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(
-    IMallocSpy* This,
-    void *pActual);
-void __RPC_STUB IMallocSpy_PostAlloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void * STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(
-    IMallocSpy* This,
-    void *pRequest,
-    WINBOOL fSpyed);
-void __RPC_STUB IMallocSpy_PreFree_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(
-    IMallocSpy* This,
-    WINBOOL fSpyed);
-void __RPC_STUB IMallocSpy_PostFree_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-SIZE_T STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(
-    IMallocSpy* This,
-    void *pRequest,
-    SIZE_T cbRequest,
-    void **ppNewRequest,
-    WINBOOL fSpyed);
-void __RPC_STUB IMallocSpy_PreRealloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void * STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(
-    IMallocSpy* This,
-    void *pActual,
-    WINBOOL fSpyed);
-void __RPC_STUB IMallocSpy_PostRealloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void * STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(
-    IMallocSpy* This,
-    void *pRequest,
-    WINBOOL fSpyed);
-void __RPC_STUB IMallocSpy_PreGetSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-SIZE_T STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(
-    IMallocSpy* This,
-    SIZE_T cbActual,
-    WINBOOL fSpyed);
-void __RPC_STUB IMallocSpy_PostGetSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void * STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(
-    IMallocSpy* This,
-    void *pRequest,
-    WINBOOL fSpyed);
-void __RPC_STUB IMallocSpy_PreDidAlloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(
-    IMallocSpy* This,
-    void *pRequest,
-    WINBOOL fSpyed,
-    int fActual);
-void __RPC_STUB IMallocSpy_PostDidAlloc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(
-    IMallocSpy* This);
-void __RPC_STUB IMallocSpy_PreHeapMinimize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(
-    IMallocSpy* This);
-void __RPC_STUB IMallocSpy_PostHeapMinimize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMallocSpy_INTERFACE_DEFINED__ */
 
@@ -8160,29 +6932,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(
-    IBindCtx* This,
-    IUnknown *punk);
-void __RPC_STUB IBindCtx_RegisterObjectBound_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(
-    IBindCtx* This,
-    IUnknown *punk);
-void __RPC_STUB IBindCtx_RevokeObjectBound_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(
-    IBindCtx* This);
-void __RPC_STUB IBindCtx_ReleaseBoundObjects_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IBindCtx_RemoteSetBindOptions_Proxy(
     IBindCtx* This,
     BIND_OPTS2 *pbindopts);
@@ -8199,48 +6948,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(
-    IBindCtx* This,
-    IRunningObjectTable **pprot);
-void __RPC_STUB IBindCtx_GetRunningObjectTable_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(
-    IBindCtx* This,
-    LPOLESTR pszKey,
-    IUnknown *punk);
-void __RPC_STUB IBindCtx_RegisterObjectParam_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(
-    IBindCtx* This,
-    LPOLESTR pszKey,
-    IUnknown **ppunk);
-void __RPC_STUB IBindCtx_GetObjectParam_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(
-    IBindCtx* This,
-    IEnumString **ppenum);
-void __RPC_STUB IBindCtx_EnumObjectParam_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(
-    IBindCtx* This,
-    LPOLESTR pszKey);
-void __RPC_STUB IBindCtx_RevokeObjectParam_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IBindCtx_SetBindOptions_Proxy(
     IBindCtx* This,
     BIND_OPTS *pbindopts);
@@ -8376,29 +7083,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(
-    IEnumMoniker* This,
-    ULONG celt);
-void __RPC_STUB IEnumMoniker_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(
-    IEnumMoniker* This);
-void __RPC_STUB IEnumMoniker_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(
-    IEnumMoniker* This,
-    IEnumMoniker **ppenum);
-void __RPC_STUB IEnumMoniker_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IEnumMoniker_Next_Proxy(
     IEnumMoniker* This,
     ULONG celt,
@@ -8533,22 +7217,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(
-    IRunnableObject* This,
-    LPCLSID lpClsid);
-void __RPC_STUB IRunnableObject_GetRunningClass_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(
-    IRunnableObject* This,
-    LPBINDCTX pbc);
-void __RPC_STUB IRunnableObject_Run_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IRunnableObject_RemoteIsRunning_Proxy(
     IRunnableObject* This);
 void __RPC_STUB IRunnableObject_RemoteIsRunning_Stub(
@@ -8556,23 +7224,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(
-    IRunnableObject* This,
-    WINBOOL fLock,
-    WINBOOL fLastUnlockCloses);
-void __RPC_STUB IRunnableObject_LockRunning_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(
-    IRunnableObject* This,
-    WINBOOL fContained);
-void __RPC_STUB IRunnableObject_SetContainedObject_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 WINBOOL CALLBACK IRunnableObject_IsRunning_Proxy(
     IRunnableObject* This);
 HRESULT __RPC_STUB IRunnableObject_IsRunning_Stub(
@@ -8732,68 +7383,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(
-    IRunningObjectTable* This,
-    DWORD grfFlags,
-    IUnknown *punkObject,
-    IMoniker *pmkObjectName,
-    DWORD *pdwRegister);
-void __RPC_STUB IRunningObjectTable_Register_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(
-    IRunningObjectTable* This,
-    DWORD dwRegister);
-void __RPC_STUB IRunningObjectTable_Revoke_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(
-    IRunningObjectTable* This,
-    IMoniker *pmkObjectName);
-void __RPC_STUB IRunningObjectTable_IsRunning_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(
-    IRunningObjectTable* This,
-    IMoniker *pmkObjectName,
-    IUnknown **ppunkObject);
-void __RPC_STUB IRunningObjectTable_GetObject_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(
-    IRunningObjectTable* This,
-    DWORD dwRegister,
-    FILETIME *pfiletime);
-void __RPC_STUB IRunningObjectTable_NoteChangeTime_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(
-    IRunningObjectTable* This,
-    IMoniker *pmkObjectName,
-    FILETIME *pfiletime);
-void __RPC_STUB IRunningObjectTable_GetTimeOfLastChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(
-    IRunningObjectTable* This,
-    IEnumMoniker **ppenumMoniker);
-void __RPC_STUB IRunningObjectTable_EnumRunning_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRunningObjectTable_INTERFACE_DEFINED__ */
 
@@ -8873,14 +7462,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(
-    IPersist* This,
-    CLSID *pClassID);
-void __RPC_STUB IPersist_GetClassID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPersist_INTERFACE_DEFINED__ */
 
@@ -9003,38 +7584,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(
-    IPersistStream* This);
-void __RPC_STUB IPersistStream_IsDirty_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(
-    IPersistStream* This,
-    IStream *pStm);
-void __RPC_STUB IPersistStream_Load_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(
-    IPersistStream* This,
-    IStream *pStm,
-    WINBOOL fClearDirty);
-void __RPC_STUB IPersistStream_Save_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(
-    IPersistStream* This,
-    ULARGE_INTEGER *pcbSize);
-void __RPC_STUB IPersistStream_GetSizeMax_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPersistStream_INTERFACE_DEFINED__ */
 
@@ -9400,128 +7949,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(
-    IMoniker* This,
-    IBindCtx *pbc,
-    DWORD dwReduceHowFar,
-    IMoniker **ppmkToLeft,
-    IMoniker **ppmkReduced);
-void __RPC_STUB IMoniker_Reduce_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(
-    IMoniker* This,
-    IMoniker *pmkRight,
-    WINBOOL fOnlyIfNotGeneric,
-    IMoniker **ppmkComposite);
-void __RPC_STUB IMoniker_ComposeWith_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(
-    IMoniker* This,
-    WINBOOL fForward,
-    IEnumMoniker **ppenumMoniker);
-void __RPC_STUB IMoniker_Enum_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(
-    IMoniker* This,
-    IMoniker *pmkOtherMoniker);
-void __RPC_STUB IMoniker_IsEqual_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(
-    IMoniker* This,
-    DWORD *pdwHash);
-void __RPC_STUB IMoniker_Hash_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(
-    IMoniker* This,
-    IBindCtx *pbc,
-    IMoniker *pmkToLeft,
-    IMoniker *pmkNewlyRunning);
-void __RPC_STUB IMoniker_IsRunning_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(
-    IMoniker* This,
-    IBindCtx *pbc,
-    IMoniker *pmkToLeft,
-    FILETIME *pFileTime);
-void __RPC_STUB IMoniker_GetTimeOfLastChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(
-    IMoniker* This,
-    IMoniker **ppmk);
-void __RPC_STUB IMoniker_Inverse_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(
-    IMoniker* This,
-    IMoniker *pmkOther,
-    IMoniker **ppmkPrefix);
-void __RPC_STUB IMoniker_CommonPrefixWith_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(
-    IMoniker* This,
-    IMoniker *pmkOther,
-    IMoniker **ppmkRelPath);
-void __RPC_STUB IMoniker_RelativePathTo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(
-    IMoniker* This,
-    IBindCtx *pbc,
-    IMoniker *pmkToLeft,
-    LPOLESTR *ppszDisplayName);
-void __RPC_STUB IMoniker_GetDisplayName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(
-    IMoniker* This,
-    IBindCtx *pbc,
-    IMoniker *pmkToLeft,
-    LPOLESTR pszDisplayName,
-    ULONG *pchEaten,
-    IMoniker **ppmkOut);
-void __RPC_STUB IMoniker_ParseDisplayName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(
-    IMoniker* This,
-    DWORD *pdwMksys);
-void __RPC_STUB IMoniker_IsSystemMoniker_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IMoniker_BindToObject_Proxy(
     IMoniker* This,
     IBindCtx *pbc,
@@ -9628,16 +8055,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(
-    IROTData* This,
-    byte *pbData,
-    ULONG cbMax,
-    ULONG *pcbData);
-void __RPC_STUB IROTData_GetComparisonData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IROTData_INTERFACE_DEFINED__ */
 
@@ -9763,29 +8180,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(
-    IEnumSTATSTG* This,
-    ULONG celt);
-void __RPC_STUB IEnumSTATSTG_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(
-    IEnumSTATSTG* This);
-void __RPC_STUB IEnumSTATSTG_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(
-    IEnumSTATSTG* This,
-    IEnumSTATSTG **ppenum);
-void __RPC_STUB IEnumSTATSTG_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IEnumSTATSTG_Next_Proxy(
     IEnumSTATSTG* This,
     ULONG celt,
@@ -10097,18 +8491,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(
-    IStorage* This,
-    const OLECHAR *pwcsName,
-    DWORD grfMode,
-    DWORD reserved1,
-    DWORD reserved2,
-    IStream **ppstm);
-void __RPC_STUB IStorage_CreateStream_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(
     IStorage* This,
     const OLECHAR *pwcsName,
@@ -10122,31 +8504,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(
-    IStorage* This,
-    const OLECHAR *pwcsName,
-    DWORD grfMode,
-    DWORD reserved1,
-    DWORD reserved2,
-    IStorage **ppstg);
-void __RPC_STUB IStorage_CreateStorage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(
-    IStorage* This,
-    const OLECHAR *pwcsName,
-    IStorage *pstgPriority,
-    DWORD grfMode,
-    SNB snbExclude,
-    DWORD reserved,
-    IStorage **ppstg);
-void __RPC_STUB IStorage_OpenStorage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IStorage_RemoteCopyTo_Proxy(
     IStorage* This,
     DWORD ciidExclude,
@@ -10158,32 +8515,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(
-    IStorage* This,
-    const OLECHAR *pwcsName,
-    IStorage *pstgDest,
-    const OLECHAR *pwcsNewName,
-    DWORD grfFlags);
-void __RPC_STUB IStorage_MoveElementTo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(
-    IStorage* This,
-    DWORD grfCommitFlags);
-void __RPC_STUB IStorage_Commit_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(
-    IStorage* This);
-void __RPC_STUB IStorage_Revert_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(
     IStorage* This,
     DWORD reserved1,
@@ -10196,60 +8527,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(
-    IStorage* This,
-    const OLECHAR *pwcsName);
-void __RPC_STUB IStorage_DestroyElement_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(
-    IStorage* This,
-    const OLECHAR *pwcsOldName,
-    const OLECHAR *pwcsNewName);
-void __RPC_STUB IStorage_RenameElement_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(
-    IStorage* This,
-    const OLECHAR *pwcsName,
-    const FILETIME *pctime,
-    const FILETIME *patime,
-    const FILETIME *pmtime);
-void __RPC_STUB IStorage_SetElementTimes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(
-    IStorage* This,
-    REFCLSID clsid);
-void __RPC_STUB IStorage_SetClass_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(
-    IStorage* This,
-    DWORD grfStateBits,
-    DWORD grfMask);
-void __RPC_STUB IStorage_SetStateBits_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(
-    IStorage* This,
-    STATSTG *pstatstg,
-    DWORD grfStatFlag);
-void __RPC_STUB IStorage_Stat_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IStorage_OpenStream_Proxy(
     IStorage* This,
     const OLECHAR *pwcsName,
@@ -10427,47 +8704,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(
-    IPersistFile* This);
-void __RPC_STUB IPersistFile_IsDirty_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(
-    IPersistFile* This,
-    LPCOLESTR pszFileName,
-    DWORD dwMode);
-void __RPC_STUB IPersistFile_Load_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(
-    IPersistFile* This,
-    LPCOLESTR pszFileName,
-    WINBOOL fRemember);
-void __RPC_STUB IPersistFile_Save_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(
-    IPersistFile* This,
-    LPCOLESTR pszFileName);
-void __RPC_STUB IPersistFile_SaveCompleted_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(
-    IPersistFile* This,
-    LPOLESTR *ppszFileName);
-void __RPC_STUB IPersistFile_GetCurFile_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPersistFile_INTERFACE_DEFINED__ */
 
@@ -10611,53 +8847,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(
-    IPersistStorage* This);
-void __RPC_STUB IPersistStorage_IsDirty_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(
-    IPersistStorage* This,
-    IStorage *pStg);
-void __RPC_STUB IPersistStorage_InitNew_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(
-    IPersistStorage* This,
-    IStorage *pStg);
-void __RPC_STUB IPersistStorage_Load_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(
-    IPersistStorage* This,
-    IStorage *pStgSave,
-    WINBOOL fSameAsLoad);
-void __RPC_STUB IPersistStorage_Save_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(
-    IPersistStorage* This,
-    IStorage *pStgNew);
-void __RPC_STUB IPersistStorage_SaveCompleted_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(
-    IPersistStorage* This);
-void __RPC_STUB IPersistStorage_HandsOffStorage_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPersistStorage_INTERFACE_DEFINED__ */
 
@@ -10846,50 +9035,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(
-    ILockBytes* This);
-void __RPC_STUB ILockBytes_Flush_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(
-    ILockBytes* This,
-    ULARGE_INTEGER cb);
-void __RPC_STUB ILockBytes_SetSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(
-    ILockBytes* This,
-    ULARGE_INTEGER libOffset,
-    ULARGE_INTEGER cb,
-    DWORD dwLockType);
-void __RPC_STUB ILockBytes_LockRegion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(
-    ILockBytes* This,
-    ULARGE_INTEGER libOffset,
-    ULARGE_INTEGER cb,
-    DWORD dwLockType);
-void __RPC_STUB ILockBytes_UnlockRegion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(
-    ILockBytes* This,
-    STATSTG *pstatstg,
-    DWORD grfStatFlag);
-void __RPC_STUB ILockBytes_Stat_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK ILockBytes_ReadAt_Proxy(
     ILockBytes* This,
     ULARGE_INTEGER ulOffset,
@@ -11054,29 +9199,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(
-    IEnumFORMATETC* This,
-    ULONG celt);
-void __RPC_STUB IEnumFORMATETC_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(
-    IEnumFORMATETC* This);
-void __RPC_STUB IEnumFORMATETC_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(
-    IEnumFORMATETC* This,
-    IEnumFORMATETC **ppenum);
-void __RPC_STUB IEnumFORMATETC_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IEnumFORMATETC_Next_Proxy(
     IEnumFORMATETC* This,
     ULONG celt,
@@ -11226,29 +9348,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(
-    IEnumSTATDATA* This,
-    ULONG celt);
-void __RPC_STUB IEnumSTATDATA_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(
-    IEnumSTATDATA* This);
-void __RPC_STUB IEnumSTATDATA_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(
-    IEnumSTATDATA* This,
-    IEnumSTATDATA **ppenum);
-void __RPC_STUB IEnumSTATDATA_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 HRESULT CALLBACK IEnumSTATDATA_Next_Proxy(
     IEnumSTATDATA* This,
     ULONG celt,
@@ -11336,14 +9435,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(
-    IRootStorage* This,
-    LPOLESTR pszFile);
-void __RPC_STUB IRootStorage_SwitchToFile_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRootStorage_INTERFACE_DEFINED__ */
 
@@ -11875,61 +9966,6 @@
     IRpcChannelBuffer* pRpcChannelBuffer,
     PRPC_MESSAGE pRpcMessage,
     DWORD* pdwStubPhase);
-void CALLBACK AsyncIAdviseSink_Begin_OnDataChange_Proxy(
-    IAdviseSink* This,
-    FORMATETC *pFormatetc,
-    STGMEDIUM *pStgmed);
-HRESULT __RPC_STUB AsyncIAdviseSink_Begin_OnDataChange_Stub(
-    IAdviseSink* This,
-    FORMATETC *pFormatetc,
-    ASYNC_STGMEDIUM *pStgmed);
-void CALLBACK AsyncIAdviseSink_Finish_OnDataChange_Proxy(
-    IAdviseSink* This);
-HRESULT __RPC_STUB AsyncIAdviseSink_Finish_OnDataChange_Stub(
-    IAdviseSink* This,
-    FORMATETC *pFormatetc,
-    ASYNC_STGMEDIUM *pStgmed);
-void CALLBACK AsyncIAdviseSink_Begin_OnViewChange_Proxy(
-    IAdviseSink* This,
-    DWORD dwAspect,
-    LONG lindex);
-HRESULT __RPC_STUB AsyncIAdviseSink_Begin_OnViewChange_Stub(
-    IAdviseSink* This,
-    DWORD dwAspect,
-    LONG lindex);
-void CALLBACK AsyncIAdviseSink_Finish_OnViewChange_Proxy(
-    IAdviseSink* This);
-HRESULT __RPC_STUB AsyncIAdviseSink_Finish_OnViewChange_Stub(
-    IAdviseSink* This,
-    DWORD dwAspect,
-    LONG lindex);
-void CALLBACK AsyncIAdviseSink_Begin_OnRename_Proxy(
-    IAdviseSink* This,
-    IMoniker *pmk);
-HRESULT __RPC_STUB AsyncIAdviseSink_Begin_OnRename_Stub(
-    IAdviseSink* This,
-    IMoniker *pmk);
-void CALLBACK AsyncIAdviseSink_Finish_OnRename_Proxy(
-    IAdviseSink* This);
-HRESULT __RPC_STUB AsyncIAdviseSink_Finish_OnRename_Stub(
-    IAdviseSink* This,
-    IMoniker *pmk);
-void CALLBACK AsyncIAdviseSink_Begin_OnSave_Proxy(
-    IAdviseSink* This);
-HRESULT __RPC_STUB AsyncIAdviseSink_Begin_OnSave_Stub(
-    IAdviseSink* This);
-void CALLBACK AsyncIAdviseSink_Finish_OnSave_Proxy(
-    IAdviseSink* This);
-HRESULT __RPC_STUB AsyncIAdviseSink_Finish_OnSave_Stub(
-    IAdviseSink* This);
-void CALLBACK AsyncIAdviseSink_Begin_OnClose_Proxy(
-    IAdviseSink* This);
-HRESULT __RPC_STUB AsyncIAdviseSink_Begin_OnClose_Stub(
-    IAdviseSink* This);
-void CALLBACK AsyncIAdviseSink_Finish_OnClose_Proxy(
-    IAdviseSink* This);
-HRESULT __RPC_STUB AsyncIAdviseSink_Finish_OnClose_Stub(
-    IAdviseSink* This);
 
 #endif  /* __AsyncIAdviseSink_INTERFACE_DEFINED__ */
 
@@ -12052,21 +10088,6 @@
 
 #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__ */
 
 /*****************************************************************************
@@ -12230,34 +10251,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink2_Begin_RemoteOnLinkSrcChange_Proxy(
-    IAdviseSink2* This,
-    IMoniker *pmk);
-void __RPC_STUB AsyncIAdviseSink2_Begin_RemoteOnLinkSrcChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIAdviseSink2_Finish_RemoteOnLinkSrcChange_Proxy(
-    IAdviseSink2* This,
-    IMoniker *pmk);
-void __RPC_STUB AsyncIAdviseSink2_Finish_RemoteOnLinkSrcChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void CALLBACK AsyncIAdviseSink2_Begin_OnLinkSrcChange_Proxy(
-    IAdviseSink2* This,
-    IMoniker *pmk);
-HRESULT __RPC_STUB AsyncIAdviseSink2_Begin_OnLinkSrcChange_Stub(
-    IAdviseSink2* This,
-    IMoniker *pmk);
-void CALLBACK AsyncIAdviseSink2_Finish_OnLinkSrcChange_Proxy(
-    IAdviseSink2* This);
-HRESULT __RPC_STUB AsyncIAdviseSink2_Finish_OnLinkSrcChange_Stub(
-    IAdviseSink2* This,
-    IMoniker *pmk);
-
 #endif  /* __AsyncIAdviseSink2_INTERFACE_DEFINED__ */
 
 #endif
@@ -12446,114 +10439,6 @@
 
 #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_QueryGetData_Proxy(
-    IDataObject* This,
-    FORMATETC *pformatetc);
-void __RPC_STUB IDataObject_QueryGetData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(
-    IDataObject* This,
-    FORMATETC *pformatectIn,
-    FORMATETC *pformatetcOut);
-void __RPC_STUB IDataObject_GetCanonicalFormatEtc_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 STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(
-    IDataObject* This,
-    DWORD dwDirection,
-    IEnumFORMATETC **ppenumFormatEtc);
-void __RPC_STUB IDataObject_EnumFormatEtc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(
-    IDataObject* This,
-    FORMATETC *pformatetc,
-    DWORD advf,
-    IAdviseSink *pAdvSink,
-    DWORD *pdwConnection);
-void __RPC_STUB IDataObject_DAdvise_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(
-    IDataObject* This,
-    DWORD dwConnection);
-void __RPC_STUB IDataObject_DUnadvise_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(
-    IDataObject* This,
-    IEnumSTATDATA **ppenumAdvise);
-void __RPC_STUB IDataObject_EnumDAdvise_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
@@ -12677,45 +10562,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(
-    IDataAdviseHolder* This,
-    IDataObject *pDataObject,
-    FORMATETC *pFetc,
-    DWORD advf,
-    IAdviseSink *pAdvise,
-    DWORD *pdwConnection);
-void __RPC_STUB IDataAdviseHolder_Advise_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(
-    IDataAdviseHolder* This,
-    DWORD dwConnection);
-void __RPC_STUB IDataAdviseHolder_Unadvise_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(
-    IDataAdviseHolder* This,
-    IEnumSTATDATA **ppenumAdvise);
-void __RPC_STUB IDataAdviseHolder_EnumAdvise_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(
-    IDataAdviseHolder* This,
-    IDataObject *pDataObject,
-    DWORD dwReserved,
-    DWORD advf);
-void __RPC_STUB IDataAdviseHolder_SendOnDataChange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IDataAdviseHolder_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -12855,38 +10701,6 @@
 
 #endif
 
-DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(
-    IMessageFilter* This,
-    DWORD dwCallType,
-    HTASK htaskCaller,
-    DWORD dwTickCount,
-    LPINTERFACEINFO lpInterfaceInfo);
-void __RPC_STUB IMessageFilter_HandleInComingCall_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(
-    IMessageFilter* This,
-    HTASK htaskCallee,
-    DWORD dwTickCount,
-    DWORD dwRejectType);
-void __RPC_STUB IMessageFilter_RetryRejectedCall_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(
-    IMessageFilter* This,
-    HTASK htaskCallee,
-    DWORD dwTickCount,
-    DWORD dwPendingType);
-void __RPC_STUB IMessageFilter_MessagePending_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IMessageFilter_INTERFACE_DEFINED__ */
 
 
@@ -12987,19 +10801,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IClassActivator_GetClassObject_Proxy(
-    IClassActivator* This,
-    REFCLSID rclsid,
-    DWORD dwClassContext,
-    LCID locale,
-    REFIID riid,
-    void **ppv);
-void __RPC_STUB IClassActivator_GetClassObject_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IClassActivator_INTERFACE_DEFINED__ */
 
 #endif
@@ -13120,66 +10921,6 @@
 
 #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 STDMETHODCALLTYPE IFillLockBytes_SetFillSize_Proxy(
-    IFillLockBytes* This,
-    ULARGE_INTEGER ulSize);
-void __RPC_STUB IFillLockBytes_SetFillSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IFillLockBytes_Terminate_Proxy(
-    IFillLockBytes* This,
-    WINBOOL bCanceled);
-void __RPC_STUB IFillLockBytes_Terminate_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
@@ -13263,18 +11004,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IProgressNotify_OnProgress_Proxy(
-    IProgressNotify* This,
-    DWORD dwProgressCurrent,
-    DWORD dwProgressMaximum,
-    WINBOOL fAccurate,
-    WINBOOL fOwner);
-void __RPC_STUB IProgressNotify_OnProgress_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IProgressNotify_INTERFACE_DEFINED__ */
 
 #endif
@@ -13404,47 +11133,6 @@
 
 #endif
 
-HRESULT __stdcall ILayoutStorage_LayoutScript_Proxy(
-    ILayoutStorage* This,
-    StorageLayout *pStorageLayout,
-    DWORD nEntries,
-    DWORD glfInterleavedFlag);
-void __RPC_STUB ILayoutStorage_LayoutScript_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT __stdcall ILayoutStorage_BeginMonitor_Proxy(
-    ILayoutStorage* This);
-void __RPC_STUB ILayoutStorage_BeginMonitor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT __stdcall ILayoutStorage_EndMonitor_Proxy(
-    ILayoutStorage* This);
-void __RPC_STUB ILayoutStorage_EndMonitor_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT __stdcall ILayoutStorage_ReLayoutDocfile_Proxy(
-    ILayoutStorage* This,
-    OLECHAR *pwcsNewDfName);
-void __RPC_STUB ILayoutStorage_ReLayoutDocfile_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT __stdcall ILayoutStorage_ReLayoutDocfileOnILockBytes_Proxy(
-    ILayoutStorage* This,
-    ILockBytes *pILockBytes);
-void __RPC_STUB ILayoutStorage_ReLayoutDocfileOnILockBytes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __ILayoutStorage_INTERFACE_DEFINED__ */
 
 #endif
@@ -13532,22 +11220,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBlockingLock_Lock_Proxy(
-    IBlockingLock* This,
-    DWORD dwTimeout);
-void __RPC_STUB IBlockingLock_Lock_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBlockingLock_Unlock_Proxy(
-    IBlockingLock* This);
-void __RPC_STUB IBlockingLock_Unlock_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IBlockingLock_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -13625,16 +11297,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ITimeAndNoticeControl_SuppressChanges_Proxy(
-    ITimeAndNoticeControl* This,
-    DWORD res1,
-    DWORD res2);
-void __RPC_STUB ITimeAndNoticeControl_SuppressChanges_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __ITimeAndNoticeControl_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -13741,33 +11403,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IOplockStorage_CreateStorageEx_Proxy(
-    IOplockStorage* This,
-    LPCWSTR pwcsName,
-    DWORD grfMode,
-    DWORD stgfmt,
-    DWORD grfAttrs,
-    REFIID riid,
-    void **ppstgOpen);
-void __RPC_STUB IOplockStorage_CreateStorageEx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IOplockStorage_OpenStorageEx_Proxy(
-    IOplockStorage* This,
-    LPCWSTR pwcsName,
-    DWORD grfMode,
-    DWORD stgfmt,
-    DWORD grfAttrs,
-    REFIID riid,
-    void **ppstgOpen);
-void __RPC_STUB IOplockStorage_OpenStorageEx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IOplockStorage_INTERFACE_DEFINED__ */
 
 #endif
@@ -13865,29 +11500,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDirectWriterLock_WaitForWriteAccess_Proxy(
-    IDirectWriterLock* This,
-    DWORD dwTimeout);
-void __RPC_STUB IDirectWriterLock_WaitForWriteAccess_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDirectWriterLock_ReleaseWriteAccess_Proxy(
-    IDirectWriterLock* This);
-void __RPC_STUB IDirectWriterLock_ReleaseWriteAccess_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDirectWriterLock_HaveWriteAccess_Proxy(
-    IDirectWriterLock* This);
-void __RPC_STUB IDirectWriterLock_HaveWriteAccess_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IDirectWriterLock_INTERFACE_DEFINED__ */
 
 #endif
@@ -13983,24 +11595,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IUrlMon_AsyncGetClassBits_Proxy(
-    IUrlMon* This,
-    REFCLSID rclsid,
-    LPCWSTR pszTYPE,
-    LPCWSTR pszExt,
-    DWORD dwFileVersionMS,
-    DWORD dwFileVersionLS,
-    LPCWSTR pszCodeBase,
-    IBindCtx *pbc,
-    DWORD dwClassContext,
-    REFIID riid,
-    DWORD flags);
-void __RPC_STUB IUrlMon_AsyncGetClassBits_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IUrlMon_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -14076,15 +11670,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IForegroundTransfer_AllowForegroundTransfer_Proxy(
-    IForegroundTransfer* This,
-    void *lpvReserved);
-void __RPC_STUB IForegroundTransfer_AllowForegroundTransfer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IForegroundTransfer_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -14181,28 +11766,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IThumbnailExtractor_ExtractThumbnail_Proxy(
-    IThumbnailExtractor* This,
-    IStorage *pStg,
-    ULONG ulLength,
-    ULONG ulHeight,
-    ULONG *pulOutputLength,
-    ULONG *pulOutputHeight,
-    HBITMAP *phOutputBitmap);
-void __RPC_STUB IThumbnailExtractor_ExtractThumbnail_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IThumbnailExtractor_OnFileUpdated_Proxy(
-    IThumbnailExtractor* This,
-    IStorage *pStg);
-void __RPC_STUB IThumbnailExtractor_OnFileUpdated_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IThumbnailExtractor_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -14280,16 +11843,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDummyHICONIncluder_Dummy_Proxy(
-    IDummyHICONIncluder* This,
-    HICON h1,
-    HDC h2);
-void __RPC_STUB IDummyHICONIncluder_Dummy_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IDummyHICONIncluder_INTERFACE_DEFINED__ */
 
 typedef enum tagApplicationType {
@@ -14382,21 +11935,6 @@
 
 #endif
 
-ULONG STDMETHODCALLTYPE IProcessLock_AddRefOnProcess_Proxy(
-    IProcessLock* This);
-void __RPC_STUB IProcessLock_AddRefOnProcess_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-ULONG STDMETHODCALLTYPE IProcessLock_ReleaseRefOnProcess_Proxy(
-    IProcessLock* This);
-void __RPC_STUB IProcessLock_ReleaseRefOnProcess_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IProcessLock_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -14522,50 +12060,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ISurrogateService_Init_Proxy(
-    ISurrogateService* This,
-    REFGUID rguidProcessID,
-    IProcessLock *pProcessLock,
-    WINBOOL *pfApplicationAware);
-void __RPC_STUB ISurrogateService_Init_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ISurrogateService_ApplicationLaunch_Proxy(
-    ISurrogateService* This,
-    REFGUID rguidApplID,
-    ApplicationType appType);
-void __RPC_STUB ISurrogateService_ApplicationLaunch_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ISurrogateService_ApplicationFree_Proxy(
-    ISurrogateService* This,
-    REFGUID rguidApplID);
-void __RPC_STUB ISurrogateService_ApplicationFree_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ISurrogateService_CatalogRefresh_Proxy(
-    ISurrogateService* This,
-    ULONG ulReserved);
-void __RPC_STUB ISurrogateService_CatalogRefresh_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ISurrogateService_ProcessShutdown_Proxy(
-    ISurrogateService* This,
-    ShutdownType shutdownType);
-void __RPC_STUB ISurrogateService_ProcessShutdown_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __ISurrogateService_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
@@ -14681,42 +12175,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IInitializeSpy_PreInitialize_Proxy(
-    IInitializeSpy* This,
-    DWORD dwCoInit,
-    DWORD dwCurThreadAptRefs);
-void __RPC_STUB IInitializeSpy_PreInitialize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IInitializeSpy_PostInitialize_Proxy(
-    IInitializeSpy* This,
-    HRESULT hrCoInit,
-    DWORD dwCoInit,
-    DWORD dwNewThreadAptRefs);
-void __RPC_STUB IInitializeSpy_PostInitialize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IInitializeSpy_PreUninitialize_Proxy(
-    IInitializeSpy* This,
-    DWORD dwCurThreadAptRefs);
-void __RPC_STUB IInitializeSpy_PreUninitialize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IInitializeSpy_PostUninitialize_Proxy(
-    IInitializeSpy* This,
-    DWORD dwNewThreadAptRefs);
-void __RPC_STUB IInitializeSpy_PostUninitialize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IInitializeSpy_INTERFACE_DEFINED__ */
 
 #endif
@@ -14794,15 +12252,6 @@
 
 #endif
 
-void STDMETHODCALLTYPE IApartmentShutdown_OnUninitialize_Proxy(
-    IApartmentShutdown* This,
-    UINT64 ui64ApartmentIdentifier);
-void __RPC_STUB IApartmentShutdown_OnUninitialize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
 #endif  /* __IApartmentShutdown_INTERFACE_DEFINED__ */
 
 #endif
diff --git a/mingw-w64-headers/include/tuner.h b/mingw-w64-headers/include/tuner.h
index e29ccce..1dd1bc9 100644
--- a/mingw-w64-headers/include/tuner.h
+++ b/mingw-w64-headers/include/tuner.h
@@ -1203,39 +1203,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ITuningSpaces_get_Count_Proxy(
-    ITuningSpaces* This,
-    LONG *Count);
-void __RPC_STUB ITuningSpaces_get_Count_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaces_get__NewEnum_Proxy(
-    ITuningSpaces* This,
-    IEnumVARIANT **NewEnum);
-void __RPC_STUB ITuningSpaces_get__NewEnum_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaces_get_Item_Proxy(
-    ITuningSpaces* This,
-    VARIANT varIndex,
-    ITuningSpace **TuningSpace);
-void __RPC_STUB ITuningSpaces_get_Item_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaces_get_EnumTuningSpaces_Proxy(
-    ITuningSpaces* This,
-    IEnumTuningSpaces **NewEnum);
-void __RPC_STUB ITuningSpaces_get_EnumTuningSpaces_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ITuningSpaces_INTERFACE_DEFINED__ */
 
@@ -1506,117 +1473,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_Count_Proxy(
-    ITuningSpaceContainer* This,
-    LONG *Count);
-void __RPC_STUB ITuningSpaceContainer_get_Count_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get__NewEnum_Proxy(
-    ITuningSpaceContainer* This,
-    IEnumVARIANT **NewEnum);
-void __RPC_STUB ITuningSpaceContainer_get__NewEnum_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_Item_Proxy(
-    ITuningSpaceContainer* This,
-    VARIANT varIndex,
-    ITuningSpace **TuningSpace);
-void __RPC_STUB ITuningSpaceContainer_get_Item_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_put_Item_Proxy(
-    ITuningSpaceContainer* This,
-    VARIANT varIndex,
-    ITuningSpace *TuningSpace);
-void __RPC_STUB ITuningSpaceContainer_put_Item_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_TuningSpacesForCLSID_Proxy(
-    ITuningSpaceContainer* This,
-    BSTR SpaceCLSID,
-    ITuningSpaces **NewColl);
-void __RPC_STUB ITuningSpaceContainer_TuningSpacesForCLSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer__TuningSpacesForCLSID_Proxy(
-    ITuningSpaceContainer* This,
-    REFCLSID SpaceCLSID,
-    ITuningSpaces **NewColl);
-void __RPC_STUB ITuningSpaceContainer__TuningSpacesForCLSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_TuningSpacesForName_Proxy(
-    ITuningSpaceContainer* This,
-    BSTR Name,
-    ITuningSpaces **NewColl);
-void __RPC_STUB ITuningSpaceContainer_TuningSpacesForName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_FindID_Proxy(
-    ITuningSpaceContainer* This,
-    ITuningSpace *TuningSpace,
-    LONG *ID);
-void __RPC_STUB ITuningSpaceContainer_FindID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_Add_Proxy(
-    ITuningSpaceContainer* This,
-    ITuningSpace *TuningSpace,
-    VARIANT *NewIndex);
-void __RPC_STUB ITuningSpaceContainer_Add_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_EnumTuningSpaces_Proxy(
-    ITuningSpaceContainer* This,
-    IEnumTuningSpaces **ppEnum);
-void __RPC_STUB ITuningSpaceContainer_get_EnumTuningSpaces_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_Remove_Proxy(
-    ITuningSpaceContainer* This,
-    VARIANT Index);
-void __RPC_STUB ITuningSpaceContainer_Remove_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_get_MaxCount_Proxy(
-    ITuningSpaceContainer* This,
-    LONG *MaxCount);
-void __RPC_STUB ITuningSpaceContainer_get_MaxCount_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpaceContainer_put_MaxCount_Proxy(
-    ITuningSpaceContainer* This,
-    LONG MaxCount);
-void __RPC_STUB ITuningSpaceContainer_put_MaxCount_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ITuningSpaceContainer_INTERFACE_DEFINED__ */
 
@@ -1939,158 +1795,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ITuningSpace_get_UniqueName_Proxy(
-    ITuningSpace* This,
-    BSTR *Name);
-void __RPC_STUB ITuningSpace_get_UniqueName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_put_UniqueName_Proxy(
-    ITuningSpace* This,
-    BSTR Name);
-void __RPC_STUB ITuningSpace_put_UniqueName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_get_FriendlyName_Proxy(
-    ITuningSpace* This,
-    BSTR *Name);
-void __RPC_STUB ITuningSpace_get_FriendlyName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_put_FriendlyName_Proxy(
-    ITuningSpace* This,
-    BSTR Name);
-void __RPC_STUB ITuningSpace_put_FriendlyName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_get_CLSID_Proxy(
-    ITuningSpace* This,
-    BSTR *SpaceCLSID);
-void __RPC_STUB ITuningSpace_get_CLSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_get_NetworkType_Proxy(
-    ITuningSpace* This,
-    BSTR *NetworkTypeGuid);
-void __RPC_STUB ITuningSpace_get_NetworkType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_put_NetworkType_Proxy(
-    ITuningSpace* This,
-    BSTR NetworkTypeGuid);
-void __RPC_STUB ITuningSpace_put_NetworkType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_get__NetworkType_Proxy(
-    ITuningSpace* This,
-    GUID *NetworkTypeGuid);
-void __RPC_STUB ITuningSpace_get__NetworkType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_put__NetworkType_Proxy(
-    ITuningSpace* This,
-    REFCLSID NetworkTypeGuid);
-void __RPC_STUB ITuningSpace_put__NetworkType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_CreateTuneRequest_Proxy(
-    ITuningSpace* This,
-    ITuneRequest **TuneRequest);
-void __RPC_STUB ITuningSpace_CreateTuneRequest_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_EnumCategoryGUIDs_Proxy(
-    ITuningSpace* This,
-    IEnumGUID **ppEnum);
-void __RPC_STUB ITuningSpace_EnumCategoryGUIDs_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_EnumDeviceMonikers_Proxy(
-    ITuningSpace* This,
-    IEnumMoniker **ppEnum);
-void __RPC_STUB ITuningSpace_EnumDeviceMonikers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_get_DefaultPreferredComponentTypes_Proxy(
-    ITuningSpace* This,
-    IComponentTypes **ComponentTypes);
-void __RPC_STUB ITuningSpace_get_DefaultPreferredComponentTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_put_DefaultPreferredComponentTypes_Proxy(
-    ITuningSpace* This,
-    IComponentTypes *NewComponentTypes);
-void __RPC_STUB ITuningSpace_put_DefaultPreferredComponentTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_get_FrequencyMapping_Proxy(
-    ITuningSpace* This,
-    BSTR *pMapping);
-void __RPC_STUB ITuningSpace_get_FrequencyMapping_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_put_FrequencyMapping_Proxy(
-    ITuningSpace* This,
-    BSTR Mapping);
-void __RPC_STUB ITuningSpace_put_FrequencyMapping_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_get_DefaultLocator_Proxy(
-    ITuningSpace* This,
-    ILocator **LocatorVal);
-void __RPC_STUB ITuningSpace_get_DefaultLocator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_put_DefaultLocator_Proxy(
-    ITuningSpace* This,
-    ILocator *LocatorVal);
-void __RPC_STUB ITuningSpace_put_DefaultLocator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuningSpace_Clone_Proxy(
-    ITuningSpace* This,
-    ITuningSpace **NewTS);
-void __RPC_STUB ITuningSpace_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ITuningSpace_INTERFACE_DEFINED__ */
 
@@ -2203,39 +1907,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Next_Proxy(
-    IEnumTuningSpaces* This,
-    ULONG celt,
-    ITuningSpace **rgelt,
-    ULONG *pceltFetched);
-void __RPC_STUB IEnumTuningSpaces_Next_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Skip_Proxy(
-    IEnumTuningSpaces* This,
-    ULONG celt);
-void __RPC_STUB IEnumTuningSpaces_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Reset_Proxy(
-    IEnumTuningSpaces* This);
-void __RPC_STUB IEnumTuningSpaces_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumTuningSpaces_Clone_Proxy(
-    IEnumTuningSpaces* This,
-    IEnumTuningSpaces **ppEnum);
-void __RPC_STUB IEnumTuningSpaces_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IEnumTuningSpaces_INTERFACE_DEFINED__ */
 
@@ -2526,22 +2197,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDVBTuningSpace_get_SystemType_Proxy(
-    IDVBTuningSpace* This,
-    DVBSystemType *SysType);
-void __RPC_STUB IDVBTuningSpace_get_SystemType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTuningSpace_put_SystemType_Proxy(
-    IDVBTuningSpace* This,
-    DVBSystemType SysType);
-void __RPC_STUB IDVBTuningSpace_put_SystemType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDVBTuningSpace_INTERFACE_DEFINED__ */
 
@@ -2851,22 +2506,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDVBTuningSpace2_get_NetworkID_Proxy(
-    IDVBTuningSpace2* This,
-    LONG *NetworkID);
-void __RPC_STUB IDVBTuningSpace2_get_NetworkID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTuningSpace2_put_NetworkID_Proxy(
-    IDVBTuningSpace2* This,
-    LONG NetworkID);
-void __RPC_STUB IDVBTuningSpace2_put_NetworkID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDVBTuningSpace2_INTERFACE_DEFINED__ */
 
@@ -3283,86 +2922,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_LowOscillator_Proxy(
-    IDVBSTuningSpace* This,
-    LONG *LowOscillator);
-void __RPC_STUB IDVBSTuningSpace_get_LowOscillator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_LowOscillator_Proxy(
-    IDVBSTuningSpace* This,
-    LONG LowOscillator);
-void __RPC_STUB IDVBSTuningSpace_put_LowOscillator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_HighOscillator_Proxy(
-    IDVBSTuningSpace* This,
-    LONG *HighOscillator);
-void __RPC_STUB IDVBSTuningSpace_get_HighOscillator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_HighOscillator_Proxy(
-    IDVBSTuningSpace* This,
-    LONG HighOscillator);
-void __RPC_STUB IDVBSTuningSpace_put_HighOscillator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_LNBSwitch_Proxy(
-    IDVBSTuningSpace* This,
-    LONG *LNBSwitch);
-void __RPC_STUB IDVBSTuningSpace_get_LNBSwitch_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_LNBSwitch_Proxy(
-    IDVBSTuningSpace* This,
-    LONG LNBSwitch);
-void __RPC_STUB IDVBSTuningSpace_put_LNBSwitch_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_InputRange_Proxy(
-    IDVBSTuningSpace* This,
-    BSTR *InputRange);
-void __RPC_STUB IDVBSTuningSpace_get_InputRange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_InputRange_Proxy(
-    IDVBSTuningSpace* This,
-    BSTR InputRange);
-void __RPC_STUB IDVBSTuningSpace_put_InputRange_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_get_SpectralInversion_Proxy(
-    IDVBSTuningSpace* This,
-    SpectralInversion *SpectralInversionVal);
-void __RPC_STUB IDVBSTuningSpace_get_SpectralInversion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSTuningSpace_put_SpectralInversion_Proxy(
-    IDVBSTuningSpace* This,
-    SpectralInversion SpectralInversionVal);
-void __RPC_STUB IDVBSTuningSpace_put_SpectralInversion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDVBSTuningSpace_INTERFACE_DEFINED__ */
 
@@ -3918,22 +3477,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAuxInTuningSpace2_get_CountryCode_Proxy(
-    IAuxInTuningSpace2* This,
-    LONG *CountryCodeVal);
-void __RPC_STUB IAuxInTuningSpace2_get_CountryCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAuxInTuningSpace2_put_CountryCode_Proxy(
-    IAuxInTuningSpace2* This,
-    LONG NewCountryCodeVal);
-void __RPC_STUB IAuxInTuningSpace2_put_CountryCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAuxInTuningSpace2_INTERFACE_DEFINED__ */
 
@@ -4290,70 +3833,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_MinChannel_Proxy(
-    IAnalogTVTuningSpace* This,
-    LONG *MinChannelVal);
-void __RPC_STUB IAnalogTVTuningSpace_get_MinChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_MinChannel_Proxy(
-    IAnalogTVTuningSpace* This,
-    LONG NewMinChannelVal);
-void __RPC_STUB IAnalogTVTuningSpace_put_MinChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_MaxChannel_Proxy(
-    IAnalogTVTuningSpace* This,
-    LONG *MaxChannelVal);
-void __RPC_STUB IAnalogTVTuningSpace_get_MaxChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_MaxChannel_Proxy(
-    IAnalogTVTuningSpace* This,
-    LONG NewMaxChannelVal);
-void __RPC_STUB IAnalogTVTuningSpace_put_MaxChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_InputType_Proxy(
-    IAnalogTVTuningSpace* This,
-    TunerInputType *InputTypeVal);
-void __RPC_STUB IAnalogTVTuningSpace_get_InputType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_InputType_Proxy(
-    IAnalogTVTuningSpace* This,
-    TunerInputType NewInputTypeVal);
-void __RPC_STUB IAnalogTVTuningSpace_put_InputType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_get_CountryCode_Proxy(
-    IAnalogTVTuningSpace* This,
-    LONG *CountryCodeVal);
-void __RPC_STUB IAnalogTVTuningSpace_get_CountryCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogTVTuningSpace_put_CountryCode_Proxy(
-    IAnalogTVTuningSpace* This,
-    LONG NewCountryCodeVal);
-void __RPC_STUB IAnalogTVTuningSpace_put_CountryCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAnalogTVTuningSpace_INTERFACE_DEFINED__ */
 
@@ -4777,70 +4256,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MinMinorChannel_Proxy(
-    IATSCTuningSpace* This,
-    LONG *MinMinorChannelVal);
-void __RPC_STUB IATSCTuningSpace_get_MinMinorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MinMinorChannel_Proxy(
-    IATSCTuningSpace* This,
-    LONG NewMinMinorChannelVal);
-void __RPC_STUB IATSCTuningSpace_put_MinMinorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MaxMinorChannel_Proxy(
-    IATSCTuningSpace* This,
-    LONG *MaxMinorChannelVal);
-void __RPC_STUB IATSCTuningSpace_get_MaxMinorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MaxMinorChannel_Proxy(
-    IATSCTuningSpace* This,
-    LONG NewMaxMinorChannelVal);
-void __RPC_STUB IATSCTuningSpace_put_MaxMinorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MinPhysicalChannel_Proxy(
-    IATSCTuningSpace* This,
-    LONG *MinPhysicalChannelVal);
-void __RPC_STUB IATSCTuningSpace_get_MinPhysicalChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MinPhysicalChannel_Proxy(
-    IATSCTuningSpace* This,
-    LONG NewMinPhysicalChannelVal);
-void __RPC_STUB IATSCTuningSpace_put_MinPhysicalChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCTuningSpace_get_MaxPhysicalChannel_Proxy(
-    IATSCTuningSpace* This,
-    LONG *MaxPhysicalChannelVal);
-void __RPC_STUB IATSCTuningSpace_get_MaxPhysicalChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCTuningSpace_put_MaxPhysicalChannel_Proxy(
-    IATSCTuningSpace* This,
-    LONG NewMaxPhysicalChannelVal);
-void __RPC_STUB IATSCTuningSpace_put_MaxPhysicalChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IATSCTuningSpace_INTERFACE_DEFINED__ */
 
@@ -5331,70 +4746,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_get_MinMajorChannel_Proxy(
-    IDigitalCableTuningSpace* This,
-    LONG *MinMajorChannelVal);
-void __RPC_STUB IDigitalCableTuningSpace_get_MinMajorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_put_MinMajorChannel_Proxy(
-    IDigitalCableTuningSpace* This,
-    LONG NewMinMajorChannelVal);
-void __RPC_STUB IDigitalCableTuningSpace_put_MinMajorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_get_MaxMajorChannel_Proxy(
-    IDigitalCableTuningSpace* This,
-    LONG *MaxMajorChannelVal);
-void __RPC_STUB IDigitalCableTuningSpace_get_MaxMajorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_put_MaxMajorChannel_Proxy(
-    IDigitalCableTuningSpace* This,
-    LONG NewMaxMajorChannelVal);
-void __RPC_STUB IDigitalCableTuningSpace_put_MaxMajorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_get_MinSourceID_Proxy(
-    IDigitalCableTuningSpace* This,
-    LONG *MinSourceIDVal);
-void __RPC_STUB IDigitalCableTuningSpace_get_MinSourceID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_put_MinSourceID_Proxy(
-    IDigitalCableTuningSpace* This,
-    LONG NewMinSourceIDVal);
-void __RPC_STUB IDigitalCableTuningSpace_put_MinSourceID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_get_MaxSourceID_Proxy(
-    IDigitalCableTuningSpace* This,
-    LONG *MaxSourceIDVal);
-void __RPC_STUB IDigitalCableTuningSpace_get_MaxSourceID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuningSpace_put_MaxSourceID_Proxy(
-    IDigitalCableTuningSpace* This,
-    LONG NewMaxSourceIDVal);
-void __RPC_STUB IDigitalCableTuningSpace_put_MaxSourceID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDigitalCableTuningSpace_INTERFACE_DEFINED__ */
 
@@ -5729,54 +5080,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_MinFrequency_Proxy(
-    IAnalogRadioTuningSpace* This,
-    LONG *MinFrequencyVal);
-void __RPC_STUB IAnalogRadioTuningSpace_get_MinFrequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_MinFrequency_Proxy(
-    IAnalogRadioTuningSpace* This,
-    LONG NewMinFrequencyVal);
-void __RPC_STUB IAnalogRadioTuningSpace_put_MinFrequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_MaxFrequency_Proxy(
-    IAnalogRadioTuningSpace* This,
-    LONG *MaxFrequencyVal);
-void __RPC_STUB IAnalogRadioTuningSpace_get_MaxFrequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_MaxFrequency_Proxy(
-    IAnalogRadioTuningSpace* This,
-    LONG NewMaxFrequencyVal);
-void __RPC_STUB IAnalogRadioTuningSpace_put_MaxFrequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_get_Step_Proxy(
-    IAnalogRadioTuningSpace* This,
-    LONG *StepVal);
-void __RPC_STUB IAnalogRadioTuningSpace_get_Step_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace_put_Step_Proxy(
-    IAnalogRadioTuningSpace* This,
-    LONG NewStepVal);
-void __RPC_STUB IAnalogRadioTuningSpace_put_Step_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAnalogRadioTuningSpace_INTERFACE_DEFINED__ */
 
@@ -6118,22 +5421,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace2_get_CountryCode_Proxy(
-    IAnalogRadioTuningSpace2* This,
-    LONG *CountryCodeVal);
-void __RPC_STUB IAnalogRadioTuningSpace2_get_CountryCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogRadioTuningSpace2_put_CountryCode_Proxy(
-    IAnalogRadioTuningSpace2* This,
-    LONG NewCountryCodeVal);
-void __RPC_STUB IAnalogRadioTuningSpace2_put_CountryCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAnalogRadioTuningSpace2_INTERFACE_DEFINED__ */
 
@@ -6302,46 +5589,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ITuneRequest_get_TuningSpace_Proxy(
-    ITuneRequest* This,
-    ITuningSpace **TuningSpace);
-void __RPC_STUB ITuneRequest_get_TuningSpace_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuneRequest_get_Components_Proxy(
-    ITuneRequest* This,
-    IComponents **Components);
-void __RPC_STUB ITuneRequest_get_Components_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuneRequest_Clone_Proxy(
-    ITuneRequest* This,
-    ITuneRequest **NewTuneRequest);
-void __RPC_STUB ITuneRequest_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuneRequest_get_Locator_Proxy(
-    ITuneRequest* This,
-    ILocator **Locator);
-void __RPC_STUB ITuneRequest_get_Locator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuneRequest_put_Locator_Proxy(
-    ITuneRequest* This,
-    ILocator *Locator);
-void __RPC_STUB ITuneRequest_put_Locator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ITuneRequest_INTERFACE_DEFINED__ */
 
@@ -6520,22 +5767,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IChannelIDTuneRequest_get_ChannelID_Proxy(
-    IChannelIDTuneRequest* This,
-    BSTR *ChannelID);
-void __RPC_STUB IChannelIDTuneRequest_get_ChannelID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IChannelIDTuneRequest_put_ChannelID_Proxy(
-    IChannelIDTuneRequest* This,
-    BSTR ChannelID);
-void __RPC_STUB IChannelIDTuneRequest_put_ChannelID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IChannelIDTuneRequest_INTERFACE_DEFINED__ */
 
@@ -6714,22 +5945,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IChannelTuneRequest_get_Channel_Proxy(
-    IChannelTuneRequest* This,
-    LONG *Channel);
-void __RPC_STUB IChannelTuneRequest_get_Channel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IChannelTuneRequest_put_Channel_Proxy(
-    IChannelTuneRequest* This,
-    LONG Channel);
-void __RPC_STUB IChannelTuneRequest_put_Channel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IChannelTuneRequest_INTERFACE_DEFINED__ */
 
@@ -6927,22 +6142,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IATSCChannelTuneRequest_get_MinorChannel_Proxy(
-    IATSCChannelTuneRequest* This,
-    LONG *MinorChannel);
-void __RPC_STUB IATSCChannelTuneRequest_get_MinorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCChannelTuneRequest_put_MinorChannel_Proxy(
-    IATSCChannelTuneRequest* This,
-    LONG MinorChannel);
-void __RPC_STUB IATSCChannelTuneRequest_put_MinorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IATSCChannelTuneRequest_INTERFACE_DEFINED__ */
 
@@ -7181,38 +6380,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDigitalCableTuneRequest_get_MajorChannel_Proxy(
-    IDigitalCableTuneRequest* This,
-    LONG *pMajorChannel);
-void __RPC_STUB IDigitalCableTuneRequest_get_MajorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuneRequest_put_MajorChannel_Proxy(
-    IDigitalCableTuneRequest* This,
-    LONG MajorChannel);
-void __RPC_STUB IDigitalCableTuneRequest_put_MajorChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuneRequest_get_SourceID_Proxy(
-    IDigitalCableTuneRequest* This,
-    LONG *pSourceID);
-void __RPC_STUB IDigitalCableTuneRequest_get_SourceID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDigitalCableTuneRequest_put_SourceID_Proxy(
-    IDigitalCableTuneRequest* This,
-    LONG SourceID);
-void __RPC_STUB IDigitalCableTuneRequest_put_SourceID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDigitalCableTuneRequest_INTERFACE_DEFINED__ */
 
@@ -7435,54 +6602,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_ONID_Proxy(
-    IDVBTuneRequest* This,
-    LONG *ONID);
-void __RPC_STUB IDVBTuneRequest_get_ONID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_ONID_Proxy(
-    IDVBTuneRequest* This,
-    LONG ONID);
-void __RPC_STUB IDVBTuneRequest_put_ONID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_TSID_Proxy(
-    IDVBTuneRequest* This,
-    LONG *TSID);
-void __RPC_STUB IDVBTuneRequest_get_TSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_TSID_Proxy(
-    IDVBTuneRequest* This,
-    LONG TSID);
-void __RPC_STUB IDVBTuneRequest_put_TSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTuneRequest_get_SID_Proxy(
-    IDVBTuneRequest* This,
-    LONG *SID);
-void __RPC_STUB IDVBTuneRequest_get_SID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTuneRequest_put_SID_Proxy(
-    IDVBTuneRequest* This,
-    LONG SID);
-void __RPC_STUB IDVBTuneRequest_put_SID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDVBTuneRequest_INTERFACE_DEFINED__ */
 
@@ -7683,38 +6802,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_get_TSID_Proxy(
-    IMPEG2TuneRequest* This,
-    LONG *TSID);
-void __RPC_STUB IMPEG2TuneRequest_get_TSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_put_TSID_Proxy(
-    IMPEG2TuneRequest* This,
-    LONG TSID);
-void __RPC_STUB IMPEG2TuneRequest_put_TSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_get_ProgNo_Proxy(
-    IMPEG2TuneRequest* This,
-    LONG *ProgNo);
-void __RPC_STUB IMPEG2TuneRequest_get_ProgNo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2TuneRequest_put_ProgNo_Proxy(
-    IMPEG2TuneRequest* This,
-    LONG ProgNo);
-void __RPC_STUB IMPEG2TuneRequest_put_ProgNo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMPEG2TuneRequest_INTERFACE_DEFINED__ */
 
@@ -7841,15 +6928,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMPEG2TuneRequestFactory_CreateTuneRequest_Proxy(
-    IMPEG2TuneRequestFactory* This,
-    ITuningSpace *TuningSpace,
-    IMPEG2TuneRequest **TuneRequest);
-void __RPC_STUB IMPEG2TuneRequestFactory_CreateTuneRequest_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMPEG2TuneRequestFactory_INTERFACE_DEFINED__ */
 
@@ -8018,34 +7096,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ITunerCap_get_SupportedNetworkTypes_Proxy(
-    ITunerCap* This,
-    ULONG ulcNetworkTypesMax,
-    ULONG *pulcNetworkTypes,
-    GUID *pguidNetworkTypes);
-void __RPC_STUB ITunerCap_get_SupportedNetworkTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITunerCap_get_SupportedVideoFormats_Proxy(
-    ITunerCap* This,
-    ULONG *pulAMTunerModeType,
-    ULONG *pulAnalogVideoStandard);
-void __RPC_STUB ITunerCap_get_SupportedVideoFormats_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITunerCap_get_AuxInputCount_Proxy(
-    ITunerCap* This,
-    ULONG *pulCompositeCount,
-    ULONG *pulSvideoCount);
-void __RPC_STUB ITunerCap_get_AuxInputCount_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ITunerCap_INTERFACE_DEFINED__ */
 
@@ -8122,14 +7172,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ITunerCapEx_get_Has608_708Caption_Proxy(
-    ITunerCapEx* This,
-    VARIANT_BOOL *pbHasCaption);
-void __RPC_STUB ITunerCapEx_get_Has608_708Caption_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ITunerCapEx_INTERFACE_DEFINED__ */
 
@@ -8305,86 +7347,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ITuner_get_TuningSpace_Proxy(
-    ITuner* This,
-    ITuningSpace **TuningSpace);
-void __RPC_STUB ITuner_get_TuningSpace_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_put_TuningSpace_Proxy(
-    ITuner* This,
-    ITuningSpace *TuningSpace);
-void __RPC_STUB ITuner_put_TuningSpace_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_EnumTuningSpaces_Proxy(
-    ITuner* This,
-    IEnumTuningSpaces **ppEnum);
-void __RPC_STUB ITuner_EnumTuningSpaces_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_get_TuneRequest_Proxy(
-    ITuner* This,
-    ITuneRequest **TuneRequest);
-void __RPC_STUB ITuner_get_TuneRequest_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_put_TuneRequest_Proxy(
-    ITuner* This,
-    ITuneRequest *TuneRequest);
-void __RPC_STUB ITuner_put_TuneRequest_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_Validate_Proxy(
-    ITuner* This,
-    ITuneRequest *TuneRequest);
-void __RPC_STUB ITuner_Validate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_get_PreferredComponentTypes_Proxy(
-    ITuner* This,
-    IComponentTypes **ComponentTypes);
-void __RPC_STUB ITuner_get_PreferredComponentTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_put_PreferredComponentTypes_Proxy(
-    ITuner* This,
-    IComponentTypes *ComponentTypes);
-void __RPC_STUB ITuner_put_PreferredComponentTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_get_SignalStrength_Proxy(
-    ITuner* This,
-    LONG *Strength);
-void __RPC_STUB ITuner_get_SignalStrength_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ITuner_TriggerSignalEvents_Proxy(
-    ITuner* This,
-    LONG Interval);
-void __RPC_STUB ITuner_TriggerSignalEvents_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ITuner_INTERFACE_DEFINED__ */
 
@@ -8585,43 +7547,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IScanningTuner_SeekUp_Proxy(
-    IScanningTuner* This);
-void __RPC_STUB IScanningTuner_SeekUp_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTuner_SeekDown_Proxy(
-    IScanningTuner* This);
-void __RPC_STUB IScanningTuner_SeekDown_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTuner_ScanUp_Proxy(
-    IScanningTuner* This,
-    LONG MillisecondsPause);
-void __RPC_STUB IScanningTuner_ScanUp_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTuner_ScanDown_Proxy(
-    IScanningTuner* This,
-    LONG MillisecondsPause);
-void __RPC_STUB IScanningTuner_ScanDown_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTuner_AutoProgram_Proxy(
-    IScanningTuner* This);
-void __RPC_STUB IScanningTuner_AutoProgram_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IScanningTuner_INTERFACE_DEFINED__ */
 
@@ -8920,81 +7845,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IScanningTunerEx_GetCurrentLocator_Proxy(
-    IScanningTunerEx* This,
-    ILocator **pILocator);
-void __RPC_STUB IScanningTunerEx_GetCurrentLocator_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTunerEx_PerformExhaustiveScan_Proxy(
-    IScanningTunerEx* This,
-    LONG dwLowerFreq,
-    LONG dwHigherFreq,
-    VARIANT_BOOL bFineTune,
-    HEVENT hEvent);
-void __RPC_STUB IScanningTunerEx_PerformExhaustiveScan_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTunerEx_TerminateCurrentScan_Proxy(
-    IScanningTunerEx* This,
-    LONG *pcurrentFreq);
-void __RPC_STUB IScanningTunerEx_TerminateCurrentScan_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTunerEx_ResumeCurrentScan_Proxy(
-    IScanningTunerEx* This,
-    HEVENT hEvent);
-void __RPC_STUB IScanningTunerEx_ResumeCurrentScan_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTunerEx_GetTunerScanningCapability_Proxy(
-    IScanningTunerEx* This,
-    LONG *HardwareAssistedScanning,
-    LONG *NumStandardsSupported,
-    GUID *BroadcastStandards);
-void __RPC_STUB IScanningTunerEx_GetTunerScanningCapability_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTunerEx_GetTunerStatus_Proxy(
-    IScanningTunerEx* This,
-    LONG *SecondsLeft,
-    LONG *CurrentLockType,
-    LONG *AutoDetect,
-    LONG *CurrentFreq);
-void __RPC_STUB IScanningTunerEx_GetTunerStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTunerEx_GetCurrentTunerStandardCapability_Proxy(
-    IScanningTunerEx* This,
-    GUID CurrentBroadcastStandard,
-    LONG *SettlingTime,
-    LONG *TvStandardsSupported);
-void __RPC_STUB IScanningTunerEx_GetCurrentTunerStandardCapability_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IScanningTunerEx_SetScanSignalTypeFilter_Proxy(
-    IScanningTunerEx* This,
-    LONG ScanModulationTypes,
-    LONG AnalogVideoStandard);
-void __RPC_STUB IScanningTunerEx_SetScanSignalTypeFilter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IScanningTunerEx_INTERFACE_DEFINED__ */
 
@@ -9295,142 +8145,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IComponentType_get_Category_Proxy(
-    IComponentType* This,
-    ComponentCategory *Category);
-void __RPC_STUB IComponentType_get_Category_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_put_Category_Proxy(
-    IComponentType* This,
-    ComponentCategory Category);
-void __RPC_STUB IComponentType_put_Category_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_get_MediaMajorType_Proxy(
-    IComponentType* This,
-    BSTR *MediaMajorType);
-void __RPC_STUB IComponentType_get_MediaMajorType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_put_MediaMajorType_Proxy(
-    IComponentType* This,
-    BSTR MediaMajorType);
-void __RPC_STUB IComponentType_put_MediaMajorType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_get__MediaMajorType_Proxy(
-    IComponentType* This,
-    GUID *MediaMajorTypeGuid);
-void __RPC_STUB IComponentType_get__MediaMajorType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_put__MediaMajorType_Proxy(
-    IComponentType* This,
-    REFCLSID MediaMajorTypeGuid);
-void __RPC_STUB IComponentType_put__MediaMajorType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_get_MediaSubType_Proxy(
-    IComponentType* This,
-    BSTR *MediaSubType);
-void __RPC_STUB IComponentType_get_MediaSubType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_put_MediaSubType_Proxy(
-    IComponentType* This,
-    BSTR MediaSubType);
-void __RPC_STUB IComponentType_put_MediaSubType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_get__MediaSubType_Proxy(
-    IComponentType* This,
-    GUID *MediaSubTypeGuid);
-void __RPC_STUB IComponentType_get__MediaSubType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_put__MediaSubType_Proxy(
-    IComponentType* This,
-    REFCLSID MediaSubTypeGuid);
-void __RPC_STUB IComponentType_put__MediaSubType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_get_MediaFormatType_Proxy(
-    IComponentType* This,
-    BSTR *MediaFormatType);
-void __RPC_STUB IComponentType_get_MediaFormatType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_put_MediaFormatType_Proxy(
-    IComponentType* This,
-    BSTR MediaFormatType);
-void __RPC_STUB IComponentType_put_MediaFormatType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_get__MediaFormatType_Proxy(
-    IComponentType* This,
-    GUID *MediaFormatTypeGuid);
-void __RPC_STUB IComponentType_get__MediaFormatType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_put__MediaFormatType_Proxy(
-    IComponentType* This,
-    REFCLSID MediaFormatTypeGuid);
-void __RPC_STUB IComponentType_put__MediaFormatType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_get_MediaType_Proxy(
-    IComponentType* This,
-    AM_MEDIA_TYPE *MediaType);
-void __RPC_STUB IComponentType_get_MediaType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_put_MediaType_Proxy(
-    IComponentType* This,
-    AM_MEDIA_TYPE *MediaType);
-void __RPC_STUB IComponentType_put_MediaType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentType_Clone_Proxy(
-    IComponentType* This,
-    IComponentType **NewCT);
-void __RPC_STUB IComponentType_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IComponentType_INTERFACE_DEFINED__ */
 
@@ -9705,22 +8419,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ILanguageComponentType_get_LangID_Proxy(
-    ILanguageComponentType* This,
-    LONG *LangID);
-void __RPC_STUB ILanguageComponentType_get_LangID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILanguageComponentType_put_LangID_Proxy(
-    ILanguageComponentType* This,
-    LONG LangID);
-void __RPC_STUB ILanguageComponentType_put_LangID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ILanguageComponentType_INTERFACE_DEFINED__ */
 
@@ -10014,22 +8712,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMPEG2ComponentType_get_StreamType_Proxy(
-    IMPEG2ComponentType* This,
-    MPEG2StreamType *MP2StreamType);
-void __RPC_STUB IMPEG2ComponentType_get_StreamType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2ComponentType_put_StreamType_Proxy(
-    IMPEG2ComponentType* This,
-    MPEG2StreamType MP2StreamType);
-void __RPC_STUB IMPEG2ComponentType_put_StreamType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMPEG2ComponentType_INTERFACE_DEFINED__ */
 
@@ -10342,22 +9024,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IATSCComponentType_get_Flags_Proxy(
-    IATSCComponentType* This,
-    LONG *Flags);
-void __RPC_STUB IATSCComponentType_get_Flags_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCComponentType_put_Flags_Proxy(
-    IATSCComponentType* This,
-    LONG flags);
-void __RPC_STUB IATSCComponentType_put_Flags_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IATSCComponentType_INTERFACE_DEFINED__ */
 
@@ -10470,39 +9136,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Next_Proxy(
-    IEnumComponentTypes* This,
-    ULONG celt,
-    IComponentType **rgelt,
-    ULONG *pceltFetched);
-void __RPC_STUB IEnumComponentTypes_Next_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Skip_Proxy(
-    IEnumComponentTypes* This,
-    ULONG celt);
-void __RPC_STUB IEnumComponentTypes_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Reset_Proxy(
-    IEnumComponentTypes* This);
-void __RPC_STUB IEnumComponentTypes_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumComponentTypes_Clone_Proxy(
-    IEnumComponentTypes* This,
-    IEnumComponentTypes **ppEnum);
-void __RPC_STUB IEnumComponentTypes_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IEnumComponentTypes_INTERFACE_DEFINED__ */
 
@@ -10710,73 +9343,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IComponentTypes_get_Count_Proxy(
-    IComponentTypes* This,
-    LONG *Count);
-void __RPC_STUB IComponentTypes_get_Count_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentTypes_get__NewEnum_Proxy(
-    IComponentTypes* This,
-    IEnumVARIANT **ppNewEnum);
-void __RPC_STUB IComponentTypes_get__NewEnum_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentTypes_EnumComponentTypes_Proxy(
-    IComponentTypes* This,
-    IEnumComponentTypes **ppNewEnum);
-void __RPC_STUB IComponentTypes_EnumComponentTypes_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentTypes_get_Item_Proxy(
-    IComponentTypes* This,
-    VARIANT Index,
-    IComponentType **ComponentType);
-void __RPC_STUB IComponentTypes_get_Item_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentTypes_put_Item_Proxy(
-    IComponentTypes* This,
-    VARIANT Index,
-    IComponentType *ComponentType);
-void __RPC_STUB IComponentTypes_put_Item_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentTypes_Add_Proxy(
-    IComponentTypes* This,
-    IComponentType *ComponentType,
-    VARIANT *NewIndex);
-void __RPC_STUB IComponentTypes_Add_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentTypes_Remove_Proxy(
-    IComponentTypes* This,
-    VARIANT Index);
-void __RPC_STUB IComponentTypes_Remove_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentTypes_Clone_Proxy(
-    IComponentTypes* This,
-    IComponentTypes **NewList);
-void __RPC_STUB IComponentTypes_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IComponentTypes_INTERFACE_DEFINED__ */
 
@@ -10989,78 +9555,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IComponent_get_Type_Proxy(
-    IComponent* This,
-    IComponentType **CT);
-void __RPC_STUB IComponent_get_Type_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponent_put_Type_Proxy(
-    IComponent* This,
-    IComponentType *CT);
-void __RPC_STUB IComponent_put_Type_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponent_get_DescLangID_Proxy(
-    IComponent* This,
-    LONG *LangID);
-void __RPC_STUB IComponent_get_DescLangID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponent_put_DescLangID_Proxy(
-    IComponent* This,
-    LONG LangID);
-void __RPC_STUB IComponent_put_DescLangID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponent_get_Status_Proxy(
-    IComponent* This,
-    ComponentStatus *Status);
-void __RPC_STUB IComponent_get_Status_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponent_put_Status_Proxy(
-    IComponent* This,
-    ComponentStatus Status);
-void __RPC_STUB IComponent_put_Status_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponent_get_Description_Proxy(
-    IComponent* This,
-    BSTR *Description);
-void __RPC_STUB IComponent_get_Description_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponent_put_Description_Proxy(
-    IComponent* This,
-    BSTR Description);
-void __RPC_STUB IComponent_put_Description_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponent_Clone_Proxy(
-    IComponent* This,
-    IComponent **NewComponent);
-void __RPC_STUB IComponent_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IComponent_INTERFACE_DEFINED__ */
 
@@ -11335,22 +9829,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAnalogAudioComponentType_get_AnalogAudioMode_Proxy(
-    IAnalogAudioComponentType* This,
-    TVAudioMode *Mode);
-void __RPC_STUB IAnalogAudioComponentType_get_AnalogAudioMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogAudioComponentType_put_AnalogAudioMode_Proxy(
-    IAnalogAudioComponentType* This,
-    TVAudioMode Mode);
-void __RPC_STUB IAnalogAudioComponentType_put_AnalogAudioMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAnalogAudioComponentType_INTERFACE_DEFINED__ */
 
@@ -11605,54 +10083,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IMPEG2Component_get_PID_Proxy(
-    IMPEG2Component* This,
-    LONG *PID);
-void __RPC_STUB IMPEG2Component_get_PID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2Component_put_PID_Proxy(
-    IMPEG2Component* This,
-    LONG PID);
-void __RPC_STUB IMPEG2Component_put_PID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2Component_get_PCRPID_Proxy(
-    IMPEG2Component* This,
-    LONG *PCRPID);
-void __RPC_STUB IMPEG2Component_get_PCRPID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2Component_put_PCRPID_Proxy(
-    IMPEG2Component* This,
-    LONG PCRPID);
-void __RPC_STUB IMPEG2Component_put_PCRPID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2Component_get_ProgramNumber_Proxy(
-    IMPEG2Component* This,
-    LONG *ProgramNumber);
-void __RPC_STUB IMPEG2Component_get_ProgramNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IMPEG2Component_put_ProgramNumber_Proxy(
-    IMPEG2Component* This,
-    LONG ProgramNumber);
-void __RPC_STUB IMPEG2Component_put_ProgramNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IMPEG2Component_INTERFACE_DEFINED__ */
 
@@ -11765,39 +10195,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IEnumComponents_Next_Proxy(
-    IEnumComponents* This,
-    ULONG celt,
-    IComponent **rgelt,
-    ULONG *pceltFetched);
-void __RPC_STUB IEnumComponents_Next_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumComponents_Skip_Proxy(
-    IEnumComponents* This,
-    ULONG celt);
-void __RPC_STUB IEnumComponents_Skip_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumComponents_Reset_Proxy(
-    IEnumComponents* This);
-void __RPC_STUB IEnumComponents_Reset_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IEnumComponents_Clone_Proxy(
-    IEnumComponents* This,
-    IEnumComponents **ppEnum);
-void __RPC_STUB IEnumComponents_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IEnumComponents_INTERFACE_DEFINED__ */
 
@@ -12005,73 +10402,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IComponents_get_Count_Proxy(
-    IComponents* This,
-    LONG *Count);
-void __RPC_STUB IComponents_get_Count_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponents_get__NewEnum_Proxy(
-    IComponents* This,
-    IEnumVARIANT **ppNewEnum);
-void __RPC_STUB IComponents_get__NewEnum_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponents_EnumComponents_Proxy(
-    IComponents* This,
-    IEnumComponents **ppNewEnum);
-void __RPC_STUB IComponents_EnumComponents_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponents_get_Item_Proxy(
-    IComponents* This,
-    VARIANT Index,
-    IComponent **ppComponent);
-void __RPC_STUB IComponents_get_Item_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponents_Add_Proxy(
-    IComponents* This,
-    IComponent *Component,
-    VARIANT *NewIndex);
-void __RPC_STUB IComponents_Add_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponents_Remove_Proxy(
-    IComponents* This,
-    VARIANT Index);
-void __RPC_STUB IComponents_Remove_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponents_Clone_Proxy(
-    IComponents* This,
-    IComponents **NewList);
-void __RPC_STUB IComponents_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponents_put_Item_Proxy(
-    IComponents* This,
-    VARIANT Index,
-    IComponent *ppComponent);
-void __RPC_STUB IComponents_put_Item_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IComponents_INTERFACE_DEFINED__ */
 
@@ -12266,64 +10596,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IComponentsOld_get_Count_Proxy(
-    IComponentsOld* This,
-    LONG *Count);
-void __RPC_STUB IComponentsOld_get_Count_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentsOld_get__NewEnum_Proxy(
-    IComponentsOld* This,
-    IEnumVARIANT **ppNewEnum);
-void __RPC_STUB IComponentsOld_get__NewEnum_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentsOld_EnumComponents_Proxy(
-    IComponentsOld* This,
-    IEnumComponents **ppNewEnum);
-void __RPC_STUB IComponentsOld_EnumComponents_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentsOld_get_Item_Proxy(
-    IComponentsOld* This,
-    VARIANT Index,
-    IComponent **ppComponent);
-void __RPC_STUB IComponentsOld_get_Item_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentsOld_Add_Proxy(
-    IComponentsOld* This,
-    IComponent *Component,
-    VARIANT *NewIndex);
-void __RPC_STUB IComponentsOld_Add_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentsOld_Remove_Proxy(
-    IComponentsOld* This,
-    VARIANT Index);
-void __RPC_STUB IComponentsOld_Remove_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IComponentsOld_Clone_Proxy(
-    IComponentsOld* This,
-    IComponents **NewList);
-void __RPC_STUB IComponentsOld_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IComponentsOld_INTERFACE_DEFINED__ */
 
@@ -12602,126 +10874,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ILocator_get_CarrierFrequency_Proxy(
-    ILocator* This,
-    LONG *Frequency);
-void __RPC_STUB ILocator_get_CarrierFrequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_put_CarrierFrequency_Proxy(
-    ILocator* This,
-    LONG Frequency);
-void __RPC_STUB ILocator_put_CarrierFrequency_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_get_InnerFEC_Proxy(
-    ILocator* This,
-    FECMethod *FEC);
-void __RPC_STUB ILocator_get_InnerFEC_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_put_InnerFEC_Proxy(
-    ILocator* This,
-    FECMethod FEC);
-void __RPC_STUB ILocator_put_InnerFEC_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_get_InnerFECRate_Proxy(
-    ILocator* This,
-    BinaryConvolutionCodeRate *FEC);
-void __RPC_STUB ILocator_get_InnerFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_put_InnerFECRate_Proxy(
-    ILocator* This,
-    BinaryConvolutionCodeRate FEC);
-void __RPC_STUB ILocator_put_InnerFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_get_OuterFEC_Proxy(
-    ILocator* This,
-    FECMethod *FEC);
-void __RPC_STUB ILocator_get_OuterFEC_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_put_OuterFEC_Proxy(
-    ILocator* This,
-    FECMethod FEC);
-void __RPC_STUB ILocator_put_OuterFEC_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_get_OuterFECRate_Proxy(
-    ILocator* This,
-    BinaryConvolutionCodeRate *FEC);
-void __RPC_STUB ILocator_get_OuterFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_put_OuterFECRate_Proxy(
-    ILocator* This,
-    BinaryConvolutionCodeRate FEC);
-void __RPC_STUB ILocator_put_OuterFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_get_Modulation_Proxy(
-    ILocator* This,
-    ModulationType *Modulation);
-void __RPC_STUB ILocator_get_Modulation_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_put_Modulation_Proxy(
-    ILocator* This,
-    ModulationType Modulation);
-void __RPC_STUB ILocator_put_Modulation_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_get_SymbolRate_Proxy(
-    ILocator* This,
-    LONG *Rate);
-void __RPC_STUB ILocator_get_SymbolRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_put_SymbolRate_Proxy(
-    ILocator* This,
-    LONG Rate);
-void __RPC_STUB ILocator_put_SymbolRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ILocator_Clone_Proxy(
-    ILocator* This,
-    ILocator **NewLocator);
-void __RPC_STUB ILocator_Clone_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __ILocator_INTERFACE_DEFINED__ */
 
@@ -12980,22 +11132,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IAnalogLocator_get_VideoStandard_Proxy(
-    IAnalogLocator* This,
-    AnalogVideoStandard *AVS);
-void __RPC_STUB IAnalogLocator_get_VideoStandard_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IAnalogLocator_put_VideoStandard_Proxy(
-    IAnalogLocator* This,
-    AnalogVideoStandard AVS);
-void __RPC_STUB IAnalogLocator_put_VideoStandard_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IAnalogLocator_INTERFACE_DEFINED__ */
 
@@ -13509,38 +11645,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IATSCLocator_get_PhysicalChannel_Proxy(
-    IATSCLocator* This,
-    LONG *PhysicalChannel);
-void __RPC_STUB IATSCLocator_get_PhysicalChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCLocator_put_PhysicalChannel_Proxy(
-    IATSCLocator* This,
-    LONG PhysicalChannel);
-void __RPC_STUB IATSCLocator_put_PhysicalChannel_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCLocator_get_TSID_Proxy(
-    IATSCLocator* This,
-    LONG *TSID);
-void __RPC_STUB IATSCLocator_get_TSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCLocator_put_TSID_Proxy(
-    IATSCLocator* This,
-    LONG TSID);
-void __RPC_STUB IATSCLocator_put_TSID_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IATSCLocator_INTERFACE_DEFINED__ */
 
@@ -13834,22 +11938,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IATSCLocator2_get_ProgramNumber_Proxy(
-    IATSCLocator2* This,
-    LONG *ProgramNumber);
-void __RPC_STUB IATSCLocator2_get_ProgramNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IATSCLocator2_put_ProgramNumber_Proxy(
-    IATSCLocator2* This,
-    LONG ProgramNumber);
-void __RPC_STUB IATSCLocator2_put_ProgramNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IATSCLocator2_INTERFACE_DEFINED__ */
 
@@ -14527,118 +12615,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Bandwidth_Proxy(
-    IDVBTLocator* This,
-    LONG *BandWidthVal);
-void __RPC_STUB IDVBTLocator_get_Bandwidth_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Bandwidth_Proxy(
-    IDVBTLocator* This,
-    LONG BandwidthVal);
-void __RPC_STUB IDVBTLocator_put_Bandwidth_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_get_LPInnerFEC_Proxy(
-    IDVBTLocator* This,
-    FECMethod *FEC);
-void __RPC_STUB IDVBTLocator_get_LPInnerFEC_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_put_LPInnerFEC_Proxy(
-    IDVBTLocator* This,
-    FECMethod FEC);
-void __RPC_STUB IDVBTLocator_put_LPInnerFEC_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_get_LPInnerFECRate_Proxy(
-    IDVBTLocator* This,
-    BinaryConvolutionCodeRate *FEC);
-void __RPC_STUB IDVBTLocator_get_LPInnerFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_put_LPInnerFECRate_Proxy(
-    IDVBTLocator* This,
-    BinaryConvolutionCodeRate FEC);
-void __RPC_STUB IDVBTLocator_put_LPInnerFECRate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_get_HAlpha_Proxy(
-    IDVBTLocator* This,
-    HierarchyAlpha *Alpha);
-void __RPC_STUB IDVBTLocator_get_HAlpha_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_put_HAlpha_Proxy(
-    IDVBTLocator* This,
-    HierarchyAlpha Alpha);
-void __RPC_STUB IDVBTLocator_put_HAlpha_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Guard_Proxy(
-    IDVBTLocator* This,
-    GuardInterval *GI);
-void __RPC_STUB IDVBTLocator_get_Guard_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Guard_Proxy(
-    IDVBTLocator* This,
-    GuardInterval GI);
-void __RPC_STUB IDVBTLocator_put_Guard_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_get_Mode_Proxy(
-    IDVBTLocator* This,
-    TransmissionMode *mode);
-void __RPC_STUB IDVBTLocator_get_Mode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_put_Mode_Proxy(
-    IDVBTLocator* This,
-    TransmissionMode mode);
-void __RPC_STUB IDVBTLocator_put_Mode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_get_OtherFrequencyInUse_Proxy(
-    IDVBTLocator* This,
-    VARIANT_BOOL *OtherFrequencyInUseVal);
-void __RPC_STUB IDVBTLocator_get_OtherFrequencyInUse_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator_put_OtherFrequencyInUse_Proxy(
-    IDVBTLocator* This,
-    VARIANT_BOOL OtherFrequencyInUseVal);
-void __RPC_STUB IDVBTLocator_put_OtherFrequencyInUse_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDVBTLocator_INTERFACE_DEFINED__ */
 
@@ -15012,22 +12988,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDVBTLocator2_get_PhysicalLayerPipeId_Proxy(
-    IDVBTLocator2* This,
-    LONG *PhysicalLayerPipeIdVal);
-void __RPC_STUB IDVBTLocator2_get_PhysicalLayerPipeId_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBTLocator2_put_PhysicalLayerPipeId_Proxy(
-    IDVBTLocator2* This,
-    LONG PhysicalLayerPipeIdVal);
-void __RPC_STUB IDVBTLocator2_put_PhysicalLayerPipeId_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDVBTLocator2_INTERFACE_DEFINED__ */
 
@@ -15374,86 +13334,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDVBSLocator_get_SignalPolarisation_Proxy(
-    IDVBSLocator* This,
-    Polarisation *PolarisationVal);
-void __RPC_STUB IDVBSLocator_get_SignalPolarisation_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_put_SignalPolarisation_Proxy(
-    IDVBSLocator* This,
-    Polarisation PolarisationVal);
-void __RPC_STUB IDVBSLocator_put_SignalPolarisation_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_get_WestPosition_Proxy(
-    IDVBSLocator* This,
-    VARIANT_BOOL *WestLongitude);
-void __RPC_STUB IDVBSLocator_get_WestPosition_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_put_WestPosition_Proxy(
-    IDVBSLocator* This,
-    VARIANT_BOOL WestLongitude);
-void __RPC_STUB IDVBSLocator_put_WestPosition_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_get_OrbitalPosition_Proxy(
-    IDVBSLocator* This,
-    LONG *longitude);
-void __RPC_STUB IDVBSLocator_get_OrbitalPosition_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_put_OrbitalPosition_Proxy(
-    IDVBSLocator* This,
-    LONG longitude);
-void __RPC_STUB IDVBSLocator_put_OrbitalPosition_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_get_Azimuth_Proxy(
-    IDVBSLocator* This,
-    LONG *Azimuth);
-void __RPC_STUB IDVBSLocator_get_Azimuth_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_put_Azimuth_Proxy(
-    IDVBSLocator* This,
-    LONG Azimuth);
-void __RPC_STUB IDVBSLocator_put_Azimuth_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_get_Elevation_Proxy(
-    IDVBSLocator* This,
-    LONG *Elevation);
-void __RPC_STUB IDVBSLocator_get_Elevation_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator_put_Elevation_Proxy(
-    IDVBSLocator* This,
-    LONG Elevation);
-void __RPC_STUB IDVBSLocator_put_Elevation_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDVBSLocator_INTERFACE_DEFINED__ */
 
@@ -15927,118 +13807,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_DiseqLNBSource_Proxy(
-    IDVBSLocator2* This,
-    LNB_Source *DiseqLNBSourceVal);
-void __RPC_STUB IDVBSLocator2_get_DiseqLNBSource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_DiseqLNBSource_Proxy(
-    IDVBSLocator2* This,
-    LNB_Source DiseqLNBSourceVal);
-void __RPC_STUB IDVBSLocator2_put_DiseqLNBSource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_LocalOscillatorOverrideLow_Proxy(
-    IDVBSLocator2* This,
-    LONG *LocalOscillatorOverrideLowVal);
-void __RPC_STUB IDVBSLocator2_get_LocalOscillatorOverrideLow_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_LocalOscillatorOverrideLow_Proxy(
-    IDVBSLocator2* This,
-    LONG LocalOscillatorOverrideLowVal);
-void __RPC_STUB IDVBSLocator2_put_LocalOscillatorOverrideLow_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_LocalOscillatorOverrideHigh_Proxy(
-    IDVBSLocator2* This,
-    LONG *LocalOscillatorOverrideHighVal);
-void __RPC_STUB IDVBSLocator2_get_LocalOscillatorOverrideHigh_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_LocalOscillatorOverrideHigh_Proxy(
-    IDVBSLocator2* This,
-    LONG LocalOscillatorOverrideHighVal);
-void __RPC_STUB IDVBSLocator2_put_LocalOscillatorOverrideHigh_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_LocalLNBSwitchOverride_Proxy(
-    IDVBSLocator2* This,
-    LONG *LocalLNBSwitchOverrideVal);
-void __RPC_STUB IDVBSLocator2_get_LocalLNBSwitchOverride_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_LocalLNBSwitchOverride_Proxy(
-    IDVBSLocator2* This,
-    LONG LocalLNBSwitchOverrideVal);
-void __RPC_STUB IDVBSLocator2_put_LocalLNBSwitchOverride_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_LocalSpectralInversionOverride_Proxy(
-    IDVBSLocator2* This,
-    SpectralInversion *LocalSpectralInversionOverrideVal);
-void __RPC_STUB IDVBSLocator2_get_LocalSpectralInversionOverride_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_LocalSpectralInversionOverride_Proxy(
-    IDVBSLocator2* This,
-    SpectralInversion LocalSpectralInversionOverrideVal);
-void __RPC_STUB IDVBSLocator2_put_LocalSpectralInversionOverride_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_SignalRollOff_Proxy(
-    IDVBSLocator2* This,
-    RollOff *RollOffVal);
-void __RPC_STUB IDVBSLocator2_get_SignalRollOff_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_SignalRollOff_Proxy(
-    IDVBSLocator2* This,
-    RollOff RollOffVal);
-void __RPC_STUB IDVBSLocator2_put_SignalRollOff_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_get_SignalPilot_Proxy(
-    IDVBSLocator2* This,
-    Pilot *PilotVal);
-void __RPC_STUB IDVBSLocator2_get_SignalPilot_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IDVBSLocator2_put_SignalPilot_Proxy(
-    IDVBSLocator2* This,
-    Pilot PilotVal);
-void __RPC_STUB IDVBSLocator2_put_SignalPilot_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IDVBSLocator2_INTERFACE_DEFINED__ */
 
@@ -16708,46 +14476,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESEvent_GetEventId_Proxy(
-    IESEvent* This,
-    DWORD *pdwEventId);
-void __RPC_STUB IESEvent_GetEventId_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEvent_GetEventType_Proxy(
-    IESEvent* This,
-    GUID *pguidEventType);
-void __RPC_STUB IESEvent_GetEventType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEvent_SetCompletionStatus_Proxy(
-    IESEvent* This,
-    DWORD dwResult);
-void __RPC_STUB IESEvent_SetCompletionStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEvent_GetData_Proxy(
-    IESEvent* This,
-    SAFEARRAY **pbData);
-void __RPC_STUB IESEvent_GetData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEvent_GetStringData_Proxy(
-    IESEvent* This,
-    BSTR *pbstrData);
-void __RPC_STUB IESEvent_GetStringData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESEvent_INTERFACE_DEFINED__ */
 
@@ -16904,40 +14632,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESOpenMmiEvent_GetDialogNumber_Proxy(
-    IESOpenMmiEvent* This,
-    DWORD *pDialogRequest,
-    DWORD *pDialogNumber);
-void __RPC_STUB IESOpenMmiEvent_GetDialogNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESOpenMmiEvent_GetDialogType_Proxy(
-    IESOpenMmiEvent* This,
-    GUID *guidDialogType);
-void __RPC_STUB IESOpenMmiEvent_GetDialogType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESOpenMmiEvent_GetDialogData_Proxy(
-    IESOpenMmiEvent* This,
-    SAFEARRAY **pbData);
-void __RPC_STUB IESOpenMmiEvent_GetDialogData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESOpenMmiEvent_GetDialogStringData_Proxy(
-    IESOpenMmiEvent* This,
-    BSTR *pbstrBaseUrl,
-    BSTR *pbstrData);
-void __RPC_STUB IESOpenMmiEvent_GetDialogStringData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESOpenMmiEvent_INTERFACE_DEFINED__ */
 
@@ -17057,14 +14751,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESCloseMmiEvent_GetDialogNumber_Proxy(
-    IESCloseMmiEvent* This,
-    DWORD *pDialogNumber);
-void __RPC_STUB IESCloseMmiEvent_GetDialogNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESCloseMmiEvent_INTERFACE_DEFINED__ */
 
@@ -17184,14 +14870,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESValueUpdatedEvent_GetValueNames_Proxy(
-    IESValueUpdatedEvent* This,
-    SAFEARRAY **pbstrNames);
-void __RPC_STUB IESValueUpdatedEvent_GetValueNames_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESValueUpdatedEvent_INTERFACE_DEFINED__ */
 
@@ -17344,38 +15022,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESRequestTunerEvent_GetPriority_Proxy(
-    IESRequestTunerEvent* This,
-    BYTE *pbyPriority);
-void __RPC_STUB IESRequestTunerEvent_GetPriority_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESRequestTunerEvent_GetReason_Proxy(
-    IESRequestTunerEvent* This,
-    BYTE *pbyReason);
-void __RPC_STUB IESRequestTunerEvent_GetReason_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESRequestTunerEvent_GetConsequences_Proxy(
-    IESRequestTunerEvent* This,
-    BYTE *pbyConsequences);
-void __RPC_STUB IESRequestTunerEvent_GetConsequences_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESRequestTunerEvent_GetEstimatedTime_Proxy(
-    IESRequestTunerEvent* This,
-    DWORD *pdwEstimatedTime);
-void __RPC_STUB IESRequestTunerEvent_GetEstimatedTime_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESRequestTunerEvent_INTERFACE_DEFINED__ */
 
@@ -17528,38 +15174,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESIsdbCasResponseEvent_GetRequestId_Proxy(
-    IESIsdbCasResponseEvent* This,
-    DWORD *pRequestId);
-void __RPC_STUB IESIsdbCasResponseEvent_GetRequestId_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESIsdbCasResponseEvent_GetStatus_Proxy(
-    IESIsdbCasResponseEvent* This,
-    DWORD *pStatus);
-void __RPC_STUB IESIsdbCasResponseEvent_GetStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESIsdbCasResponseEvent_GetDataLength_Proxy(
-    IESIsdbCasResponseEvent* This,
-    DWORD *pRequestLength);
-void __RPC_STUB IESIsdbCasResponseEvent_GetDataLength_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESIsdbCasResponseEvent_GetResponseData_Proxy(
-    IESIsdbCasResponseEvent* This,
-    SAFEARRAY **pbData);
-void __RPC_STUB IESIsdbCasResponseEvent_GetResponseData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESIsdbCasResponseEvent_INTERFACE_DEFINED__ */
 
@@ -17636,14 +15250,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IGpnvsCommonBase_GetValueUpdateName_Proxy(
-    IGpnvsCommonBase* This,
-    BSTR *pbstrName);
-void __RPC_STUB IGpnvsCommonBase_GetValueUpdateName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IGpnvsCommonBase_INTERFACE_DEFINED__ */
 
@@ -17734,21 +15340,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESEventFactory_CreateESEvent_Proxy(
-    IESEventFactory* This,
-    IUnknown *pServiceProvider,
-    DWORD dwEventId,
-    GUID guidEventType,
-    DWORD dwEventDataLength,
-    BYTE *pEventData,
-    BSTR bstrBaseUrl,
-    IUnknown *pInitContext,
-    IESEvent **ppESEvent);
-void __RPC_STUB IESEventFactory_CreateESEvent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESEventFactory_INTERFACE_DEFINED__ */
 
@@ -17978,94 +15569,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetCallersId_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    DWORD *pdwCallersId);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetCallersId_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetFileName_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    BSTR *pbstrFilename);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetFileName_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_IsRenewalSuccessful_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    WINBOOL *pfRenewalSuccessful);
-void __RPC_STUB IESLicenseRenewalResultEvent_IsRenewalSuccessful_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_IsCheckEntitlementCallRequired_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    WINBOOL *pfCheckEntTokenCallNeeded);
-void __RPC_STUB IESLicenseRenewalResultEvent_IsCheckEntitlementCallRequired_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetDescrambledStatus_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    DWORD *pDescrambledStatus);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetDescrambledStatus_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetRenewalResultCode_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    DWORD *pdwRenewalResultCode);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetRenewalResultCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetCASFailureCode_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    DWORD *pdwCASFailureCode);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetCASFailureCode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetRenewalHResult_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    HRESULT *phr);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetRenewalHResult_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetEntitlementTokenLength_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    DWORD *pdwLength);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetEntitlementTokenLength_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetEntitlementToken_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    SAFEARRAY **pbData);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetEntitlementToken_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESLicenseRenewalResultEvent_GetExpiryDate_Proxy(
-    IESLicenseRenewalResultEvent* This,
-    DWORD64 *pqwExpiryDate);
-void __RPC_STUB IESLicenseRenewalResultEvent_GetExpiryDate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESLicenseRenewalResultEvent_INTERFACE_DEFINED__ */
 
@@ -18240,54 +15743,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_GetTunerId_Proxy(
-    IESFileExpiryDateEvent* This,
-    GUID *pguidTunerId);
-void __RPC_STUB IESFileExpiryDateEvent_GetTunerId_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_GetExpiryDate_Proxy(
-    IESFileExpiryDateEvent* This,
-    DWORD64 *pqwExpiryDate);
-void __RPC_STUB IESFileExpiryDateEvent_GetExpiryDate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_GetFinalExpiryDate_Proxy(
-    IESFileExpiryDateEvent* This,
-    DWORD64 *pqwExpiryDate);
-void __RPC_STUB IESFileExpiryDateEvent_GetFinalExpiryDate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_GetMaxRenewalCount_Proxy(
-    IESFileExpiryDateEvent* This,
-    DWORD *dwMaxRenewalCount);
-void __RPC_STUB IESFileExpiryDateEvent_GetMaxRenewalCount_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_IsEntitlementTokenPresent_Proxy(
-    IESFileExpiryDateEvent* This,
-    WINBOOL *pfEntTokenPresent);
-void __RPC_STUB IESFileExpiryDateEvent_IsEntitlementTokenPresent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESFileExpiryDateEvent_DoesExpireAfterFirstUse_Proxy(
-    IESFileExpiryDateEvent* This,
-    WINBOOL *pfExpireAfterFirstUse);
-void __RPC_STUB IESFileExpiryDateEvent_DoesExpireAfterFirstUse_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESFileExpiryDateEvent_INTERFACE_DEFINED__ */
 
@@ -18366,15 +15821,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESEvents_OnESEventReceived_Proxy(
-    IESEvents* This,
-    GUID guidEventType,
-    IESEvent *pESEvent);
-void __RPC_STUB IESEvents_OnESEventReceived_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESEvents_INTERFACE_DEFINED__ */
 
@@ -18451,14 +15897,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESEventService_FireESEvent_Proxy(
-    IESEventService* This,
-    IESEvent *pESEvent);
-void __RPC_STUB IESEventService_FireESEvent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESEventService_INTERFACE_DEFINED__ */
 
@@ -18588,52 +16026,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_SetParent_Proxy(
-    IESEventServiceConfiguration* This,
-    IESEventService *pEventService);
-void __RPC_STUB IESEventServiceConfiguration_SetParent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_RemoveParent_Proxy(
-    IESEventServiceConfiguration* This);
-void __RPC_STUB IESEventServiceConfiguration_RemoveParent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_SetOwner_Proxy(
-    IESEventServiceConfiguration* This,
-    IESEvents *pESEvents);
-void __RPC_STUB IESEventServiceConfiguration_SetOwner_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_RemoveOwner_Proxy(
-    IESEventServiceConfiguration* This);
-void __RPC_STUB IESEventServiceConfiguration_RemoveOwner_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_SetGraph_Proxy(
-    IESEventServiceConfiguration* This,
-    IFilterGraph *pGraph);
-void __RPC_STUB IESEventServiceConfiguration_SetGraph_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IESEventServiceConfiguration_RemoveGraph_Proxy(
-    IESEventServiceConfiguration* This,
-    IFilterGraph *pGraph);
-void __RPC_STUB IESEventServiceConfiguration_RemoveGraph_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IESEventServiceConfiguration_INTERFACE_DEFINED__ */
 
@@ -18710,14 +16102,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBroadcastEvent_Fire_Proxy(
-    IBroadcastEvent* This,
-    GUID EventID);
-void __RPC_STUB IBroadcastEvent_Fire_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBroadcastEvent_INTERFACE_DEFINED__ */
 
@@ -18813,18 +16197,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBroadcastEventEx_FireEx_Proxy(
-    IBroadcastEventEx* This,
-    GUID EventID,
-    ULONG Param1,
-    ULONG Param2,
-    ULONG Param3,
-    ULONG Param4);
-void __RPC_STUB IBroadcastEventEx_FireEx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBroadcastEventEx_INTERFACE_DEFINED__ */
 
@@ -18913,22 +16285,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IRegisterTuner_Register_Proxy(
-    IRegisterTuner* This,
-    ITuner *pTuner,
-    IGraphBuilder *pGraph);
-void __RPC_STUB IRegisterTuner_Register_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IRegisterTuner_Unregister_Proxy(
-    IRegisterTuner* This);
-void __RPC_STUB IRegisterTuner_Unregister_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IRegisterTuner_INTERFACE_DEFINED__ */
 
@@ -19074,61 +16430,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDAComparable_CompareExact_Proxy(
-    IBDAComparable* This,
-    IDispatch *CompareTo,
-    LONG *Result);
-void __RPC_STUB IBDAComparable_CompareExact_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDAComparable_CompareEquivalent_Proxy(
-    IBDAComparable* This,
-    IDispatch *CompareTo,
-    DWORD dwFlags,
-    LONG *Result);
-void __RPC_STUB IBDAComparable_CompareEquivalent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDAComparable_HashExact_Proxy(
-    IBDAComparable* This,
-    INT64 *Result);
-void __RPC_STUB IBDAComparable_HashExact_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDAComparable_HashExactIncremental_Proxy(
-    IBDAComparable* This,
-    INT64 PartialResult,
-    INT64 *Result);
-void __RPC_STUB IBDAComparable_HashExactIncremental_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDAComparable_HashEquivalent_Proxy(
-    IBDAComparable* This,
-    DWORD dwFlags,
-    INT64 *Result);
-void __RPC_STUB IBDAComparable_HashEquivalent_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IBDAComparable_HashEquivalentIncremental_Proxy(
-    IBDAComparable* This,
-    INT64 PartialResult,
-    DWORD dwFlags,
-    INT64 *Result);
-void __RPC_STUB IBDAComparable_HashEquivalentIncremental_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDAComparable_INTERFACE_DEFINED__ */
 
@@ -19237,29 +16538,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPersistTuneXml_InitNew_Proxy(
-    IPersistTuneXml* This);
-void __RPC_STUB IPersistTuneXml_InitNew_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistTuneXml_Load_Proxy(
-    IPersistTuneXml* This,
-    VARIANT varValue);
-void __RPC_STUB IPersistTuneXml_Load_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IPersistTuneXml_Save_Proxy(
-    IPersistTuneXml* This,
-    VARIANT *pvarFragment);
-void __RPC_STUB IPersistTuneXml_Save_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPersistTuneXml_INTERFACE_DEFINED__ */
 
@@ -19338,15 +16616,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPersistTuneXmlUtility_Deserialize_Proxy(
-    IPersistTuneXmlUtility* This,
-    VARIANT varValue,
-    IUnknown **ppObject);
-void __RPC_STUB IPersistTuneXmlUtility_Deserialize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPersistTuneXmlUtility_INTERFACE_DEFINED__ */
 
@@ -19437,15 +16706,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IPersistTuneXmlUtility2_Serialize_Proxy(
-    IPersistTuneXmlUtility2* This,
-    ITuneRequest *piTuneRequest,
-    BSTR *pString);
-void __RPC_STUB IPersistTuneXmlUtility2_Serialize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IPersistTuneXmlUtility2_INTERFACE_DEFINED__ */
 
@@ -19524,15 +16784,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IBDACreateTuneRequestEx_CreateTuneRequestEx_Proxy(
-    IBDACreateTuneRequestEx* This,
-    REFCLSID TuneRequestIID,
-    ITuneRequest **TuneRequest);
-void __RPC_STUB IBDACreateTuneRequestEx_CreateTuneRequestEx_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IBDACreateTuneRequestEx_INTERFACE_DEFINED__ */
 
diff --git a/mingw-w64-headers/include/unknwn.h b/mingw-w64-headers/include/unknwn.h
index f3942e9..051c5ec 100644
--- a/mingw-w64-headers/include/unknwn.h
+++ b/mingw-w64-headers/include/unknwn.h
@@ -154,29 +154,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(
-    IUnknown* This,
-    REFIID riid,
-    void **ppvObject);
-void __RPC_STUB IUnknown_QueryInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(
-    IUnknown* This);
-void __RPC_STUB IUnknown_AddRef_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(
-    IUnknown* This);
-void __RPC_STUB IUnknown_Release_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __IUnknown_INTERFACE_DEFINED__ */
 
@@ -308,50 +285,6 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE AsyncIUnknown_Begin_QueryInterface_Proxy(
-    AsyncIUnknown* This,
-    REFIID riid);
-void __RPC_STUB AsyncIUnknown_Begin_QueryInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIUnknown_Finish_QueryInterface_Proxy(
-    AsyncIUnknown* This,
-    void **ppvObject);
-void __RPC_STUB AsyncIUnknown_Finish_QueryInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIUnknown_Begin_AddRef_Proxy(
-    AsyncIUnknown* This);
-void __RPC_STUB AsyncIUnknown_Begin_AddRef_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-ULONG STDMETHODCALLTYPE AsyncIUnknown_Finish_AddRef_Proxy(
-    AsyncIUnknown* This);
-void __RPC_STUB AsyncIUnknown_Finish_AddRef_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE AsyncIUnknown_Begin_Release_Proxy(
-    AsyncIUnknown* This);
-void __RPC_STUB AsyncIUnknown_Begin_Release_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-ULONG STDMETHODCALLTYPE AsyncIUnknown_Finish_Release_Proxy(
-    AsyncIUnknown* This);
-void __RPC_STUB AsyncIUnknown_Finish_Release_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
 
 #endif  /* __AsyncIUnknown_INTERFACE_DEFINED__ */
 
