|  | /** | 
|  | * 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 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 | 
|  |  | 
|  | #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 | 
|  |  | 
|  | #ifndef _IKsPropertySet_ | 
|  | DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet); | 
|  | #endif | 
|  | DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy); | 
|  | #endif | 
|  |  | 
|  | #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 | 
|  | #endif | 
|  |  | 
|  | #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 | 
|  | #endif | 
|  |  | 
|  | #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 | 
|  |  | 
|  | #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 | 
|  | #endif | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  | #endif |