summaryrefslogtreecommitdiff
path: root/portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h
diff options
context:
space:
mode:
Diffstat (limited to 'portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h')
-rw-r--r--portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h638
1 files changed, 638 insertions, 0 deletions
diff --git a/portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h b/portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h
new file mode 100644
index 0000000..fcbc6b3
--- /dev/null
+++ b/portaudio/src/hostapi/wasapi/mingw-include/ksproxy.h
@@ -0,0 +1,638 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef __KSPROXY__
+#define __KSPROXY__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#undef KSDDKAPI
+#ifdef _KSDDK_
+#define KSDDKAPI
+#else
+#define KSDDKAPI DECLSPEC_IMPORT
+#endif
+
+#define STATIC_IID_IKsObject \
+ 0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
+
+#define STATIC_IID_IKsPinEx \
+ 0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
+
+#define STATIC_IID_IKsPin \
+ 0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
+
+#define STATIC_IID_IKsPinPipe \
+ 0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
+
+#define STATIC_IID_IKsDataTypeHandler \
+ 0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
+
+#define STATIC_IID_IKsDataTypeCompletion \
+ 0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
+
+#define STATIC_IID_IKsInterfaceHandler \
+ 0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
+
+#define STATIC_IID_IKsClockPropertySet \
+ 0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
+
+#define STATIC_IID_IKsAllocator \
+ 0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
+
+#define STATIC_IID_IKsAllocatorEx \
+ 0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
+
+#ifndef STATIC_IID_IKsPropertySet
+#define STATIC_IID_IKsPropertySet \
+ 0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
+#endif
+
+#define STATIC_IID_IKsTopology \
+ 0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
+
+#ifndef STATIC_IID_IKsControl
+#define STATIC_IID_IKsControl \
+ 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
+#endif
+
+#define STATIC_IID_IKsAggregateControl \
+ 0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
+
+#define STATIC_CLSID_Proxy \
+ 0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
+
+#ifdef _KS_
+
+DEFINE_GUIDEX(IID_IKsObject);
+
+DEFINE_GUIDEX(IID_IKsPin);
+
+DEFINE_GUIDEX(IID_IKsPinEx);
+
+DEFINE_GUIDEX(IID_IKsPinPipe);
+
+DEFINE_GUIDEX(IID_IKsDataTypeHandler);
+
+DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
+
+DEFINE_GUIDEX(IID_IKsInterfaceHandler);
+
+DEFINE_GUIDEX(IID_IKsClockPropertySet);
+
+DEFINE_GUIDEX(IID_IKsAllocator);
+
+DEFINE_GUIDEX(IID_IKsAllocatorEx);
+
+#define IID_IKsQualityForwarder KSCATEGORY_QUALITY
+#define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
+
+typedef enum {
+ KsAllocatorMode_User,
+ KsAllocatorMode_Kernel
+} KSALLOCATORMODE;
+
+typedef enum {
+ FramingProp_Uninitialized,
+ FramingProp_None,
+ FramingProp_Old,
+ FramingProp_Ex
+} FRAMING_PROP;
+
+typedef FRAMING_PROP *PFRAMING_PROP;
+
+typedef enum {
+ Framing_Cache_Update,
+ Framing_Cache_ReadLast,
+ Framing_Cache_ReadOrig,
+ Framing_Cache_Write
+} FRAMING_CACHE_OPS;
+
+typedef struct {
+ LONGLONG MinTotalNominator;
+ LONGLONG MaxTotalNominator;
+ LONGLONG TotalDenominator;
+} OPTIMAL_WEIGHT_TOTALS;
+
+typedef struct IPin IPin;
+typedef struct IKsPin IKsPin;
+typedef struct IKsAllocator IKsAllocator;
+typedef struct IKsAllocatorEx IKsAllocatorEx;
+
+#define AllocatorStrategy_DontCare 0
+#define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001
+#define AllocatorStrategy_MinimizeFrameSize 0x00000002
+#define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004
+#define AllocatorStrategy_MaximizeSpeed 0x00000008
+
+#define PipeFactor_None 0
+#define PipeFactor_UserModeUpstream 0x00000001
+#define PipeFactor_UserModeDownstream 0x00000002
+#define PipeFactor_MemoryTypes 0x00000004
+#define PipeFactor_Flags 0x00000008
+#define PipeFactor_PhysicalRanges 0x00000010
+#define PipeFactor_OptimalRanges 0x00000020
+#define PipeFactor_FixedCompression 0x00000040
+#define PipeFactor_UnknownCompression 0x00000080
+
+#define PipeFactor_Buffers 0x00000100
+#define PipeFactor_Align 0x00000200
+#define PipeFactor_PhysicalEnd 0x00000400
+#define PipeFactor_LogicalEnd 0x00000800
+
+typedef enum {
+ PipeState_DontCare,
+ PipeState_RangeNotFixed,
+ PipeState_RangeFixed,
+ PipeState_CompressionUnknown,
+ PipeState_Finalized
+} PIPE_STATE;
+
+typedef struct _PIPE_DIMENSIONS {
+ KS_COMPRESSION AllocatorPin;
+ KS_COMPRESSION MaxExpansionPin;
+ KS_COMPRESSION EndPin;
+} PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
+
+typedef enum {
+ Pipe_Allocator_None,
+ Pipe_Allocator_FirstPin,
+ Pipe_Allocator_LastPin,
+ Pipe_Allocator_MiddlePin
+} PIPE_ALLOCATOR_PLACE;
+
+typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
+
+typedef enum {
+ KS_MemoryTypeDontCare = 0,
+ KS_MemoryTypeKernelPaged,
+ KS_MemoryTypeKernelNonPaged,
+ KS_MemoryTypeDeviceHostMapped,
+ KS_MemoryTypeDeviceSpecific,
+ KS_MemoryTypeUser,
+ KS_MemoryTypeAnyHost
+} KS_LogicalMemoryType;
+
+typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
+
+typedef struct _PIPE_TERMINATION {
+ ULONG Flags;
+ ULONG OutsideFactors;
+ ULONG Weigth;
+ KS_FRAMING_RANGE PhysicalRange;
+ KS_FRAMING_RANGE_WEIGHTED OptimalRange;
+ KS_COMPRESSION Compression;
+} PIPE_TERMINATION;
+
+typedef struct _ALLOCATOR_PROPERTIES_EX
+{
+ long cBuffers;
+ long cbBuffer;
+ long cbAlign;
+ long cbPrefix;
+
+ GUID MemoryType;
+ GUID BusType;
+ PIPE_STATE State;
+ PIPE_TERMINATION Input;
+ PIPE_TERMINATION Output;
+ ULONG Strategy;
+ ULONG Flags;
+ ULONG Weight;
+ KS_LogicalMemoryType LogicalMemoryType;
+ PIPE_ALLOCATOR_PLACE AllocatorPlace;
+ PIPE_DIMENSIONS Dimensions;
+ KS_FRAMING_RANGE PhysicalRange;
+ IKsAllocatorEx *PrevSegment;
+ ULONG CountNextSegments;
+ IKsAllocatorEx **NextSegments;
+ ULONG InsideFactors;
+ ULONG NumberPins;
+} ALLOCATOR_PROPERTIES_EX;
+
+typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
+
+#ifdef __STREAMS__
+
+struct IKsClockPropertySet;
+#undef INTERFACE
+#define INTERFACE IKsClockPropertySet
+DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)
+{
+ STDMETHOD(KsGetTime) (THIS_
+ LONGLONG *Time
+ ) PURE;
+ STDMETHOD(KsSetTime) (THIS_
+ LONGLONG Time
+ ) PURE;
+ STDMETHOD(KsGetPhysicalTime) (THIS_
+ LONGLONG *Time
+ ) PURE;
+ STDMETHOD(KsSetPhysicalTime) (THIS_
+ LONGLONG Time
+ ) PURE;
+ STDMETHOD(KsGetCorrelatedTime) (THIS_
+ KSCORRELATED_TIME *CorrelatedTime
+ ) PURE;
+ STDMETHOD(KsSetCorrelatedTime) (THIS_
+ KSCORRELATED_TIME *CorrelatedTime
+ ) PURE;
+ STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_
+ KSCORRELATED_TIME *CorrelatedTime
+ ) PURE;
+ STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_
+ KSCORRELATED_TIME *CorrelatedTime
+ ) PURE;
+ STDMETHOD(KsGetResolution) (THIS_
+ KSRESOLUTION *Resolution
+ ) PURE;
+ STDMETHOD(KsGetState) (THIS_
+ KSSTATE *State
+ ) PURE;
+};
+
+struct IKsAllocator;
+#undef INTERFACE
+#define INTERFACE IKsAllocator
+DECLARE_INTERFACE_(IKsAllocator,IUnknown)
+{
+ STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
+ STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
+ STDMETHOD(KsGetAllocatorStatus) (THIS_
+ PKSSTREAMALLOCATOR_STATUS AllocatorStatus
+ ) PURE;
+ STDMETHOD_(VOID,KsSetAllocatorMode) (THIS_
+ KSALLOCATORMODE Mode
+ ) PURE;
+};
+
+struct IKsAllocatorEx;
+#undef INTERFACE
+#define INTERFACE IKsAllocatorEx
+DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)
+{
+ STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
+ STDMETHOD_(VOID,KsSetProperties) (THIS_
+ PALLOCATOR_PROPERTIES_EX
+ ) PURE;
+ STDMETHOD_(VOID,KsSetAllocatorHandle) (THIS_
+ HANDLE AllocatorHandle
+ ) PURE;
+ STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_
+ IKsPin *KsPin
+ ) PURE;
+};
+
+typedef enum {
+ KsPeekOperation_PeekOnly,
+ KsPeekOperation_AddRef
+} KSPEEKOPERATION;
+
+typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
+struct IKsPin;
+
+#undef INTERFACE
+#define INTERFACE IKsPin
+DECLARE_INTERFACE_(IKsPin,IUnknown)
+{
+ STDMETHOD(KsQueryMediums) (THIS_
+ PKSMULTIPLE_ITEM *MediumList
+ ) PURE;
+ STDMETHOD(KsQueryInterfaces) (THIS_
+ PKSMULTIPLE_ITEM *InterfaceList
+ ) PURE;
+ STDMETHOD(KsCreateSinkPinHandle) (THIS_
+ KSPIN_INTERFACE& Interface,
+ KSPIN_MEDIUM& Medium
+ ) PURE;
+ STDMETHOD(KsGetCurrentCommunication) (THIS_
+ KSPIN_COMMUNICATION *Communication,
+ KSPIN_INTERFACE *Interface,
+ KSPIN_MEDIUM *Medium
+ ) PURE;
+ STDMETHOD(KsPropagateAcquire) (THIS) PURE;
+ STDMETHOD(KsDeliver) (THIS_
+ IMediaSample *Sample,
+ ULONG Flags
+ ) PURE;
+ STDMETHOD(KsMediaSamplesCompleted) (THIS_
+ PKSSTREAM_SEGMENT StreamSegment
+ ) PURE;
+ STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_
+ KSPEEKOPERATION Operation
+ ) PURE;
+ STDMETHOD(KsReceiveAllocator) (THIS_
+ IMemAllocator *MemAllocator
+ ) PURE;
+ STDMETHOD(KsRenegotiateAllocator) (THIS) PURE;
+ STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
+ STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
+ STDMETHOD(KsQualityNotify) (THIS_
+ ULONG Proportion,
+ REFERENCE_TIME TimeDelta
+ ) PURE;
+};
+
+struct IKsPinEx;
+#undef INTERFACE
+#define INTERFACE IKsPinEx
+DECLARE_INTERFACE_(IKsPinEx,IKsPin)
+{
+ STDMETHOD_(VOID,KsNotifyError) (THIS_
+ IMediaSample *Sample,
+ HRESULT hr
+ ) PURE;
+};
+
+struct IKsPinPipe;
+#undef INTERFACE
+#define INTERFACE IKsPinPipe
+DECLARE_INTERFACE_(IKsPinPipe,IUnknown)
+{
+ STDMETHOD(KsGetPinFramingCache) (THIS_
+ PKSALLOCATOR_FRAMING_EX *FramingEx,
+ PFRAMING_PROP FramingProp,
+ FRAMING_CACHE_OPS Option
+ ) PURE;
+ STDMETHOD(KsSetPinFramingCache) (THIS_
+ PKSALLOCATOR_FRAMING_EX FramingEx,
+ PFRAMING_PROP FramingProp,
+ FRAMING_CACHE_OPS Option
+ ) PURE;
+ STDMETHOD_(IPin*,KsGetConnectedPin) (THIS) PURE;
+ STDMETHOD_(IKsAllocatorEx*,KsGetPipe) (THIS_
+ KSPEEKOPERATION Operation
+ ) PURE;
+ STDMETHOD(KsSetPipe) (THIS_
+ IKsAllocatorEx *KsAllocator
+ ) PURE;
+ STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
+ STDMETHOD(KsSetPipeAllocatorFlag) (THIS_
+ ULONG Flag
+ ) PURE;
+ STDMETHOD_(GUID,KsGetPinBusCache) (THIS) PURE;
+ STDMETHOD(KsSetPinBusCache) (THIS_
+ GUID Bus
+ ) PURE;
+ STDMETHOD_(PWCHAR,KsGetPinName) (THIS) PURE;
+ STDMETHOD_(PWCHAR,KsGetFilterName) (THIS) PURE;
+};
+
+struct IKsPinFactory;
+#undef INTERFACE
+#define INTERFACE IKsPinFactory
+DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
+{
+ STDMETHOD(KsPinFactory) (THIS_
+ ULONG *PinFactory
+ ) PURE;
+};
+
+typedef enum {
+ KsIoOperation_Write,
+ KsIoOperation_Read
+} KSIOOPERATION;
+
+struct IKsDataTypeHandler;
+#undef INTERFACE
+#define INTERFACE IKsDataTypeHandler
+DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)
+{
+ STDMETHOD(KsCompleteIoOperation) (THIS_
+ IMediaSample *Sample,
+ PVOID StreamHeader,
+ KSIOOPERATION IoOperation,
+ WINBOOL Cancelled
+ ) PURE;
+ STDMETHOD(KsIsMediaTypeInRanges) (THIS_
+ PVOID DataRanges
+ ) PURE;
+ STDMETHOD(KsPrepareIoOperation) (THIS_
+ IMediaSample *Sample,
+ PVOID StreamHeader,
+ KSIOOPERATION IoOperation
+ ) PURE;
+ STDMETHOD(KsQueryExtendedSize) (THIS_
+ ULONG *ExtendedSize
+ ) PURE;
+ STDMETHOD(KsSetMediaType) (THIS_
+ const AM_MEDIA_TYPE *AmMediaType
+ ) PURE;
+};
+
+struct IKsDataTypeCompletion;
+#undef INTERFACE
+#define INTERFACE IKsDataTypeCompletion
+DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
+{
+ STDMETHOD(KsCompleteMediaType) (THIS_
+ HANDLE FilterHandle,
+ ULONG PinFactoryId,
+ AM_MEDIA_TYPE *AmMediaType
+ ) PURE;
+};
+
+struct IKsInterfaceHandler;
+#undef INTERFACE
+#define INTERFACE IKsInterfaceHandler
+DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)
+{
+ STDMETHOD(KsSetPin) (THIS_
+ IKsPin *KsPin
+ ) PURE;
+ STDMETHOD(KsProcessMediaSamples) (THIS_
+ IKsDataTypeHandler *KsDataTypeHandler,
+ IMediaSample **SampleList,
+ PLONG SampleCount,
+ KSIOOPERATION IoOperation,
+ PKSSTREAM_SEGMENT *StreamSegment
+ ) PURE;
+ STDMETHOD(KsCompleteIo) (THIS_
+ PKSSTREAM_SEGMENT StreamSegment
+ ) PURE;
+};
+
+typedef struct _KSSTREAM_SEGMENT {
+ IKsInterfaceHandler *KsInterfaceHandler;
+ IKsDataTypeHandler *KsDataTypeHandler;
+ KSIOOPERATION IoOperation;
+ HANDLE CompletionEvent;
+} KSSTREAM_SEGMENT;
+
+struct IKsObject;
+#undef INTERFACE
+#define INTERFACE IKsObject
+DECLARE_INTERFACE_(IKsObject,IUnknown)
+{
+ STDMETHOD_(HANDLE,KsGetObjectHandle) (THIS) PURE;
+};
+
+struct IKsQualityForwarder;
+#undef INTERFACE
+#define INTERFACE IKsQualityForwarder
+DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
+{
+ STDMETHOD_(VOID,KsFlushClient) (THIS_
+ IKsPin *Pin
+ ) PURE;
+};
+
+struct IKsNotifyEvent;
+#undef INTERFACE
+#define INTERFACE IKsNotifyEvent
+DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)
+{
+ STDMETHOD(KsNotifyEvent) (THIS_
+ ULONG Event,
+ ULONG_PTR lParam1,
+ ULONG_PTR lParam2
+ ) PURE;
+};
+
+KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
+KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
+KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
+KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
+KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
+KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
+#endif /* __STREAMS__ */
+
+#ifndef _IKsPropertySet_
+DEFINE_GUIDEX(IID_IKsPropertySet);
+#endif
+
+#ifndef _IKsControl_
+DEFINE_GUIDEX(IID_IKsControl);
+#endif
+
+DEFINE_GUIDEX(IID_IKsAggregateControl);
+#ifndef _IKsTopology_
+DEFINE_GUIDEX(IID_IKsTopology);
+#endif
+DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
+#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
+
+#else /* _KS_ */
+
+#ifndef _IKsPropertySet_
+DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
+#endif
+
+DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
+
+#endif /* _KS_ */
+
+#ifndef _IKsPropertySet_
+#define _IKsPropertySet_
+#define KSPROPERTY_SUPPORT_GET 1
+#define KSPROPERTY_SUPPORT_SET 2
+
+#ifdef DECLARE_INTERFACE_
+struct IKsPropertySet;
+#undef INTERFACE
+#define INTERFACE IKsPropertySet
+DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
+{
+ STDMETHOD(Set) (THIS_
+ REFGUID PropSet,
+ ULONG Id,
+ LPVOID InstanceData,
+ ULONG InstanceLength,
+ LPVOID PropertyData,
+ ULONG DataLength
+ ) PURE;
+ STDMETHOD(Get) (THIS_
+ REFGUID PropSet,
+ ULONG Id,
+ LPVOID InstanceData,
+ ULONG InstanceLength,
+ LPVOID PropertyData,
+ ULONG DataLength,
+ ULONG *BytesReturned
+ ) PURE;
+ STDMETHOD(QuerySupported) (THIS_
+ REFGUID PropSet,
+ ULONG Id,
+ ULONG *TypeSupport
+ ) PURE;
+};
+#endif /* DECLARE_INTERFACE_ */
+#endif /* _IKsPropertySet_ */
+
+#ifndef _IKsControl_
+#define _IKsControl_
+#ifdef DECLARE_INTERFACE_
+struct IKsControl;
+#undef INTERFACE
+#define INTERFACE IKsControl
+DECLARE_INTERFACE_(IKsControl,IUnknown)
+{
+ STDMETHOD(KsProperty) (THIS_
+ PKSPROPERTY Property,
+ ULONG PropertyLength,
+ LPVOID PropertyData,
+ ULONG DataLength,
+ ULONG *BytesReturned
+ ) PURE;
+ STDMETHOD(KsMethod) (THIS_
+ PKSMETHOD Method,
+ ULONG MethodLength,
+ LPVOID MethodData,
+ ULONG DataLength,
+ ULONG *BytesReturned
+ ) PURE;
+ STDMETHOD(KsEvent) (THIS_
+ PKSEVENT Event,
+ ULONG EventLength,
+ LPVOID EventData,
+ ULONG DataLength,
+ ULONG *BytesReturned
+ ) PURE;
+};
+#endif /* DECLARE_INTERFACE_ */
+#endif /* _IKsControl_ */
+
+#ifdef DECLARE_INTERFACE_
+struct IKsAggregateControl;
+#undef INTERFACE
+#define INTERFACE IKsAggregateControl
+DECLARE_INTERFACE_(IKsAggregateControl,IUnknown)
+{
+ STDMETHOD(KsAddAggregate) (THIS_
+ REFGUID AggregateClass
+ ) PURE;
+ STDMETHOD(KsRemoveAggregate) (THIS_
+ REFGUID AggregateClass
+ ) PURE;
+};
+#endif /* DECLARE_INTERFACE_ */
+
+#ifndef _IKsTopology_
+#define _IKsTopology_
+#ifdef DECLARE_INTERFACE_
+struct IKsTopology;
+#undef INTERFACE
+#define INTERFACE IKsTopology
+DECLARE_INTERFACE_(IKsTopology,IUnknown)
+{
+ STDMETHOD(CreateNodeInstance) (THIS_
+ ULONG NodeId,
+ ULONG Flags,
+ ACCESS_MASK DesiredAccess,
+ IUnknown *UnkOuter,
+ REFGUID InterfaceId,
+ LPVOID *Interface
+ ) PURE;
+};
+#endif /* DECLARE_INTERFACE_ */
+#endif /* _IKsTopology_ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __KSPROXY__ */