📄 ksproxy.h
字号:
interface DECLSPEC_UUID("7bb38260-d19c-11d2-b38a-00a0c95ec22e") IKsPinEx;
#undef INTERFACE
#define INTERFACE IKsPinEx
DECLARE_INTERFACE_(IKsPinEx, IKsPin)
{
STDMETHOD_(VOID, KsNotifyError)(
THIS_
IMediaSample* Sample,
HRESULT hr
) PURE;
};
interface DECLSPEC_UUID("e539cd90-a8b4-11d1-8189-00a0c9062802") 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;
//
// very useful methods for tracing.
//
STDMETHOD_(PWCHAR, KsGetPinName)(
THIS
) PURE;
STDMETHOD_(PWCHAR, KsGetFilterName)(
THIS
) PURE;
};
interface DECLSPEC_UUID("CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196") IKsPinFactory;
#undef INTERFACE
#define INTERFACE IKsPinFactory
DECLARE_INTERFACE_(IKsPinFactory, IUnknown)
{
STDMETHOD(KsPinFactory)(
THIS_
ULONG* PinFactory
) PURE;
};
typedef enum {
KsIoOperation_Write,
KsIoOperation_Read
} KSIOOPERATION;
interface DECLSPEC_UUID("5ffbaa02-49a3-11d0-9f36-00aa00a216a1") IKsDataTypeHandler;
#undef INTERFACE
#define INTERFACE IKsDataTypeHandler
DECLARE_INTERFACE_(IKsDataTypeHandler, IUnknown)
{
STDMETHOD(KsCompleteIoOperation)(
THIS_
IMediaSample *Sample,
PVOID StreamHeader,
KSIOOPERATION IoOperation,
BOOL 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;
};
interface DECLSPEC_UUID("827D1A0E-0F73-11D2-B27A-00A0C9223196") IKsDataTypeCompletion;
#undef INTERFACE
#define INTERFACE IKsDataTypeCompletion
DECLARE_INTERFACE_(IKsDataTypeCompletion, IUnknown)
{
STDMETHOD(KsCompleteMediaType)(
THIS_
HANDLE FilterHandle,
ULONG PinFactoryId,
AM_MEDIA_TYPE* AmMediaType
) PURE;
};
interface DECLSPEC_UUID("D3ABC7E0-9A61-11d0-A40D-00A0C9223196") 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;
};
//
// This structure definition is the common header required by the proxy to
// dispatch the stream segment to the interface handler. Interface handlers
// will create extended structures to include other information such as
// media samples, extended header size and so on.
//
typedef struct _KSSTREAM_SEGMENT {
IKsInterfaceHandler *KsInterfaceHandler;
IKsDataTypeHandler *KsDataTypeHandler;
KSIOOPERATION IoOperation;
HANDLE CompletionEvent;
} KSSTREAM_SEGMENT;
interface DECLSPEC_UUID("423c13a2-2070-11d0-9ef7-00aa00a216a1") IKsObject;
#undef INTERFACE
#define INTERFACE IKsObject
DECLARE_INTERFACE_(IKsObject, IUnknown)
{
STDMETHOD_(HANDLE, KsGetObjectHandle)(
THIS
) PURE;
};
interface DECLSPEC_UUID("97ebaacb-95bd-11d0-a3ea-00a0c9223196") IKsQualityForwarder;
#undef INTERFACE
#define INTERFACE IKsQualityForwarder
DECLARE_INTERFACE_(IKsQualityForwarder, IKsObject)
{
STDMETHOD_(VOID, KsFlushClient)(
THIS_
IKsPin* Pin
) PURE;
};
KSDDKAPI
HRESULT
WINAPI
KsResolveRequiredAttributes(
PKSDATARANGE DataRange,
PKSMULTIPLE_ITEM Attributes OPTIONAL
);
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_
#if !defined(__cplusplus) || _MSC_VER < 1100
DEFINE_GUIDEX(IID_IKsPropertySet);
#endif // !defined(__cplusplus) || _MSC_VER < 1100
#endif // _IKsPropertySet_
#ifndef _IKsControl_
#if !defined(__cplusplus) || _MSC_VER < 1100
DEFINE_GUIDEX(IID_IKsControl);
#endif // !defined(__cplusplus) || _MSC_VER < 1100
#endif // _IKsControl_
#if !defined(__cplusplus) || _MSC_VER < 1100
DEFINE_GUIDEX(IID_IKsAggregateControl);
#endif // !defined(__cplusplus) || _MSC_VER < 1100
#ifndef _IKsTopology_
#if !defined(__cplusplus) || _MSC_VER < 1100
DEFINE_GUIDEX(IID_IKsTopology);
#endif // !defined(__cplusplus) || _MSC_VER < 1100
#endif // _IKsTopology_
DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196", CLSID_Proxy);
#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
#else // !_KS_
#ifndef _IKsPropertySet_
#if !defined(__cplusplus) || _MSC_VER < 1100
DEFINE_GUID(IID_IKsPropertySet, STATIC_IID_IKsPropertySet);
#endif // !defined(__cplusplus) || _MSC_VER < 1100
#endif // _IKsPropertySet_
#if !defined(__cplusplus) || _MSC_VER < 1100
DEFINE_GUID(CLSID_Proxy, STATIC_CLSID_Proxy);
#else // defined(__cplusplus) && _MSC_VER >= 1100
DECLSPEC_UUID("17CCA71B-ECD7-11D0-B908-00A0C9223196") CLSID_Proxy;
#endif // defined(__cplusplus) && _MSC_VER >= 1100
#endif // !_KS_
#ifndef _IKsPropertySet_
#define _IKsPropertySet_
#define KSPROPERTY_SUPPORT_GET 1
#define KSPROPERTY_SUPPORT_SET 2
#ifdef DECLARE_INTERFACE_
interface DECLSPEC_UUID("31EFAC30-515C-11d0-A9AA-00aa0061be93") IKsPropertySet;
#undef INTERFACE
#define INTERFACE IKsPropertySet
DECLARE_INTERFACE_(IKsPropertySet, IUnknown)
{
STDMETHOD(Set)(
THIS_
IN REFGUID PropSet,
IN ULONG Id,
IN LPVOID InstanceData,
IN ULONG InstanceLength,
IN LPVOID PropertyData,
IN ULONG DataLength
) PURE;
STDMETHOD(Get)(
THIS_
IN REFGUID PropSet,
IN ULONG Id,
IN LPVOID InstanceData,
IN ULONG InstanceLength,
OUT LPVOID PropertyData,
IN ULONG DataLength,
OUT ULONG* BytesReturned
) PURE;
STDMETHOD(QuerySupported)(
THIS_
IN REFGUID PropSet,
IN ULONG Id,
OUT ULONG* TypeSupport
) PURE;
};
#endif // DECLARE_INTERFACE_
#endif // _IKsPropertySet_
#ifndef _IKsControl_
#define _IKsControl_
#ifdef DECLARE_INTERFACE_
interface DECLSPEC_UUID("28F54685-06FD-11D2-B27A-00A0C9223196") IKsControl;
#undef INTERFACE
#define INTERFACE IKsControl
DECLARE_INTERFACE_(IKsControl, IUnknown)
{
STDMETHOD(KsProperty)(
THIS_
IN PKSPROPERTY Property,
IN ULONG PropertyLength,
IN OUT LPVOID PropertyData,
IN ULONG DataLength,
OUT ULONG* BytesReturned
) PURE;
STDMETHOD(KsMethod)(
THIS_
IN PKSMETHOD Method,
IN ULONG MethodLength,
IN OUT LPVOID MethodData,
IN ULONG DataLength,
OUT ULONG* BytesReturned
) PURE;
STDMETHOD(KsEvent)(
THIS_
IN PKSEVENT Event OPTIONAL,
IN ULONG EventLength,
IN OUT LPVOID EventData,
IN ULONG DataLength,
OUT ULONG* BytesReturned
) PURE;
};
#endif // DECLARE_INTERFACE_
#endif // _IKsControl_
#ifdef DECLARE_INTERFACE_
interface DECLSPEC_UUID("7F40EAC0-3947-11D2-874E-00A0C9223196") IKsAggregateControl;
#undef INTERFACE
#define INTERFACE IKsAggregateControl
DECLARE_INTERFACE_(IKsAggregateControl, IUnknown)
{
STDMETHOD(KsAddAggregate)(
THIS_
IN REFGUID AggregateClass
) PURE;
STDMETHOD(KsRemoveAggregate)(
THIS_
IN REFGUID AggregateClass
) PURE;
};
#endif // DECLARE_INTERFACE_
#ifndef _IKsTopology_
#define _IKsTopology_
#ifdef DECLARE_INTERFACE_
interface DECLSPEC_UUID("28F54683-06FD-11D2-B27A-00A0C9223196") IKsTopology;
#undef INTERFACE
#define INTERFACE IKsTopology
DECLARE_INTERFACE_(IKsTopology, IUnknown)
{
STDMETHOD(CreateNodeInstance)(
THIS_
IN ULONG NodeId,
IN ULONG Flags,
IN ACCESS_MASK DesiredAccess,
IN IUnknown* UnkOuter OPTIONAL,
IN REFGUID InterfaceId,
OUT LPVOID* Interface
) PURE;
};
#endif // DECLARE_INTERFACE_
#endif // _IKsTopology_
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // __KSPROXY__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -