1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-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
10 extern "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 0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
22
23 #define STATIC_IID_IKsPinEx \
24 0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
25
26 #define STATIC_IID_IKsPin \
27 0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
28
29 #define STATIC_IID_IKsPinPipe \
30 0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
31
32 #define STATIC_IID_IKsDataTypeHandler \
33 0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
34
35 #define STATIC_IID_IKsDataTypeCompletion \
36 0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
37
38 #define STATIC_IID_IKsInterfaceHandler \
39 0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
40
41 #define STATIC_IID_IKsClockPropertySet \
42 0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
43
44 #define STATIC_IID_IKsAllocator \
45 0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
46
47 #define STATIC_IID_IKsAllocatorEx \
48 0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
49
50 #ifndef STATIC_IID_IKsPropertySet
51 #define STATIC_IID_IKsPropertySet \
52 0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
53 #endif
54
55 #define STATIC_IID_IKsTopology \
56 0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
57
58 #ifndef STATIC_IID_IKsControl
59 #define STATIC_IID_IKsControl \
60 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
61 #endif
62
63 #define STATIC_IID_IKsAggregateControl \
64 0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
65
66 #define STATIC_CLSID_Proxy \
67 0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
68
69 #ifdef _KS_
70
71 DEFINE_GUIDEX(IID_IKsObject);
72
73 DEFINE_GUIDEX(IID_IKsPin);
74
75 DEFINE_GUIDEX(IID_IKsPinEx);
76
77 DEFINE_GUIDEX(IID_IKsPinPipe);
78
79 DEFINE_GUIDEX(IID_IKsDataTypeHandler);
80
81 DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
82
83 DEFINE_GUIDEX(IID_IKsInterfaceHandler);
84
85 DEFINE_GUIDEX(IID_IKsClockPropertySet);
86
87 DEFINE_GUIDEX(IID_IKsAllocator);
88
89 DEFINE_GUIDEX(IID_IKsAllocatorEx);
90
91 #define IID_IKsQualityForwarder KSCATEGORY_QUALITY
92 #define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
93
94 typedef enum {
95 KsAllocatorMode_User,
96 KsAllocatorMode_Kernel
97 } KSALLOCATORMODE;
98
99 typedef enum {
100 FramingProp_Uninitialized,
101 FramingProp_None,
102 FramingProp_Old,
103 FramingProp_Ex
104 } FRAMING_PROP;
105
106 typedef FRAMING_PROP *PFRAMING_PROP;
107
108 typedef enum {
109 Framing_Cache_Update,
110 Framing_Cache_ReadLast,
111 Framing_Cache_ReadOrig,
112 Framing_Cache_Write
113 } FRAMING_CACHE_OPS;
114
115 typedef struct {
116 LONGLONG MinTotalNominator;
117 LONGLONG MaxTotalNominator;
118 LONGLONG TotalDenominator;
119 } OPTIMAL_WEIGHT_TOTALS;
120
121 typedef struct IPin IPin;
122 typedef struct IKsPin IKsPin;
123 typedef struct IKsAllocator IKsAllocator;
124 typedef 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
147 typedef enum {
148 PipeState_DontCare,
149 PipeState_RangeNotFixed,
150 PipeState_RangeFixed,
151 PipeState_CompressionUnknown,
152 PipeState_Finalized
153 } PIPE_STATE;
154
155 typedef struct _PIPE_DIMENSIONS {
156 KS_COMPRESSION AllocatorPin;
157 KS_COMPRESSION MaxExpansionPin;
158 KS_COMPRESSION EndPin;
159 } PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
160
161 typedef enum {
162 Pipe_Allocator_None,
163 Pipe_Allocator_FirstPin,
164 Pipe_Allocator_LastPin,
165 Pipe_Allocator_MiddlePin
166 } PIPE_ALLOCATOR_PLACE;
167
168 typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
169
170 typedef 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
180 typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
181
182 typedef 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
191 typedef struct _ALLOCATOR_PROPERTIES_EX
192 {
193 long cBuffers;
194 long cbBuffer;
195 long cbAlign;
196 long 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
217 typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
218
219 #ifdef __STREAMS__
220
221 struct IKsClockPropertySet;
222 #undef INTERFACE
223 #define INTERFACE IKsClockPropertySet
DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)224 DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)
225 {
226 STDMETHOD(KsGetTime) (THIS_
227 LONGLONG *Time
228 ) PURE;
229 STDMETHOD(KsSetTime) (THIS_
230 LONGLONG Time
231 ) PURE;
232 STDMETHOD(KsGetPhysicalTime) (THIS_
233 LONGLONG *Time
234 ) PURE;
235 STDMETHOD(KsSetPhysicalTime) (THIS_
236 LONGLONG Time
237 ) PURE;
238 STDMETHOD(KsGetCorrelatedTime) (THIS_
239 KSCORRELATED_TIME *CorrelatedTime
240 ) PURE;
241 STDMETHOD(KsSetCorrelatedTime) (THIS_
242 KSCORRELATED_TIME *CorrelatedTime
243 ) PURE;
244 STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_
245 KSCORRELATED_TIME *CorrelatedTime
246 ) PURE;
247 STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_
248 KSCORRELATED_TIME *CorrelatedTime
249 ) PURE;
250 STDMETHOD(KsGetResolution) (THIS_
251 KSRESOLUTION *Resolution
252 ) PURE;
253 STDMETHOD(KsGetState) (THIS_
254 KSSTATE *State
255 ) PURE;
256 };
257
258 struct IKsAllocator;
259 #undef INTERFACE
260 #define INTERFACE IKsAllocator
DECLARE_INTERFACE_(IKsAllocator,IUnknown)261 DECLARE_INTERFACE_(IKsAllocator,IUnknown)
262 {
263 STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
264 STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
265 STDMETHOD(KsGetAllocatorStatus) (THIS_
266 PKSSTREAMALLOCATOR_STATUS AllocatorStatus
267 ) PURE;
268 STDMETHOD_(VOID,KsSetAllocatorMode) (THIS_
269 KSALLOCATORMODE Mode
270 ) PURE;
271 };
272
273 struct IKsAllocatorEx;
274 #undef INTERFACE
275 #define INTERFACE IKsAllocatorEx
DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)276 DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)
277 {
278 STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
279 STDMETHOD_(VOID,KsSetProperties) (THIS_
280 PALLOCATOR_PROPERTIES_EX
281 ) PURE;
282 STDMETHOD_(VOID,KsSetAllocatorHandle) (THIS_
283 HANDLE AllocatorHandle
284 ) PURE;
285 STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_
286 IKsPin *KsPin
287 ) PURE;
288 };
289
290 typedef enum {
291 KsPeekOperation_PeekOnly,
292 KsPeekOperation_AddRef
293 } KSPEEKOPERATION;
294
295 typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
296 struct IKsPin;
297
298 #undef INTERFACE
299 #define INTERFACE IKsPin
DECLARE_INTERFACE_(IKsPin,IUnknown)300 DECLARE_INTERFACE_(IKsPin,IUnknown)
301 {
302 STDMETHOD(KsQueryMediums) (THIS_
303 PKSMULTIPLE_ITEM *MediumList
304 ) PURE;
305 STDMETHOD(KsQueryInterfaces) (THIS_
306 PKSMULTIPLE_ITEM *InterfaceList
307 ) PURE;
308 STDMETHOD(KsCreateSinkPinHandle) (THIS_
309 KSPIN_INTERFACE& Interface,
310 KSPIN_MEDIUM& Medium
311 ) PURE;
312 STDMETHOD(KsGetCurrentCommunication) (THIS_
313 KSPIN_COMMUNICATION *Communication,
314 KSPIN_INTERFACE *Interface,
315 KSPIN_MEDIUM *Medium
316 ) PURE;
317 STDMETHOD(KsPropagateAcquire) (THIS) PURE;
318 STDMETHOD(KsDeliver) (THIS_
319 IMediaSample *Sample,
320 ULONG Flags
321 ) PURE;
322 STDMETHOD(KsMediaSamplesCompleted) (THIS_
323 PKSSTREAM_SEGMENT StreamSegment
324 ) PURE;
325 STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_
326 KSPEEKOPERATION Operation
327 ) PURE;
328 STDMETHOD(KsReceiveAllocator) (THIS_
329 IMemAllocator *MemAllocator
330 ) PURE;
331 STDMETHOD(KsRenegotiateAllocator) (THIS) PURE;
332 STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
333 STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
334 STDMETHOD(KsQualityNotify) (THIS_
335 ULONG Proportion,
336 REFERENCE_TIME TimeDelta
337 ) PURE;
338 };
339
340 struct IKsPinEx;
341 #undef INTERFACE
342 #define INTERFACE IKsPinEx
DECLARE_INTERFACE_(IKsPinEx,IKsPin)343 DECLARE_INTERFACE_(IKsPinEx,IKsPin)
344 {
345 STDMETHOD_(VOID,KsNotifyError) (THIS_
346 IMediaSample *Sample,
347 HRESULT hr
348 ) PURE;
349 };
350
351 struct IKsPinPipe;
352 #undef INTERFACE
353 #define INTERFACE IKsPinPipe
DECLARE_INTERFACE_(IKsPinPipe,IUnknown)354 DECLARE_INTERFACE_(IKsPinPipe,IUnknown)
355 {
356 STDMETHOD(KsGetPinFramingCache) (THIS_
357 PKSALLOCATOR_FRAMING_EX *FramingEx,
358 PFRAMING_PROP FramingProp,
359 FRAMING_CACHE_OPS Option
360 ) PURE;
361 STDMETHOD(KsSetPinFramingCache) (THIS_
362 PKSALLOCATOR_FRAMING_EX FramingEx,
363 PFRAMING_PROP FramingProp,
364 FRAMING_CACHE_OPS Option
365 ) PURE;
366 STDMETHOD_(IPin*,KsGetConnectedPin) (THIS) PURE;
367 STDMETHOD_(IKsAllocatorEx*,KsGetPipe) (THIS_
368 KSPEEKOPERATION Operation
369 ) PURE;
370 STDMETHOD(KsSetPipe) (THIS_
371 IKsAllocatorEx *KsAllocator
372 ) PURE;
373 STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
374 STDMETHOD(KsSetPipeAllocatorFlag) (THIS_
375 ULONG Flag
376 ) PURE;
377 STDMETHOD_(GUID,KsGetPinBusCache) (THIS) PURE;
378 STDMETHOD(KsSetPinBusCache) (THIS_
379 GUID Bus
380 ) PURE;
381 STDMETHOD_(PWCHAR,KsGetPinName) (THIS) PURE;
382 STDMETHOD_(PWCHAR,KsGetFilterName) (THIS) PURE;
383 };
384
385 struct IKsPinFactory;
386 #undef INTERFACE
387 #define INTERFACE IKsPinFactory
DECLARE_INTERFACE_(IKsPinFactory,IUnknown)388 DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
389 {
390 STDMETHOD(KsPinFactory) (THIS_
391 ULONG *PinFactory
392 ) PURE;
393 };
394
395 typedef enum {
396 KsIoOperation_Write,
397 KsIoOperation_Read
398 } KSIOOPERATION;
399
400 struct IKsDataTypeHandler;
401 #undef INTERFACE
402 #define INTERFACE IKsDataTypeHandler
DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)403 DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)
404 {
405 STDMETHOD(KsCompleteIoOperation) (THIS_
406 IMediaSample *Sample,
407 PVOID StreamHeader,
408 KSIOOPERATION IoOperation,
409 WINBOOL Cancelled
410 ) PURE;
411 STDMETHOD(KsIsMediaTypeInRanges) (THIS_
412 PVOID DataRanges
413 ) PURE;
414 STDMETHOD(KsPrepareIoOperation) (THIS_
415 IMediaSample *Sample,
416 PVOID StreamHeader,
417 KSIOOPERATION IoOperation
418 ) PURE;
419 STDMETHOD(KsQueryExtendedSize) (THIS_
420 ULONG *ExtendedSize
421 ) PURE;
422 STDMETHOD(KsSetMediaType) (THIS_
423 const AM_MEDIA_TYPE *AmMediaType
424 ) PURE;
425 };
426
427 struct IKsDataTypeCompletion;
428 #undef INTERFACE
429 #define INTERFACE IKsDataTypeCompletion
DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)430 DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
431 {
432 STDMETHOD(KsCompleteMediaType) (THIS_
433 HANDLE FilterHandle,
434 ULONG PinFactoryId,
435 AM_MEDIA_TYPE *AmMediaType
436 ) PURE;
437 };
438
439 struct IKsInterfaceHandler;
440 #undef INTERFACE
441 #define INTERFACE IKsInterfaceHandler
DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)442 DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)
443 {
444 STDMETHOD(KsSetPin) (THIS_
445 IKsPin *KsPin
446 ) PURE;
447 STDMETHOD(KsProcessMediaSamples) (THIS_
448 IKsDataTypeHandler *KsDataTypeHandler,
449 IMediaSample **SampleList,
450 PLONG SampleCount,
451 KSIOOPERATION IoOperation,
452 PKSSTREAM_SEGMENT *StreamSegment
453 ) PURE;
454 STDMETHOD(KsCompleteIo) (THIS_
455 PKSSTREAM_SEGMENT StreamSegment
456 ) PURE;
457 };
458
459 typedef struct _KSSTREAM_SEGMENT {
460 IKsInterfaceHandler *KsInterfaceHandler;
461 IKsDataTypeHandler *KsDataTypeHandler;
462 KSIOOPERATION IoOperation;
463 HANDLE CompletionEvent;
464 } KSSTREAM_SEGMENT;
465
466 struct IKsObject;
467 #undef INTERFACE
468 #define INTERFACE IKsObject
DECLARE_INTERFACE_(IKsObject,IUnknown)469 DECLARE_INTERFACE_(IKsObject,IUnknown)
470 {
471 STDMETHOD_(HANDLE,KsGetObjectHandle) (THIS) PURE;
472 };
473
474 struct IKsQualityForwarder;
475 #undef INTERFACE
476 #define INTERFACE IKsQualityForwarder
DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)477 DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
478 {
479 STDMETHOD_(VOID,KsFlushClient) (THIS_
480 IKsPin *Pin
481 ) PURE;
482 };
483
484 struct IKsNotifyEvent;
485 #undef INTERFACE
486 #define INTERFACE IKsNotifyEvent
DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)487 DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)
488 {
489 STDMETHOD(KsNotifyEvent) (THIS_
490 ULONG Event,
491 ULONG_PTR lParam1,
492 ULONG_PTR lParam2
493 ) PURE;
494 };
495
496 KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
497 KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
498 KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
499 KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
500 KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
501 KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
502 #endif /* __STREAMS__ */
503
504 #ifndef _IKsPropertySet_
505 DEFINE_GUIDEX(IID_IKsPropertySet);
506 #endif
507
508 #ifndef _IKsControl_
509 DEFINE_GUIDEX(IID_IKsControl);
510 #endif
511
512 DEFINE_GUIDEX(IID_IKsAggregateControl);
513 #ifndef _IKsTopology_
514 DEFINE_GUIDEX(IID_IKsTopology);
515 #endif
516 DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
517 #define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
518
519 #else /* _KS_ */
520
521 #ifndef _IKsPropertySet_
522 DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
523 #endif
524
525 DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
526
527 #endif /* _KS_ */
528
529 #ifndef _IKsPropertySet_
530 #define _IKsPropertySet_
531 #define KSPROPERTY_SUPPORT_GET 1
532 #define KSPROPERTY_SUPPORT_SET 2
533
534 #ifdef DECLARE_INTERFACE_
535 struct IKsPropertySet;
536 #undef INTERFACE
537 #define INTERFACE IKsPropertySet
DECLARE_INTERFACE_(IKsPropertySet,IUnknown)538 DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
539 {
540 STDMETHOD(Set) (THIS_
541 REFGUID PropSet,
542 ULONG Id,
543 LPVOID InstanceData,
544 ULONG InstanceLength,
545 LPVOID PropertyData,
546 ULONG DataLength
547 ) PURE;
548 STDMETHOD(Get) (THIS_
549 REFGUID PropSet,
550 ULONG Id,
551 LPVOID InstanceData,
552 ULONG InstanceLength,
553 LPVOID PropertyData,
554 ULONG DataLength,
555 ULONG *BytesReturned
556 ) PURE;
557 STDMETHOD(QuerySupported) (THIS_
558 REFGUID PropSet,
559 ULONG Id,
560 ULONG *TypeSupport
561 ) PURE;
562 };
563 #endif /* DECLARE_INTERFACE_ */
564 #endif /* _IKsPropertySet_ */
565
566 #ifndef _IKsControl_
567 #define _IKsControl_
568 #ifdef DECLARE_INTERFACE_
569 struct IKsControl;
570 #undef INTERFACE
571 #define INTERFACE IKsControl
DECLARE_INTERFACE_(IKsControl,IUnknown)572 DECLARE_INTERFACE_(IKsControl,IUnknown)
573 {
574 STDMETHOD(KsProperty) (THIS_
575 PKSPROPERTY Property,
576 ULONG PropertyLength,
577 LPVOID PropertyData,
578 ULONG DataLength,
579 ULONG *BytesReturned
580 ) PURE;
581 STDMETHOD(KsMethod) (THIS_
582 PKSMETHOD Method,
583 ULONG MethodLength,
584 LPVOID MethodData,
585 ULONG DataLength,
586 ULONG *BytesReturned
587 ) PURE;
588 STDMETHOD(KsEvent) (THIS_
589 PKSEVENT Event,
590 ULONG EventLength,
591 LPVOID EventData,
592 ULONG DataLength,
593 ULONG *BytesReturned
594 ) PURE;
595 };
596 #endif /* DECLARE_INTERFACE_ */
597 #endif /* _IKsControl_ */
598
599 #ifdef DECLARE_INTERFACE_
600 struct IKsAggregateControl;
601 #undef INTERFACE
602 #define INTERFACE IKsAggregateControl
DECLARE_INTERFACE_(IKsAggregateControl,IUnknown)603 DECLARE_INTERFACE_(IKsAggregateControl,IUnknown)
604 {
605 STDMETHOD(KsAddAggregate) (THIS_
606 REFGUID AggregateClass
607 ) PURE;
608 STDMETHOD(KsRemoveAggregate) (THIS_
609 REFGUID AggregateClass
610 ) PURE;
611 };
612 #endif /* DECLARE_INTERFACE_ */
613
614 #ifndef _IKsTopology_
615 #define _IKsTopology_
616 #ifdef DECLARE_INTERFACE_
617 struct IKsTopology;
618 #undef INTERFACE
619 #define INTERFACE IKsTopology
DECLARE_INTERFACE_(IKsTopology,IUnknown)620 DECLARE_INTERFACE_(IKsTopology,IUnknown)
621 {
622 STDMETHOD(CreateNodeInstance) (THIS_
623 ULONG NodeId,
624 ULONG Flags,
625 ACCESS_MASK DesiredAccess,
626 IUnknown *UnkOuter,
627 REFGUID InterfaceId,
628 LPVOID *Interface
629 ) PURE;
630 };
631 #endif /* DECLARE_INTERFACE_ */
632 #endif /* _IKsTopology_ */
633
634 #ifdef __cplusplus
635 }
636 #endif
637
638 #endif /* __KSPROXY__ */
639
640