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
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 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
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 __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
217 typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
218
219 #ifdef __STREAMS__
220
221 struct 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
DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)229 DECLARE_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
263 struct 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
DECLARE_INTERFACE_(IKsAllocator,IUnknown)271 DECLARE_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
283 struct 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
DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)291 DECLARE_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
305 typedef enum {
306 KsPeekOperation_PeekOnly,
307 KsPeekOperation_AddRef
308 } KSPEEKOPERATION;
309
310 typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
311 struct 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
DECLARE_INTERFACE_(IKsPin,IUnknown)319 DECLARE_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
359 struct 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
DECLARE_INTERFACE_(IKsPinEx,IKsPin)367 DECLARE_INTERFACE_(IKsPinEx,IKsPin)
368 {
369 STDMETHOD_(VOID,KsNotifyError) (THIS_
370 IMediaSample *Sample,
371 HRESULT hr
372 ) PURE;
373 };
374
375 struct 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
DECLARE_INTERFACE_(IKsPinPipe,IUnknown)383 DECLARE_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
414 struct 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
DECLARE_INTERFACE_(IKsPinFactory,IUnknown)422 DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
423 {
424 STDMETHOD(KsPinFactory) (THIS_
425 ULONG *PinFactory
426 ) PURE;
427 };
428
429 typedef enum {
430 KsIoOperation_Write,
431 KsIoOperation_Read
432 } KSIOOPERATION;
433
434 struct 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
DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)442 DECLARE_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
466 struct 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
DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)474 DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
475 {
476 STDMETHOD(KsCompleteMediaType) (THIS_
477 HANDLE FilterHandle,
478 ULONG PinFactoryId,
479 AM_MEDIA_TYPE *AmMediaType
480 ) PURE;
481 };
482
483 struct 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
DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)491 DECLARE_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
508 typedef struct _KSSTREAM_SEGMENT {
509 IKsInterfaceHandler *KsInterfaceHandler;
510 IKsDataTypeHandler *KsDataTypeHandler;
511 KSIOOPERATION IoOperation;
512 HANDLE CompletionEvent;
513 } KSSTREAM_SEGMENT;
514
515 struct 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
DECLARE_INTERFACE_(IKsObject,IUnknown)523 DECLARE_INTERFACE_(IKsObject,IUnknown)
524 {
525 STDMETHOD_(HANDLE,KsGetObjectHandle) (THIS) PURE;
526 };
527
528 struct 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
DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)536 DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
537 {
538 STDMETHOD_(VOID,KsFlushClient) (THIS_
539 IKsPin *Pin
540 ) PURE;
541 };
542
543 struct 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
DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)551 DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)
552 {
553 STDMETHOD(KsNotifyEvent) (THIS_
554 ULONG Event,
555 ULONG_PTR lParam1,
556 ULONG_PTR lParam2
557 ) PURE;
558 };
559
560 KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
561 KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
562 KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
563 KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
564 KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
565 KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
566 #endif /* __STREAMS__ */
567
568 #ifndef _IKsPropertySet_
569 DEFINE_GUIDEX(IID_IKsPropertySet);
570 #endif
571
572 #ifndef _IKsControl_
573 DEFINE_GUIDEX(IID_IKsControl);
574 #endif
575
576 DEFINE_GUIDEX(IID_IKsAggregateControl);
577 #ifndef _IKsTopology_
578 DEFINE_GUIDEX(IID_IKsTopology);
579 #endif
580 DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
581 #define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
582
583 #else /* _KS_ */
584
585 #ifndef _IKsPropertySet_
586 DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
587 #endif
588
589 DEFINE_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_
599 struct IKsPropertySet;
600 #undef INTERFACE
601 #define INTERFACE IKsPropertySet
DECLARE_INTERFACE_(IKsPropertySet,IUnknown)602 DECLARE_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_
633 struct IKsControl;
634 #undef INTERFACE
635 #define INTERFACE IKsControl
DECLARE_INTERFACE_(IKsControl,IUnknown)636 DECLARE_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_
664 struct IKsAggregateControl;
665 #undef INTERFACE
666 #define INTERFACE IKsAggregateControl
DECLARE_INTERFACE_(IKsAggregateControl,IUnknown)667 DECLARE_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_
681 struct IKsTopology;
682 #undef INTERFACE
683 #define INTERFACE IKsTopology
DECLARE_INTERFACE_(IKsTopology,IUnknown)684 DECLARE_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
704