|  | /** | 
|  | * 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__ */ | 
|  |  |