source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ksproxy.h

Last change on this file was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 17.7 KB
Line 
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef __KSPROXY__
7#define __KSPROXY__
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#undef KSDDKAPI
14#ifdef _KSDDK_
15#define KSDDKAPI
16#else
17#define KSDDKAPI DECLSPEC_IMPORT
18#endif
19
20#define STATIC_IID_IKsObject \
21 0x423c13a2,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
22
23#define STATIC_IID_IKsPinEx \
24 0x7bb38260,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
25
26#define STATIC_IID_IKsPin \
27 0xb61178d1,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
28
29#define STATIC_IID_IKsPinPipe \
30 0xe539cd90,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
31
32#define STATIC_IID_IKsDataTypeHandler \
33 0x5ffbaa02,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
34
35#define STATIC_IID_IKsDataTypeCompletion \
36 0x827D1A0E,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
37
38#define STATIC_IID_IKsInterfaceHandler \
39 0xD3ABC7E0,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
40
41#define STATIC_IID_IKsClockPropertySet \
42 0x5C5CBD84,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
43
44#define STATIC_IID_IKsAllocator \
45 0x8da64899,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
46
47#define STATIC_IID_IKsAllocatorEx \
48 0x091bb63a,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
49
50#ifndef STATIC_IID_IKsPropertySet
51#define STATIC_IID_IKsPropertySet \
52 0x31EFAC30,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
53#endif
54
55#define STATIC_IID_IKsTopology \
56 0x28F54683,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
57
58#ifndef STATIC_IID_IKsControl
59#define STATIC_IID_IKsControl \
60 0x28F54685,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
61#endif
62
63#define STATIC_IID_IKsAggregateControl \
64 0x7F40EAC0,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
65
66#define STATIC_CLSID_Proxy \
67 0x17CCA71B,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
68
69#ifdef _KS_
70
71DEFINE_GUIDEX(IID_IKsObject);
72
73DEFINE_GUIDEX(IID_IKsPin);
74
75DEFINE_GUIDEX(IID_IKsPinEx);
76
77DEFINE_GUIDEX(IID_IKsPinPipe);
78
79DEFINE_GUIDEX(IID_IKsDataTypeHandler);
80
81DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
82
83DEFINE_GUIDEX(IID_IKsInterfaceHandler);
84
85DEFINE_GUIDEX(IID_IKsClockPropertySet);
86
87DEFINE_GUIDEX(IID_IKsAllocator);
88
89DEFINE_GUIDEX(IID_IKsAllocatorEx);
90
91#define IID_IKsQualityForwarder KSCATEGORY_QUALITY
92#define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
93
94typedef enum {
95 KsAllocatorMode_User,
96 KsAllocatorMode_Kernel
97} KSALLOCATORMODE;
98
99typedef enum {
100 FramingProp_Uninitialized,
101 FramingProp_None,
102 FramingProp_Old,
103 FramingProp_Ex
104} FRAMING_PROP;
105
106typedef FRAMING_PROP *PFRAMING_PROP;
107
108typedef enum {
109 Framing_Cache_Update,
110 Framing_Cache_ReadLast,
111 Framing_Cache_ReadOrig,
112 Framing_Cache_Write
113} FRAMING_CACHE_OPS;
114
115typedef struct {
116 LONGLONG MinTotalNominator;
117 LONGLONG MaxTotalNominator;
118 LONGLONG TotalDenominator;
119} OPTIMAL_WEIGHT_TOTALS;
120
121typedef struct IPin IPin;
122typedef struct IKsPin IKsPin;
123typedef struct IKsAllocator IKsAllocator;
124typedef struct IKsAllocatorEx IKsAllocatorEx;
125
126#define AllocatorStrategy_DontCare 0
127#define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001
128#define AllocatorStrategy_MinimizeFrameSize 0x00000002
129#define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004
130#define AllocatorStrategy_MaximizeSpeed 0x00000008
131
132#define PipeFactor_None 0
133#define PipeFactor_UserModeUpstream 0x00000001
134#define PipeFactor_UserModeDownstream 0x00000002
135#define PipeFactor_MemoryTypes 0x00000004
136#define PipeFactor_Flags 0x00000008
137#define PipeFactor_PhysicalRanges 0x00000010
138#define PipeFactor_OptimalRanges 0x00000020
139#define PipeFactor_FixedCompression 0x00000040
140#define PipeFactor_UnknownCompression 0x00000080
141
142#define PipeFactor_Buffers 0x00000100
143#define PipeFactor_Align 0x00000200
144#define PipeFactor_PhysicalEnd 0x00000400
145#define PipeFactor_LogicalEnd 0x00000800
146
147typedef enum {
148 PipeState_DontCare,
149 PipeState_RangeNotFixed,
150 PipeState_RangeFixed,
151 PipeState_CompressionUnknown,
152 PipeState_Finalized
153} PIPE_STATE;
154
155typedef struct _PIPE_DIMENSIONS {
156 KS_COMPRESSION AllocatorPin;
157 KS_COMPRESSION MaxExpansionPin;
158 KS_COMPRESSION EndPin;
159} PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
160
161typedef enum {
162 Pipe_Allocator_None,
163 Pipe_Allocator_FirstPin,
164 Pipe_Allocator_LastPin,
165 Pipe_Allocator_MiddlePin
166} PIPE_ALLOCATOR_PLACE;
167
168typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
169
170typedef enum {
171 KS_MemoryTypeDontCare = 0,
172 KS_MemoryTypeKernelPaged,
173 KS_MemoryTypeKernelNonPaged,
174 KS_MemoryTypeDeviceHostMapped,
175 KS_MemoryTypeDeviceSpecific,
176 KS_MemoryTypeUser,
177 KS_MemoryTypeAnyHost
178} KS_LogicalMemoryType;
179
180typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
181
182typedef struct _PIPE_TERMINATION {
183 ULONG Flags;
184 ULONG OutsideFactors;
185 ULONG Weigth;
186 KS_FRAMING_RANGE PhysicalRange;
187 KS_FRAMING_RANGE_WEIGHTED OptimalRange;
188 KS_COMPRESSION Compression;
189} PIPE_TERMINATION;
190
191typedef struct _ALLOCATOR_PROPERTIES_EX
192{
193 __LONG32 cBuffers;
194 __LONG32 cbBuffer;
195 __LONG32 cbAlign;
196 __LONG32 cbPrefix;
197
198 GUID MemoryType;
199 GUID BusType;
200 PIPE_STATE State;
201 PIPE_TERMINATION Input;
202 PIPE_TERMINATION Output;
203 ULONG Strategy;
204 ULONG Flags;
205 ULONG Weight;
206 KS_LogicalMemoryType LogicalMemoryType;
207 PIPE_ALLOCATOR_PLACE AllocatorPlace;
208 PIPE_DIMENSIONS Dimensions;
209 KS_FRAMING_RANGE PhysicalRange;
210 IKsAllocatorEx *PrevSegment;
211 ULONG CountNextSegments;
212 IKsAllocatorEx **NextSegments;
213 ULONG InsideFactors;
214 ULONG NumberPins;
215} ALLOCATOR_PROPERTIES_EX;
216
217typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
218
219#ifdef __STREAMS__
220
221struct IKsClockPropertySet;
222
223#ifdef __CRT_UUID_DECL
224__CRT_UUID_DECL(IKsClockPropertySet,0x5c5cbd84,0xe755,0x11d0,0xac,0x18,0x00,0xa0,0xc9,0x22,0x31,0x96);
225#endif
226
227#undef INTERFACE
228#define INTERFACE IKsClockPropertySet
229DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)
230{
231 STDMETHOD(KsGetTime) (THIS_
232 LONGLONG *Time
233 ) PURE;
234 STDMETHOD(KsSetTime) (THIS_
235 LONGLONG Time
236 ) PURE;
237 STDMETHOD(KsGetPhysicalTime) (THIS_
238 LONGLONG *Time
239 ) PURE;
240 STDMETHOD(KsSetPhysicalTime) (THIS_
241 LONGLONG Time
242 ) PURE;
243 STDMETHOD(KsGetCorrelatedTime) (THIS_
244 KSCORRELATED_TIME *CorrelatedTime
245 ) PURE;
246 STDMETHOD(KsSetCorrelatedTime) (THIS_
247 KSCORRELATED_TIME *CorrelatedTime
248 ) PURE;
249 STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_
250 KSCORRELATED_TIME *CorrelatedTime
251 ) PURE;
252 STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_
253 KSCORRELATED_TIME *CorrelatedTime
254 ) PURE;
255 STDMETHOD(KsGetResolution) (THIS_
256 KSRESOLUTION *Resolution
257 ) PURE;
258 STDMETHOD(KsGetState) (THIS_
259 KSSTATE *State
260 ) PURE;
261};
262
263struct IKsAllocator;
264
265#ifdef __CRT_UUID_DECL
266__CRT_UUID_DECL(IKsAllocator,0x8da64899,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a);
267#endif
268
269#undef INTERFACE
270#define INTERFACE IKsAllocator
271DECLARE_INTERFACE_(IKsAllocator,IUnknown)
272{
273 STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
274 STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
275 STDMETHOD(KsGetAllocatorStatus) (THIS_
276 PKSSTREAMALLOCATOR_STATUS AllocatorStatus
277 ) PURE;
278 STDMETHOD_(VOID,KsSetAllocatorMode) (THIS_
279 KSALLOCATORMODE Mode
280 ) PURE;
281};
282
283struct IKsAllocatorEx;
284
285#ifdef __CRT_UUID_DECL
286__CRT_UUID_DECL(IKsAllocatorEx,0x091bb63a,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02);
287#endif
288
289#undef INTERFACE
290#define INTERFACE IKsAllocatorEx
291DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)
292{
293 STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
294 STDMETHOD_(VOID,KsSetProperties) (THIS_
295 PALLOCATOR_PROPERTIES_EX
296 ) PURE;
297 STDMETHOD_(VOID,KsSetAllocatorHandle) (THIS_
298 HANDLE AllocatorHandle
299 ) PURE;
300 STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_
301 IKsPin *KsPin
302 ) PURE;
303};
304
305typedef enum {
306 KsPeekOperation_PeekOnly,
307 KsPeekOperation_AddRef
308} KSPEEKOPERATION;
309
310typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
311struct IKsPin;
312
313#ifdef __CRT_UUID_DECL
314__CRT_UUID_DECL(IKsPin,0xb61178d1,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1);
315#endif
316
317#undef INTERFACE
318#define INTERFACE IKsPin
319DECLARE_INTERFACE_(IKsPin,IUnknown)
320{
321 STDMETHOD(KsQueryMediums) (THIS_
322 PKSMULTIPLE_ITEM *MediumList
323 ) PURE;
324 STDMETHOD(KsQueryInterfaces) (THIS_
325 PKSMULTIPLE_ITEM *InterfaceList
326 ) PURE;
327 STDMETHOD(KsCreateSinkPinHandle) (THIS_
328 KSPIN_INTERFACE& Interface,
329 KSPIN_MEDIUM& Medium
330 ) PURE;
331 STDMETHOD(KsGetCurrentCommunication) (THIS_
332 KSPIN_COMMUNICATION *Communication,
333 KSPIN_INTERFACE *Interface,
334 KSPIN_MEDIUM *Medium
335 ) PURE;
336 STDMETHOD(KsPropagateAcquire) (THIS) PURE;
337 STDMETHOD(KsDeliver) (THIS_
338 IMediaSample *Sample,
339 ULONG Flags
340 ) PURE;
341 STDMETHOD(KsMediaSamplesCompleted) (THIS_
342 PKSSTREAM_SEGMENT StreamSegment
343 ) PURE;
344 STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_
345 KSPEEKOPERATION Operation
346 ) PURE;
347 STDMETHOD(KsReceiveAllocator) (THIS_
348 IMemAllocator *MemAllocator
349 ) PURE;
350 STDMETHOD(KsRenegotiateAllocator) (THIS) PURE;
351 STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
352 STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
353 STDMETHOD(KsQualityNotify) (THIS_
354 ULONG Proportion,
355 REFERENCE_TIME TimeDelta
356 ) PURE;
357};
358
359struct IKsPinEx;
360
361#ifdef __CRT_UUID_DECL
362__CRT_UUID_DECL(IKsPinEx,0x7bb38260,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e);
363#endif
364
365#undef INTERFACE
366#define INTERFACE IKsPinEx
367DECLARE_INTERFACE_(IKsPinEx,IKsPin)
368{
369 STDMETHOD_(VOID,KsNotifyError) (THIS_
370 IMediaSample *Sample,
371 HRESULT hr
372 ) PURE;
373};
374
375struct IKsPinPipe;
376
377#ifdef __CRT_UUID_DECL
378__CRT_UUID_DECL(IKsPinPipe,0xe539cd90,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02);
379#endif
380
381#undef INTERFACE
382#define INTERFACE IKsPinPipe
383DECLARE_INTERFACE_(IKsPinPipe,IUnknown)
384{
385 STDMETHOD(KsGetPinFramingCache) (THIS_
386 PKSALLOCATOR_FRAMING_EX *FramingEx,
387 PFRAMING_PROP FramingProp,
388 FRAMING_CACHE_OPS Option
389 ) PURE;
390 STDMETHOD(KsSetPinFramingCache) (THIS_
391 PKSALLOCATOR_FRAMING_EX FramingEx,
392 PFRAMING_PROP FramingProp,
393 FRAMING_CACHE_OPS Option
394 ) PURE;
395 STDMETHOD_(IPin*,KsGetConnectedPin) (THIS) PURE;
396 STDMETHOD_(IKsAllocatorEx*,KsGetPipe) (THIS_
397 KSPEEKOPERATION Operation
398 ) PURE;
399 STDMETHOD(KsSetPipe) (THIS_
400 IKsAllocatorEx *KsAllocator
401 ) PURE;
402 STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
403 STDMETHOD(KsSetPipeAllocatorFlag) (THIS_
404 ULONG Flag
405 ) PURE;
406 STDMETHOD_(GUID,KsGetPinBusCache) (THIS) PURE;
407 STDMETHOD(KsSetPinBusCache) (THIS_
408 GUID Bus
409 ) PURE;
410 STDMETHOD_(PWCHAR,KsGetPinName) (THIS) PURE;
411 STDMETHOD_(PWCHAR,KsGetFilterName) (THIS) PURE;
412};
413
414struct IKsPinFactory;
415
416#ifdef __CRT_UUID_DECL
417__CRT_UUID_DECL(IKsPinFactory,0xcd5ebe6b,0x8b6e,0x11d1,0x8a,0xe0,0x00,0xa0,0xc9,0x22,0x31,0x96);
418#endif
419
420#undef INTERFACE
421#define INTERFACE IKsPinFactory
422DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
423{
424 STDMETHOD(KsPinFactory) (THIS_
425 ULONG *PinFactory
426 ) PURE;
427};
428
429typedef enum {
430 KsIoOperation_Write,
431 KsIoOperation_Read
432} KSIOOPERATION;
433
434struct IKsDataTypeHandler;
435
436#ifdef __CRT_UUID_DECL
437__CRT_UUID_DECL(IKsDataTypeHandler,0x5ffbaa02,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1);
438#endif
439
440#undef INTERFACE
441#define INTERFACE IKsDataTypeHandler
442DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)
443{
444 STDMETHOD(KsCompleteIoOperation) (THIS_
445 IMediaSample *Sample,
446 PVOID StreamHeader,
447 KSIOOPERATION IoOperation,
448 WINBOOL Cancelled
449 ) PURE;
450 STDMETHOD(KsIsMediaTypeInRanges) (THIS_
451 PVOID DataRanges
452 ) PURE;
453 STDMETHOD(KsPrepareIoOperation) (THIS_
454 IMediaSample *Sample,
455 PVOID StreamHeader,
456 KSIOOPERATION IoOperation
457 ) PURE;
458 STDMETHOD(KsQueryExtendedSize) (THIS_
459 ULONG *ExtendedSize
460 ) PURE;
461 STDMETHOD(KsSetMediaType) (THIS_
462 const AM_MEDIA_TYPE *AmMediaType
463 ) PURE;
464};
465
466struct IKsDataTypeCompletion;
467
468#ifdef __CRT_UUID_DECL
469__CRT_UUID_DECL(IKsDataTypeCompletion,0x827d1a0e,0x0f73,0x11d2,0xb2,0x7a,0x00,0xa0,0xc9,0x22,0x31,0x96);
470#endif
471
472#undef INTERFACE
473#define INTERFACE IKsDataTypeCompletion
474DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
475{
476 STDMETHOD(KsCompleteMediaType) (THIS_
477 HANDLE FilterHandle,
478 ULONG PinFactoryId,
479 AM_MEDIA_TYPE *AmMediaType
480 ) PURE;
481};
482
483struct IKsInterfaceHandler;
484
485#ifdef __CRT_UUID_DECL
486__CRT_UUID_DECL(IKsInterfaceHandler,0xd3abc7e0,0x9a61,0x11d0,0xa4,0x0d,0x00,0xa0,0xc9,0x22,0x31,0x96);
487#endif
488
489#undef INTERFACE
490#define INTERFACE IKsInterfaceHandler
491DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)
492{
493 STDMETHOD(KsSetPin) (THIS_
494 IKsPin *KsPin
495 ) PURE;
496 STDMETHOD(KsProcessMediaSamples) (THIS_
497 IKsDataTypeHandler *KsDataTypeHandler,
498 IMediaSample **SampleList,
499 PLONG SampleCount,
500 KSIOOPERATION IoOperation,
501 PKSSTREAM_SEGMENT *StreamSegment
502 ) PURE;
503 STDMETHOD(KsCompleteIo) (THIS_
504 PKSSTREAM_SEGMENT StreamSegment
505 ) PURE;
506};
507
508typedef struct _KSSTREAM_SEGMENT {
509 IKsInterfaceHandler *KsInterfaceHandler;
510 IKsDataTypeHandler *KsDataTypeHandler;
511 KSIOOPERATION IoOperation;
512 HANDLE CompletionEvent;
513} KSSTREAM_SEGMENT;
514
515struct IKsObject;
516
517#ifdef __CRT_UUID_DECL
518__CRT_UUID_DECL(IKsObject,0x423c13a2,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1);
519#endif
520
521#undef INTERFACE
522#define INTERFACE IKsObject
523DECLARE_INTERFACE_(IKsObject,IUnknown)
524{
525 STDMETHOD_(HANDLE,KsGetObjectHandle) (THIS) PURE;
526};
527
528struct IKsQualityForwarder;
529
530#ifdef __CRT_UUID_DECL
531__CRT_UUID_DECL(IKsQualityForwarder,0x97ebaacb,0x95bd,0x11d0,0xa3,0xea,0x00,0xa0,0xc9,0x22,0x31,0x96);
532#endif
533
534#undef INTERFACE
535#define INTERFACE IKsQualityForwarder
536DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
537{
538 STDMETHOD_(VOID,KsFlushClient) (THIS_
539 IKsPin *Pin
540 ) PURE;
541};
542
543struct IKsNotifyEvent;
544
545#ifdef __CRT_UUID_DECL
546__CRT_UUID_DECL(IKsNotifyEvent,0x412bd695,0xf84b,0x46c1,0xac,0x73,0x54,0x19,0x6d,0xbc,0x8f,0xa7);
547#endif
548
549#undef INTERFACE
550#define INTERFACE IKsNotifyEvent
551DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)
552{
553 STDMETHOD(KsNotifyEvent) (THIS_
554 ULONG Event,
555 ULONG_PTR lParam1,
556 ULONG_PTR lParam2
557 ) PURE;
558};
559
560KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
561KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
562KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
563KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
564KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
565KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
566#endif /* __STREAMS__ */
567
568#ifndef _IKsPropertySet_
569DEFINE_GUIDEX(IID_IKsPropertySet);
570#endif
571
572#ifndef _IKsControl_
573DEFINE_GUIDEX(IID_IKsControl);
574#endif
575
576DEFINE_GUIDEX(IID_IKsAggregateControl);
577#ifndef _IKsTopology_
578DEFINE_GUIDEX(IID_IKsTopology);
579#endif
580DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
581#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
582
583#else /* _KS_ */
584
585#ifndef _IKsPropertySet_
586DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
587#endif
588
589DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
590
591#endif /* _KS_ */
592
593#ifndef _IKsPropertySet_
594#define _IKsPropertySet_
595#define KSPROPERTY_SUPPORT_GET 1
596#define KSPROPERTY_SUPPORT_SET 2
597
598#ifdef DECLARE_INTERFACE_
599struct IKsPropertySet;
600#undef INTERFACE
601#define INTERFACE IKsPropertySet
602DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
603{
604 STDMETHOD(Set) (THIS_
605 REFGUID PropSet,
606 ULONG Id,
607 LPVOID InstanceData,
608 ULONG InstanceLength,
609 LPVOID PropertyData,
610 ULONG DataLength
611 ) PURE;
612 STDMETHOD(Get) (THIS_
613 REFGUID PropSet,
614 ULONG Id,
615 LPVOID InstanceData,
616 ULONG InstanceLength,
617 LPVOID PropertyData,
618 ULONG DataLength,
619 ULONG *BytesReturned
620 ) PURE;
621 STDMETHOD(QuerySupported) (THIS_
622 REFGUID PropSet,
623 ULONG Id,
624 ULONG *TypeSupport
625 ) PURE;
626};
627#endif /* DECLARE_INTERFACE_ */
628#endif /* _IKsPropertySet_ */
629
630#ifndef _IKsControl_
631#define _IKsControl_
632#ifdef DECLARE_INTERFACE_
633struct IKsControl;
634#undef INTERFACE
635#define INTERFACE IKsControl
636DECLARE_INTERFACE_(IKsControl,IUnknown)
637{
638 STDMETHOD(KsProperty) (THIS_
639 PKSPROPERTY Property,
640 ULONG PropertyLength,
641 LPVOID PropertyData,
642 ULONG DataLength,
643 ULONG *BytesReturned
644 ) PURE;
645 STDMETHOD(KsMethod) (THIS_
646 PKSMETHOD Method,
647 ULONG MethodLength,
648 LPVOID MethodData,
649 ULONG DataLength,
650 ULONG *BytesReturned
651 ) PURE;
652 STDMETHOD(KsEvent) (THIS_
653 PKSEVENT Event,
654 ULONG EventLength,
655 LPVOID EventData,
656 ULONG DataLength,
657 ULONG *BytesReturned
658 ) PURE;
659};
660#endif /* DECLARE_INTERFACE_ */
661#endif /* _IKsControl_ */
662
663#ifdef DECLARE_INTERFACE_
664struct IKsAggregateControl;
665#undef INTERFACE
666#define INTERFACE IKsAggregateControl
667DECLARE_INTERFACE_(IKsAggregateControl,IUnknown)
668{
669 STDMETHOD(KsAddAggregate) (THIS_
670 REFGUID AggregateClass
671 ) PURE;
672 STDMETHOD(KsRemoveAggregate) (THIS_
673 REFGUID AggregateClass
674 ) PURE;
675};
676#endif /* DECLARE_INTERFACE_ */
677
678#ifndef _IKsTopology_
679#define _IKsTopology_
680#ifdef DECLARE_INTERFACE_
681struct IKsTopology;
682#undef INTERFACE
683#define INTERFACE IKsTopology
684DECLARE_INTERFACE_(IKsTopology,IUnknown)
685{
686 STDMETHOD(CreateNodeInstance) (THIS_
687 ULONG NodeId,
688 ULONG Flags,
689 ACCESS_MASK DesiredAccess,
690 IUnknown *UnkOuter,
691 REFGUID InterfaceId,
692 LPVOID *Interface
693 ) PURE;
694};
695#endif /* DECLARE_INTERFACE_ */
696#endif /* _IKsTopology_ */
697
698#ifdef __cplusplus
699}
700#endif
701
702#endif /* __KSPROXY__ */
703
Note: See TracBrowser for help on using the repository browser.