mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 02:05:08 +00:00
703 lines
18 KiB
C
703 lines
18 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the mingw-w64 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 \
|
|
0x423c13a2,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
|
|
|
|
#define STATIC_IID_IKsPinEx \
|
|
0x7bb38260,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
|
|
|
|
#define STATIC_IID_IKsPin \
|
|
0xb61178d1,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
|
|
|
|
#define STATIC_IID_IKsPinPipe \
|
|
0xe539cd90,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
|
|
|
|
#define STATIC_IID_IKsDataTypeHandler \
|
|
0x5ffbaa02,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
|
|
|
|
#define STATIC_IID_IKsDataTypeCompletion \
|
|
0x827D1A0E,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
|
|
|
|
#define STATIC_IID_IKsInterfaceHandler \
|
|
0xD3ABC7E0,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
|
|
|
|
#define STATIC_IID_IKsClockPropertySet \
|
|
0x5C5CBD84,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
|
|
|
|
#define STATIC_IID_IKsAllocator \
|
|
0x8da64899,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
|
|
|
|
#define STATIC_IID_IKsAllocatorEx \
|
|
0x091bb63a,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
|
|
|
|
#ifndef STATIC_IID_IKsPropertySet
|
|
#define STATIC_IID_IKsPropertySet \
|
|
0x31EFAC30,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
|
|
#endif
|
|
|
|
#define STATIC_IID_IKsTopology \
|
|
0x28F54683,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
|
|
|
|
#ifndef STATIC_IID_IKsControl
|
|
#define STATIC_IID_IKsControl \
|
|
0x28F54685,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
|
|
#endif
|
|
|
|
#define STATIC_IID_IKsAggregateControl \
|
|
0x7F40EAC0,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
|
|
|
|
#define STATIC_CLSID_Proxy \
|
|
0x17CCA71B,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
|
|
{
|
|
__LONG32 cBuffers;
|
|
__LONG32 cbBuffer;
|
|
__LONG32 cbAlign;
|
|
__LONG32 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;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsClockPropertySet,0x5c5cbd84,0xe755,0x11d0,0xac,0x18,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
|
#endif
|
|
|
|
#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;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsAllocator,0x8da64899,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a);
|
|
#endif
|
|
|
|
#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;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsAllocatorEx,0x091bb63a,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02);
|
|
#endif
|
|
|
|
#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;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsPin,0xb61178d1,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1);
|
|
#endif
|
|
|
|
#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;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsPinEx,0x7bb38260,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e);
|
|
#endif
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IKsPinEx
|
|
DECLARE_INTERFACE_(IKsPinEx,IKsPin)
|
|
{
|
|
STDMETHOD_(VOID,KsNotifyError) (THIS_
|
|
IMediaSample *Sample,
|
|
HRESULT hr
|
|
) PURE;
|
|
};
|
|
|
|
struct IKsPinPipe;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsPinPipe,0xe539cd90,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02);
|
|
#endif
|
|
|
|
#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;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsPinFactory,0xcd5ebe6b,0x8b6e,0x11d1,0x8a,0xe0,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
|
#endif
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IKsPinFactory
|
|
DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
|
|
{
|
|
STDMETHOD(KsPinFactory) (THIS_
|
|
ULONG *PinFactory
|
|
) PURE;
|
|
};
|
|
|
|
typedef enum {
|
|
KsIoOperation_Write,
|
|
KsIoOperation_Read
|
|
} KSIOOPERATION;
|
|
|
|
struct IKsDataTypeHandler;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsDataTypeHandler,0x5ffbaa02,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1);
|
|
#endif
|
|
|
|
#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;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsDataTypeCompletion,0x827d1a0e,0x0f73,0x11d2,0xb2,0x7a,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
|
#endif
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IKsDataTypeCompletion
|
|
DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
|
|
{
|
|
STDMETHOD(KsCompleteMediaType) (THIS_
|
|
HANDLE FilterHandle,
|
|
ULONG PinFactoryId,
|
|
AM_MEDIA_TYPE *AmMediaType
|
|
) PURE;
|
|
};
|
|
|
|
struct IKsInterfaceHandler;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsInterfaceHandler,0xd3abc7e0,0x9a61,0x11d0,0xa4,0x0d,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
|
#endif
|
|
|
|
#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;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsObject,0x423c13a2,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1);
|
|
#endif
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IKsObject
|
|
DECLARE_INTERFACE_(IKsObject,IUnknown)
|
|
{
|
|
STDMETHOD_(HANDLE,KsGetObjectHandle) (THIS) PURE;
|
|
};
|
|
|
|
struct IKsQualityForwarder;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsQualityForwarder,0x97ebaacb,0x95bd,0x11d0,0xa3,0xea,0x00,0xa0,0xc9,0x22,0x31,0x96);
|
|
#endif
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IKsQualityForwarder
|
|
DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
|
|
{
|
|
STDMETHOD_(VOID,KsFlushClient) (THIS_
|
|
IKsPin *Pin
|
|
) PURE;
|
|
};
|
|
|
|
struct IKsNotifyEvent;
|
|
|
|
#ifdef __CRT_UUID_DECL
|
|
__CRT_UUID_DECL(IKsNotifyEvent,0x412bd695,0xf84b,0x46c1,0xac,0x73,0x54,0x19,0x6d,0xbc,0x8f,0xa7);
|
|
#endif
|
|
|
|
#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__ */
|
|
|