ReactOS  0.4.15-dev-1203-g0e5a4d5
ksproxy.h
Go to the documentation of this file.
1 #ifndef __KSPROXY__
2 #define __KSPROXY__
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #undef KSDDKAPI
9 #ifdef _KSDDK_
10 #define KSDDKAPI
11 #else
12 #define KSDDKAPI DECLSPEC_IMPORT
13 #endif
14 
15 #define STATIC_IID_IKsObject\
16  0x423c13a2L, 0x2070, 0x11d0, {0x9e, 0xf7, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}
17 
18 #define STATIC_IID_IKsPinEx\
19  0x7bb38260L, 0xd19c, 0x11d2, {0xb3, 0x8a, 0x00, 0xa0, 0xc9, 0x5e, 0xc2, 0x2e}
20 
21 #define STATIC_IID_IKsPin\
22  0xb61178d1L, 0xa2d9, 0x11cf, {0x9e, 0x53, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}
23 
24 #define STATIC_IID_IKsPinPipe\
25  0xe539cd90L, 0xa8b4, 0x11d1, {0x81, 0x89, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02}
26 
27 #define STATIC_IID_IKsDataTypeHandler\
28  0x5ffbaa02L, 0x49a3, 0x11d0, {0x9f, 0x36, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}
29 
30 #define STATIC_IID_IKsDataTypeCompletion\
31  0x827D1A0EL, 0x0F73, 0x11D2, {0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
32 
33 #define STATIC_IID_IKsInterfaceHandler\
34  0xD3ABC7E0L, 0x9A61, 0x11D0, {0xA4, 0x0D, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
35 
36 #define STATIC_IID_IKsClockPropertySet\
37  0x5C5CBD84L, 0xE755, 0x11D0, {0xAC, 0x18, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
38 
39 #define STATIC_IID_IKsAllocator\
40  0x8da64899L, 0xc0d9, 0x11d0, {0x84, 0x13, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a}
41 
42 #define STATIC_IID_IKsAllocatorEx\
43  0x091bb63aL, 0x603f, 0x11d1, {0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02}
44 
45 
46 #ifndef STATIC_IID_IKsPropertySet
47 #define STATIC_IID_IKsPropertySet\
48  0x31EFAC30L, 0x515C, 0x11d0, {0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93}
49 #endif
50 
51 #define STATIC_IID_IKsTopology\
52  0x28F54683L, 0x06FD, 0x11D2, {0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
53 
54 #ifndef STATIC_IID_IKsControl
55 #define STATIC_IID_IKsControl\
56  0x28F54685L, 0x06FD, 0x11D2, {0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
57 #endif
58 
59 #define STATIC_IID_IKsAggregateControl\
60  0x7F40EAC0L, 0x3947, 0x11D2, {0x87, 0x4E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
61 
62 #define STATIC_CLSID_Proxy \
63  0x17CCA71BL, 0xECD7, 0x11D0, {0xB9, 0x08, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
64 
65 #ifdef _KS_
66 
67 #if !defined(__cplusplus) || _MSC_VER < 1100
68 
69 #define IID_IKsQualityForwarder KSCATEGORY_QUALITY
70 
72 DEFINE_GUIDEX(IID_IKsPin);
75 DEFINE_GUIDEX(IID_IKsDataTypeHandler);
76 DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
77 DEFINE_GUIDEX(IID_IKsInterfaceHandler);
81 #endif
82 
83 #define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
84 
85 typedef enum
86 {
87  KsAllocatorMode_User,
88  KsAllocatorMode_Kernel
89 }KSALLOCATORMODE;
90 
91 
92 typedef enum
93 {
94  FramingProp_Uninitialized,
95  FramingProp_None,
96  FramingProp_Old,
97  FramingProp_Ex
98 }FRAMING_PROP;
99 
100 typedef FRAMING_PROP *PFRAMING_PROP;
101 
102 
103 typedef enum
104 {
105  Framing_Cache_Update,
106  Framing_Cache_ReadLast,
107  Framing_Cache_ReadOrig,
108  Framing_Cache_Write
109 }FRAMING_CACHE_OPS;
110 
111 
112 typedef struct
113 {
114  LONGLONG MinTotalNominator;
115  LONGLONG MaxTotalNominator;
116  LONGLONG TotalDenominator;
117 }OPTIMAL_WEIGHT_TOTALS;
118 
119 typedef struct IPin IPin;
120 typedef struct IKsPin IKsPin;
121 typedef struct IKsAllocator IKsAllocator;
122 typedef struct IKsAllocatorEx IKsAllocatorEx;
123 
124 
125 #define AllocatorStrategy_DontCare 0
126 #define AllocatorStrategy_MinimizeNumberOfFrames 1
127 #define AllocatorStrategy_MinimizeFrameSize 2
128 #define AllocatorStrategy_MinimizeNumberOfAllocators 4
129 #define AllocatorStrategy_MaximizeSpeed 8
130 
131 #define PipeFactor_None 0x0
132 #define PipeFactor_UserModeUpstream 0x1
133 #define PipeFactor_UserModeDownstream 0x2
134 #define PipeFactor_MemoryTypes 0x4
135 #define PipeFactor_Flags 0x8
136 #define PipeFactor_PhysicalRanges 0x10
137 #define PipeFactor_OptimalRanges 0x20
138 #define PipeFactor_FixedCompression 0x40
139 #define PipeFactor_UnknownCompression 0x80
140 #define PipeFactor_Buffers 0x100
141 #define PipeFactor_Align 0x200
142 #define PipeFactor_PhysicalEnd 0x400
143 #define PipeFactor_LogicalEnd 0x800
144 
145 typedef enum
146 {
147  PipeState_DontCare,
148  PipeState_RangeNotFixed,
149  PipeState_RangeFixed,
150  PipeState_CompressionUnknown,
151  PipeState_Finalized
152 }PIPE_STATE;
153 
154 
155 typedef struct _PIPE_DIMENSIONS
156 {
157  KS_COMPRESSION AllocatorPin;
158  KS_COMPRESSION MaxExpansionPin;
159  KS_COMPRESSION EndPin;
160 }PIPE_DIMENSIONS, *PPIPE_DIMENSIONS;
161 
162 
163 typedef enum
164 {
165  Pipe_Allocator_None,
166  Pipe_Allocator_FirstPin,
167  Pipe_Allocator_LastPin,
168  Pipe_Allocator_MiddlePin
169 }PIPE_ALLOCATOR_PLACE, *PPIPE_ALLOCATOR_PLACE;
170 
171 typedef enum
172 {
173  KS_MemoryTypeDontCare = 0,
174  KS_MemoryTypeKernelPaged,
175  KS_MemoryTypeKernelNonPaged,
176  KS_MemoryTypeDeviceHostMapped,
177  KS_MemoryTypeDeviceSpecific,
178  KS_MemoryTypeUser,
179  KS_MemoryTypeAnyHost
180 }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 
192 typedef struct _ALLOCATOR_PROPERTIES_EX
193 {
194  long cBuffers;
195  long cbBuffer;
196  long cbAlign;
197  long cbPrefix;
198 
199  GUID MemoryType;
200  GUID BusType;
201  PIPE_STATE State;
202  PIPE_TERMINATION Input;
203  PIPE_TERMINATION Output;
204  ULONG Strategy;
205  ULONG Flags;
206  ULONG Weight;
207  KS_LogicalMemoryType LogicalMemoryType;
208  PIPE_ALLOCATOR_PLACE AllocatorPlace;
209  PIPE_DIMENSIONS Dimensions;
210  KS_FRAMING_RANGE PhysicalRange;
211  IKsAllocatorEx* PrevSegment;
212  ULONG CountNextSegments;
213  IKsAllocatorEx** NextSegments;
214  ULONG InsideFactors;
215  ULONG NumberPins;
216 }ALLOCATOR_PROPERTIES_EX;
217 
218 typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
219 
220 
221 #ifdef __STREAMS__
222 
223 struct DECLSPEC_UUID("5C5CBD84-E755-11D0-AC18-00A0C9223196") IKsClockPropertySet;
224 #undef INTERFACE
225 #define INTERFACE IKsClockPropertySet
226 DECLARE_INTERFACE_(IKsClockPropertySet, IUnknown)
227 {
228  STDMETHOD(KsGetTime)(
229  THIS_
230  LONGLONG* Time
231  ) PURE;
232  STDMETHOD(KsSetTime)(
233  THIS_
234  LONGLONG Time
235  ) PURE;
236  STDMETHOD(KsGetPhysicalTime)(
237  THIS_
238  LONGLONG* Time
239  ) PURE;
240  STDMETHOD(KsSetPhysicalTime)(
241  THIS_
242  LONGLONG Time
243  ) PURE;
244  STDMETHOD(KsGetCorrelatedTime)(
245  THIS_
246  KSCORRELATED_TIME* CorrelatedTime
247  ) PURE;
248  STDMETHOD(KsSetCorrelatedTime)(
249  THIS_
250  KSCORRELATED_TIME* CorrelatedTime
251  ) PURE;
252  STDMETHOD(KsGetCorrelatedPhysicalTime)(
253  THIS_
254  KSCORRELATED_TIME* CorrelatedTime
255  ) PURE;
256  STDMETHOD(KsSetCorrelatedPhysicalTime)(
257  THIS_
258  KSCORRELATED_TIME* CorrelatedTime
259  ) PURE;
260  STDMETHOD(KsGetResolution)(
261  THIS_
263  ) PURE;
264  STDMETHOD(KsGetState)(
265  THIS_
266  KSSTATE* State
267  ) PURE;
268 };
269 
270 
271 interface DECLSPEC_UUID("8da64899-c0d9-11d0-8413-0000f822fe8a") IKsAllocator;
272 #undef INTERFACE
273 #define INTERFACE IKsAllocator
274 DECLARE_INTERFACE_(IKsAllocator, IUnknown)
275 {
276  STDMETHOD_(HANDLE, KsGetAllocatorHandle)(
277  THIS
278  ) PURE;
279  STDMETHOD_(KSALLOCATORMODE, KsGetAllocatorMode)(
280  THIS
281  ) PURE;
282  STDMETHOD(KsGetAllocatorStatus)(
283  THIS_
284  PKSSTREAMALLOCATOR_STATUS AllocatorStatus
285  ) PURE;
286  STDMETHOD_(VOID, KsSetAllocatorMode)(
287  THIS_
288  KSALLOCATORMODE Mode
289  ) PURE;
290 };
291 
292 interface DECLSPEC_UUID("091bb63a-603f-11d1-b067-00a0c9062802") IKsAllocatorEx;
293 #undef INTERFACE
294 #define INTERFACE IKsAllocatorEx
295 DECLARE_INTERFACE_(IKsAllocatorEx, IKsAllocator)
296 {
297  STDMETHOD_(PALLOCATOR_PROPERTIES_EX, KsGetProperties)(
298  THIS
299  ) PURE;
300  STDMETHOD_(VOID, KsSetProperties)(
301  THIS_
302  PALLOCATOR_PROPERTIES_EX
303  ) PURE;
304  STDMETHOD_(VOID, KsSetAllocatorHandle)(
305  THIS_
307  ) PURE;
308  STDMETHOD_(HANDLE, KsCreateAllocatorAndGetHandle)(
309  THIS_
310  IKsPin* KsPin
311  ) PURE;
312 };
313 
314 typedef enum {
315  KsPeekOperation_PeekOnly,
316  KsPeekOperation_AddRef
317 } KSPEEKOPERATION;
318 
319 typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
320 
321 interface DECLSPEC_UUID("b61178d1-a2d9-11cf-9e53-00aa00a216a1") IKsPin;
322 
323 #undef INTERFACE
324 #define INTERFACE IKsPin
326 {
327  STDMETHOD(KsQueryMediums)(
328  THIS_
329  PKSMULTIPLE_ITEM* MediumList
330  ) PURE;
331  STDMETHOD(KsQueryInterfaces)(
332  THIS_
334  ) PURE;
335  STDMETHOD(KsCreateSinkPinHandle)(
336  THIS_
338  KSPIN_MEDIUM& Medium
339  ) PURE;
340  STDMETHOD(KsGetCurrentCommunication)(
341  THIS_
342  KSPIN_COMMUNICATION *Communication,
344  KSPIN_MEDIUM *Medium
345  ) PURE;
346  STDMETHOD(KsPropagateAcquire)(
347  THIS
348  ) PURE;
349  STDMETHOD(KsDeliver)(
350  THIS_
351  IMediaSample* Sample,
352  ULONG Flags
353  ) PURE;
354  STDMETHOD(KsMediaSamplesCompleted)(
355  THIS_
356  PKSSTREAM_SEGMENT StreamSegment
357  ) PURE;
358  STDMETHOD_(IMemAllocator *, KsPeekAllocator)(
359  THIS_
360  KSPEEKOPERATION Operation
361  ) PURE;
362  STDMETHOD(KsReceiveAllocator)(
363  THIS_
364  IMemAllocator *MemAllocator
365  ) PURE;
366  STDMETHOD(KsRenegotiateAllocator)(
367  THIS
368  ) PURE;
369  STDMETHOD_(LONG, KsIncrementPendingIoCount)(
370  THIS
371  ) PURE;
372  STDMETHOD_(LONG, KsDecrementPendingIoCount)(
373  THIS
374  ) PURE;
375  STDMETHOD(KsQualityNotify)(
376  THIS_
377  ULONG Proportion,
378  REFERENCE_TIME TimeDelta
379  ) PURE;
380 };
381 
382 interface DECLSPEC_UUID("7bb38260-d19c-11d2-b38a-00a0c95ec22e") IKsPinEx;
383 #undef INTERFACE
384 #define INTERFACE IKsPinEx
385 DECLARE_INTERFACE_(IKsPinEx, IKsPin)
386 {
387  STDMETHOD_(VOID, KsNotifyError)(
388  THIS_
389  IMediaSample* Sample,
390  HRESULT hr
391  ) PURE;
392 };
393 
394 interface DECLSPEC_UUID("e539cd90-a8b4-11d1-8189-00a0c9062802") IKsPinPipe;
395 #undef INTERFACE
396 #define INTERFACE IKsPinPipe
397 DECLARE_INTERFACE_(IKsPinPipe, IUnknown)
398 {
399  STDMETHOD(KsGetPinFramingCache)(
400  THIS_
401  PKSALLOCATOR_FRAMING_EX *FramingEx,
402  PFRAMING_PROP FramingProp,
403  FRAMING_CACHE_OPS Option
404  ) PURE;
405  STDMETHOD(KsSetPinFramingCache)(
406  THIS_
407  PKSALLOCATOR_FRAMING_EX FramingEx,
408  PFRAMING_PROP FramingProp,
409  FRAMING_CACHE_OPS Option
410  ) PURE;
411  STDMETHOD_(IPin*, KsGetConnectedPin)(
412  THIS
413  ) PURE;
414  STDMETHOD_(IKsAllocatorEx*, KsGetPipe)(
415  THIS_
416  KSPEEKOPERATION Operation
417  ) PURE;
418  STDMETHOD(KsSetPipe)(
419  THIS_
420  IKsAllocatorEx *KsAllocator
421  ) PURE;
422  STDMETHOD_(ULONG, KsGetPipeAllocatorFlag)(
423  THIS
424  ) PURE;
425  STDMETHOD(KsSetPipeAllocatorFlag)(
426  THIS_
427  ULONG Flag
428  ) PURE;
429  STDMETHOD_(GUID, KsGetPinBusCache)(
430  THIS
431  ) PURE;
432  STDMETHOD(KsSetPinBusCache)(
433  THIS_
434  GUID Bus
435  ) PURE;
436 
437  STDMETHOD_(PWCHAR, KsGetPinName)(
438  THIS
439  ) PURE;
440  STDMETHOD_(PWCHAR, KsGetFilterName)(
441  THIS
442  ) PURE;
443 };
444 
445 
446 interface DECLSPEC_UUID("CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196") IKsPinFactory;
447 #undef INTERFACE
448 #define INTERFACE IKsPinFactory
449 DECLARE_INTERFACE_(IKsPinFactory, IUnknown)
450 {
451  STDMETHOD(KsPinFactory)(
452  THIS_
453  ULONG* PinFactory
454  ) PURE;
455 };
456 
457 typedef enum {
458  KsIoOperation_Write,
459  KsIoOperation_Read
460 } KSIOOPERATION;
461 
462 interface DECLSPEC_UUID("5ffbaa02-49a3-11d0-9f36-00aa00a216a1") IKsDataTypeHandler;
463 #undef INTERFACE
464 #define INTERFACE IKsDataTypeHandler
465 DECLARE_INTERFACE_(IKsDataTypeHandler, IUnknown)
466 {
467  STDMETHOD(KsCompleteIoOperation)(
468  THIS_
469  IMediaSample *Sample,
470  PVOID StreamHeader,
471  KSIOOPERATION IoOperation,
472  BOOL Cancelled
473  ) PURE;
474  STDMETHOD(KsIsMediaTypeInRanges)(
475  THIS_
476  PVOID DataRanges
477  ) PURE;
478  STDMETHOD(KsPrepareIoOperation)(
479  THIS_
480  IMediaSample *Sample,
481  PVOID StreamHeader,
482  KSIOOPERATION IoOperation
483  ) PURE;
484  STDMETHOD(KsQueryExtendedSize)(
485  THIS_
486  ULONG* ExtendedSize
487  ) PURE;
488  STDMETHOD(KsSetMediaType)(
489  THIS_
490  const AM_MEDIA_TYPE* AmMediaType
491  ) PURE;
492 };
493 
494 interface DECLSPEC_UUID("827D1A0E-0F73-11D2-B27A-00A0C9223196") IKsDataTypeCompletion;
495 #undef INTERFACE
496 #define INTERFACE IKsDataTypeCompletion
497 DECLARE_INTERFACE_(IKsDataTypeCompletion, IUnknown)
498 {
499  STDMETHOD(KsCompleteMediaType)(
500  THIS_
501  HANDLE FilterHandle,
502  ULONG PinFactoryId,
503  AM_MEDIA_TYPE* AmMediaType
504  ) PURE;
505 };
506 
507 interface DECLSPEC_UUID("D3ABC7E0-9A61-11d0-A40D-00A0C9223196") IKsInterfaceHandler;
508 #undef INTERFACE
509 #define INTERFACE IKsInterfaceHandler
510 DECLARE_INTERFACE_(IKsInterfaceHandler, IUnknown)
511 {
512  STDMETHOD(KsSetPin)(
513  THIS_
514  IKsPin *KsPin
515  ) PURE;
516  STDMETHOD(KsProcessMediaSamples)(
517  THIS_
518  IKsDataTypeHandler *KsDataTypeHandler,
519  IMediaSample** SampleList,
520  PLONG SampleCount,
521  KSIOOPERATION IoOperation,
522  PKSSTREAM_SEGMENT *StreamSegment
523  ) PURE;
524  STDMETHOD(KsCompleteIo)(
525  THIS_
526  PKSSTREAM_SEGMENT StreamSegment
527  ) PURE;
528 };
529 
530 
531 typedef struct _KSSTREAM_SEGMENT
532 {
533  IKsInterfaceHandler *KsInterfaceHandler;
534  IKsDataTypeHandler *KsDataTypeHandler;
535  KSIOOPERATION IoOperation;
536  HANDLE CompletionEvent;
537 
538 }KSSTREAM_SEGMENT;
539 
540 interface DECLSPEC_UUID("423c13a2-2070-11d0-9ef7-00aa00a216a1") IKsObject;
541 #undef INTERFACE
542 #define INTERFACE IKsObject
543 DECLARE_INTERFACE_(IKsObject, IUnknown)
544 {
545  STDMETHOD_(HANDLE, KsGetObjectHandle)(
546  THIS
547  ) PURE;
548 };
549 
550 interface DECLSPEC_UUID("97ebaacb-95bd-11d0-a3ea-00a0c9223196") IKsQualityForwarder;
551 #undef INTERFACE
552 #define INTERFACE IKsQualityForwarder
553 DECLARE_INTERFACE_(IKsQualityForwarder, IKsObject)
554 {
555  STDMETHOD_(VOID, KsFlushClient)(
556  THIS_
557  IKsPin* Pin
558  ) PURE;
559 };
560 
561 #if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1)
562 
563 interface DECLSPEC_UUID("412bd695-f84b-46c1-ac73-54196dbc8fa7") IKsNotifyEvent;
564 #undef INTERFACE
565 #define INTERFACE IKsNotifyEvent
566 DECLARE_INTERFACE_(IKsNotifyEvent, IUnknown)
567 {
568  STDMETHOD(KsNotifyEvent)(
569  THIS_
570  ULONG Event,
571  ULONG_PTR lParam1,
572  ULONG_PTR lParam2
573  ) PURE;
574 };
575 
576 #endif
577 
578 KSDDKAPI
579 HRESULT
580 WINAPI
582  PKSDATARANGE DataRange,
584 
585 KSDDKAPI
586 HRESULT
587 WINAPI
589  REFGUID Category,
590  ACCESS_MASK Access,
592 
593 KSDDKAPI
594 HRESULT
595 WINAPI
597  HANDLE Handle,
598  ULONG IoControl,
599  PVOID InBuffer,
600  ULONG InLength,
602  ULONG OutLength,
604 
605 KSDDKAPI
606 HRESULT
607 WINAPI
609  HANDLE FilterHandle,
610  ULONG PinFactoryId,
612  PVOID* Items);
613 
614 KSDDKAPI
615 HRESULT
616 WINAPI
618  HANDLE FilterHandle,
619  ULONG PinFactoryId,
620  ULONG* MediaTypeCount);
621 
622 KSDDKAPI
623 HRESULT
624 WINAPI
626  int Position,
627  AM_MEDIA_TYPE* AmMediaType,
628  HANDLE FilterHandle,
629  ULONG PinFactoryId);
630 
631 #endif
632 
633 #ifndef _IKsPropertySet_
634 #if !defined(__cplusplus) || _MSC_VER < 1100
636 #endif
637 #endif
638 
639 #ifndef _IKsControl_
640 #if !defined(__cplusplus) || _MSC_VER < 1100
642 #endif
643 #endif
644 
645 #if !defined(__cplusplus) || _MSC_VER < 1100
647 #endif
648 
649 #ifndef _IKsTopology_
650 #if !defined(__cplusplus) || _MSC_VER < 1100
652 #endif
653 #endif
654 
655 DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196", CLSID_Proxy);
656 #define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
657 
658 #else
659 
660 #ifndef _IKsPropertySet_
661 #if !defined(__cplusplus) || _MSC_VER < 1100
663 #endif
664 #endif
665 
666 #if !defined(__cplusplus) || _MSC_VER < 1100
667 DEFINE_GUID(CLSID_Proxy, STATIC_CLSID_Proxy);
668 #else
669 DECLSPEC_UUID("17CCA71B-ECD7-11D0-B908-00A0C9223196") CLSID_Proxy;
670 #endif
671 
672 #endif
673 
674 #ifndef _IKsPropertySet_
675 #define _IKsPropertySet_
676 
677 #define KSPROPERTY_SUPPORT_GET 1
678 #define KSPROPERTY_SUPPORT_SET 2
679 
680 interface DECLSPEC_UUID("31EFAC30-515C-11d0-A9AA-00aa0061be93")
681 #undef INTERFACE
684 {
685  STDMETHOD(Set)(
686  THIS_
687  IN REFGUID PropSet,
688  IN ULONG Id,
689  IN LPVOID InstanceData,
690  IN ULONG InstanceLength,
691  IN LPVOID PropertyData,
693  ) PURE;
694 
695  STDMETHOD(Get)(
696  THIS_
697  IN REFGUID PropSet,
698  IN ULONG Id,
699  IN LPVOID InstanceData,
700  IN ULONG InstanceLength,
701  OUT LPVOID PropertyData,
704  ) PURE;
705 
707  THIS_
708  IN REFGUID PropSet,
709  IN ULONG Id,
710  OUT ULONG* TypeSupport
711  ) PURE;
712 };
713 
714 #endif
715 
716 #ifndef _IKsControl_
717 #define _IKsControl_
718 
719 DEFINE_GUID(IID_IKsControl, 28F54685, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0A0, 0xC9, 0x22, 0x31, 0x96);
720 
721 
722 interface DECLSPEC_UUID("28F54685-06FD-11D2-B27A-00A0C9223196") IKsControl;
723 #undef INTERFACE
724 #define INTERFACE IKsControl
726 {
727  STDMETHOD(KsProperty)(
728  THIS_
730  IN ULONG PropertyLength,
731  IN OUT LPVOID PropertyData,
734  ) PURE;
735  STDMETHOD(KsMethod)(
736  THIS_
737  IN PKSMETHOD Method,
738  IN ULONG MethodLength,
739  IN OUT LPVOID MethodData,
742  ) PURE;
743  STDMETHOD(KsEvent)(
744  THIS_
746  IN ULONG EventLength,
747  IN OUT LPVOID EventData,
750  ) PURE;
751 };
752 
753 #endif
754 
755 
756 DEFINE_GUID(IID_IKsAggregateControl, 0x7F40EAC0, 0x3947, 0x11D2, 0x87, 0x4E, 0x00, 0A0, 0xC9, 0x22, 0x31, 0x96);
757 
758 #undef INTERFACE
759 #define INTERFACE IKsAggregateControl
760 DECLARE_INTERFACE_(IKsAggregateControl, IUnknown)
761 {
762  STDMETHOD(KsAddAggregate)(
763  THIS_
764  IN REFGUID AggregateClass
765  ) PURE;
766  STDMETHOD(KsRemoveAggregate)(
767  THIS_
768  IN REFGUID AggregateClass
769  ) PURE;
770 };
771 
772 #ifndef _IKsTopology_
773 #define _IKsTopology_
774 
775 DEFINE_GUID(IID_IKsTopology, 0x28F54683, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0A0, 0xC9, 0x22, 0x31, 0x96);
776 
777 #undef INTERFACE
778 #define INTERFACE IKsTopology
780 {
781  STDMETHOD(CreateNodeInstance)(
782  THIS_
783  IN ULONG NodeId,
784  IN ULONG Flags,
786  IN IUnknown* UnkOuter OPTIONAL,
787  IN REFGUID InterfaceId,
789  ) PURE;
790 };
791 
792 #endif
793 
794 #ifdef __cplusplus
795 }
796 #endif
797 
798 #endif
#define IN
Definition: typedefs.h:39
static const struct update_accum a3
Definition: msg.c:600
DEFINE_GUIDEX(IID_IKoInitializeParentDeviceObject)
_Inout_ PUSB_DEVICE_HANDLE DeviceHandle
Definition: hubbusif.h:121
#define THIS_
Definition: basetyps.h:65
_In_ UCHAR _In_ ULONG _Out_ PUCHAR _Outptr_result_bytebuffer_ OutBufferLength PVOID * OutBuffer
Definition: scsi.h:4071
HRESULT hr
Definition: shlfolder.c:183
Definition: scsiwmi.h:51
_In_ ULONG Mode
Definition: hubbusif.h:303
const GUID IID_IKsControl
Definition: filter.c:44
#define THIS
Definition: basetyps.h:66
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
Definition: halfuncs.h:156
const GUID IID_IKsObject
DEFINE_GUID(IID_IKsPropertySet, STATIC_IID_IKsPropertySet)
static COORD Position
Definition: mouse.c:34
_In_ PUSBD_INTERFACE_LIST_ENTRY InterfaceList
Definition: usbdlib.h:181
Definition: arc.h:84
_In_ ULONG _In_ ULONG State
Definition: potypes.h:516
KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle, ULONG IoControl, PVOID InBuffer, ULONG InLength, PVOID OutBuffer, ULONG OutLength, PULONG BytesReturned)
Definition: ksproxy.cpp:34
uint16_t * PWCHAR
Definition: typedefs.h:56
static BOOL Set
Definition: pageheap.c:10
#define STDMETHOD(m)
Definition: basetyps.h:62
DWORD Id
STDMETHOD() QuerySupported(THIS_ IN REFGUID PropSet, IN ULONG Id, OUT ULONG *TypeSupport) PURE
uint32_t ULONG_PTR
Definition: typedefs.h:65
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define DEFINE_GUIDSTRUCT(guid, name)
Definition: ks.h:98
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
_In_ PVOID _In_ ULONG Event
Definition: iotypes.h:450
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
Definition: cdrom.h:1437
const GUID IID_IKsAggregateControl
Definition: proxy.cpp:16
_In_ LPCGUID _In_ SIZE_T _In_ SIZE_T _Out_opt_ PSIZE_T BytesReturned
Definition: potypes.h:549
KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange, KSMULTIPLE_ITEM *Attributes OPTIONAL)
Definition: ksproxy.cpp:90
int64_t LONGLONG
Definition: typedefs.h:68
KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle, ULONG PinFactoryId, ULONG *MediaTypeCount)
Definition: ksproxy.cpp:216
_In_ HANDLE Handle
Definition: extypes.h:390
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
Definition: pci.h:361
GLfloat f
Definition: glext.h:7540
const GUID IID_IKsClockPropertySet
Definition: proxy.cpp:17
const GUID IID_IKsPinEx
Definition: input_pin.cpp:12
KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle, ULONG PinFactoryId, ULONG PropertyId, PVOID *Items)
Definition: ksproxy.cpp:154
LONGLONG REFERENCE_TIME
Definition: dmusicks.h:9
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
Definition: fatprocs.h:424
LONG HRESULT
Definition: typedefs.h:79
#define WINAPI
Definition: msvc.h:6
Definition: xml2sdb.h:79
#define STATIC_CLSID_Proxy
Definition: ksproxy.h:62
interface DECLSPEC_UUID("31EFAC30-515C-11d0-A9AA-00aa0061be93") DECLARE_INTERFACE_(IKsPropertySet
const GUID IID_IKsAllocatorEx
Definition: allocator.cpp:11
KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position, AM_MEDIA_TYPE *AmMediaType, HANDLE FilterHandle, ULONG PinFactoryId)
Definition: ksproxy.cpp:250
Definition: arc.h:85
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:454
const GUID IID_IKsPropertySet
Definition: controlnode.cpp:13
const GUID IID_IKsAllocator
Definition: allocator.cpp:12
_In_ DWORD Property
Definition: setupapi.h:1545
_In_ PKSALLOCATOR_FRAMING _Out_ PHANDLE AllocatorHandle
Definition: ks.h:4518
KSPIN_COMMUNICATION
Definition: ks.h:1253
_Must_inspect_result_ _In_ USHORT _In_ PHIDP_PREPARSED_DATA _Out_writes_to_ LengthAttributes PHIDP_EXTENDED_ATTRIBUTES Attributes
Definition: hidpi.h:348
const GUID IID_IKsTopology
Definition: proxy.cpp:18
KSSTATE
Definition: ks.h:1214
DECLARE_INTERFACE_(IKsControl, IUnknown)
Definition: ksproxy.h:725
#define KSDDKAPI
Definition: ksproxy.h:12
Definition: axcore.idl:91
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK DesiredAccess
Definition: create.c:4137
Definition: ttei6.cpp:27
#define OPTIONAL
Definition: typedefs.h:41
unsigned int * PULONG
Definition: retypes.h:1
#define PURE
Definition: basetyps.h:64
#define OUT
Definition: typedefs.h:40
static BYTE Resolution
Definition: mouse.c:35
_In_ PSTORAGE_PROPERTY_ID PropertyId
Definition: cdrom.h:932
unsigned int ULONG
Definition: retypes.h:1
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
_In_ FLT_SET_CONTEXT_OPERATION Operation
Definition: fltkernel.h:1468
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
signed int * PLONG
Definition: retypes.h:5
ULONG ACCESS_MASK
Definition: nt_native.h:40
static PLARGE_INTEGER Time
Definition: time.c:105
const GUID IID_IKsPinPipe
Definition: input_pin.cpp:11
#define STATIC_IID_IKsPropertySet
Definition: ksproxy.h:47
KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category, ACCESS_MASK Access, PHANDLE DeviceHandle)
Definition: ksproxy.cpp:101
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68