To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / portaudio_20161030_catalina_patch / src / hostapi / wasapi / mingw-include / ksproxy.h @ 164:9fa11135915a

History | View | Annotate | Download (16 KB)

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
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
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
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
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
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
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
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
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
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
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
469
DECLARE_INTERFACE_(IKsObject,IUnknown)
470
{
471
  STDMETHOD_(HANDLE,KsGetObjectHandle)        (THIS) PURE;
472
};
473

    
474
struct IKsQualityForwarder;
475
#undef INTERFACE
476
#define INTERFACE IKsQualityForwarder
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
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
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
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
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
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