/[cvs]/api/include/ksproxy.h
ViewVC logotype

Contents of /api/include/ksproxy.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (vendor branch)
Sun Jul 1 20:47:59 2001 UTC (23 years, 5 months ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
First import

1 /*++
2
3 Copyright (C) Microsoft Corporation, 1996 - 1999
4
5 Module Name:
6
7 ksproxy.h
8
9 Abstract:
10
11 Interface definitions for WDM-CSA proxy filters.
12
13 --*/
14
15 #ifndef __KSPROXY__
16 #define __KSPROXY__
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22 #undef KSDDKAPI
23 #ifdef _KSDDK_
24 #define KSDDKAPI
25 #else // !_KSDDK_
26 #define KSDDKAPI DECLSPEC_IMPORT
27 #endif // _KSDDK_
28
29 #define STATIC_IID_IKsObject\
30 0x423c13a2L, 0x2070, 0x11d0, 0x9e, 0xf7, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1
31
32 #define STATIC_IID_IKsPinEx\
33 0x7bb38260L, 0xd19c, 0x11d2, 0xb3, 0x8a, 0x00, 0xa0, 0xc9, 0x5e, 0xc2, 0x2e
34
35 #define STATIC_IID_IKsPin\
36 0xb61178d1L, 0xa2d9, 0x11cf, 0x9e, 0x53, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1
37
38 #define STATIC_IID_IKsPinPipe\
39 0xe539cd90L, 0xa8b4, 0x11d1, 0x81, 0x89, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
40
41 #define STATIC_IID_IKsDataTypeHandler\
42 0x5ffbaa02L, 0x49a3, 0x11d0, 0x9f, 0x36, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1
43
44 #define STATIC_IID_IKsDataTypeCompletion\
45 0x827D1A0EL, 0x0F73, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
46
47 #define STATIC_IID_IKsInterfaceHandler\
48 0xD3ABC7E0L, 0x9A61, 0x11D0, 0xA4, 0x0D, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
49
50 #define STATIC_IID_IKsClockPropertySet\
51 0x5C5CBD84L, 0xE755, 0x11D0, 0xAC, 0x18, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
52
53 #define STATIC_IID_IKsAllocator\
54 0x8da64899L, 0xc0d9, 0x11d0, 0x84, 0x13, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
55
56 #define STATIC_IID_IKsAllocatorEx\
57 0x091bb63aL, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
58
59
60 #ifndef STATIC_IID_IKsPropertySet
61 #define STATIC_IID_IKsPropertySet\
62 0x31EFAC30L, 0x515C, 0x11d0, 0xA9, 0xAA, 0x00, 0xAA, 0x00, 0x61, 0xBE, 0x93
63 #endif // STATIC_IID_IKsPropertySet
64
65 #define STATIC_IID_IKsTopology\
66 0x28F54683L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
67
68 #ifndef STATIC_IID_IKsControl
69 #define STATIC_IID_IKsControl\
70 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
71 #endif // STATIC_IID_IKsControl
72
73 #define STATIC_IID_IKsAggregateControl\
74 0x7F40EAC0L, 0x3947, 0x11D2, 0x87, 0x4E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
75
76 #define STATIC_CLSID_Proxy \
77 0x17CCA71BL, 0xECD7, 0x11D0, 0xB9, 0x08, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
78
79 #ifdef _KS_
80
81 #if !defined(__cplusplus) || _MSC_VER < 1100
82 DEFINE_GUIDEX(IID_IKsObject);
83
84 DEFINE_GUIDEX(IID_IKsPin);
85
86 DEFINE_GUIDEX(IID_IKsPinEx);
87
88 DEFINE_GUIDEX(IID_IKsPinPipe);
89
90 DEFINE_GUIDEX(IID_IKsDataTypeHandler);
91
92 DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
93
94 DEFINE_GUIDEX(IID_IKsInterfaceHandler);
95
96 DEFINE_GUIDEX(IID_IKsClockPropertySet);
97
98 DEFINE_GUIDEX(IID_IKsAllocator);
99
100 DEFINE_GUIDEX(IID_IKsAllocatorEx);
101
102 #define IID_IKsQualityForwarder KSCATEGORY_QUALITY
103 #endif // !defined(__cplusplus) || _MSC_VER < 1100
104
105 #define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
106
107 typedef enum {
108 KsAllocatorMode_User,
109 KsAllocatorMode_Kernel
110 } KSALLOCATORMODE;
111
112
113 typedef enum {
114 FramingProp_Uninitialized,
115 FramingProp_None,
116 FramingProp_Old,
117 FramingProp_Ex
118 } FRAMING_PROP;
119
120 typedef FRAMING_PROP *PFRAMING_PROP;
121
122
123 typedef enum {
124 Framing_Cache_Update, // request to bypass cache when read/write
125 Framing_Cache_ReadLast,
126 Framing_Cache_ReadOrig,
127 Framing_Cache_Write
128 } FRAMING_CACHE_OPS;
129
130
131 typedef struct {
132 LONGLONG MinTotalNominator;
133 LONGLONG MaxTotalNominator;
134 LONGLONG TotalDenominator;
135 } OPTIMAL_WEIGHT_TOTALS;
136
137 // forward declaration
138 typedef struct IPin IPin;
139 typedef struct IKsPin IKsPin;
140 typedef struct IKsAllocator IKsAllocator;
141 typedef struct IKsAllocatorEx IKsAllocatorEx;
142
143
144 //
145 // allocators strategy is defined by graph manager
146 //
147 #define AllocatorStrategy_DontCare 0
148
149 //
150 // what to optimize
151 //
152 #define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001
153 #define AllocatorStrategy_MinimizeFrameSize 0x00000002
154 #define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004
155 #define AllocatorStrategy_MaximizeSpeed 0x00000008
156
157 //
158 // factors (flags) defining the Pipes properties
159 //
160 #define PipeFactor_None 0
161 #define PipeFactor_UserModeUpstream 0x00000001
162 #define PipeFactor_UserModeDownstream 0x00000002
163 #define PipeFactor_MemoryTypes 0x00000004
164 #define PipeFactor_Flags 0x00000008
165 #define PipeFactor_PhysicalRanges 0x00000010
166 #define PipeFactor_OptimalRanges 0x00000020
167 #define PipeFactor_FixedCompression 0x00000040
168 #define PipeFactor_UnknownCompression 0x00000080
169
170 #define PipeFactor_Buffers 0x00000100
171 #define PipeFactor_Align 0x00000200
172
173 #define PipeFactor_PhysicalEnd 0x00000400
174 #define PipeFactor_LogicalEnd 0x00000800
175
176
177
178 typedef enum {
179 PipeState_DontCare,
180 PipeState_RangeNotFixed,
181 PipeState_RangeFixed,
182 PipeState_CompressionUnknown,
183 PipeState_Finalized
184 } PIPE_STATE;
185
186
187 //
188 // pipe dimensions relative to BeginPin.
189 //
190
191 typedef struct _PIPE_DIMENSIONS {
192 KS_COMPRESSION AllocatorPin;
193 KS_COMPRESSION MaxExpansionPin;
194 KS_COMPRESSION EndPin;
195 } PIPE_DIMENSIONS, *PPIPE_DIMENSIONS;
196
197
198 typedef enum {
199 Pipe_Allocator_None,
200 Pipe_Allocator_FirstPin,
201 Pipe_Allocator_LastPin,
202 Pipe_Allocator_MiddlePin
203 } PIPE_ALLOCATOR_PLACE;
204
205 typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
206
207
208 typedef enum {
209 KS_MemoryTypeDontCare = 0,
210 KS_MemoryTypeKernelPaged,
211 KS_MemoryTypeKernelNonPaged,
212 KS_MemoryTypeDeviceHostMapped,
213 KS_MemoryTypeDeviceSpecific,
214 KS_MemoryTypeUser,
215 KS_MemoryTypeAnyHost
216 } KS_LogicalMemoryType;
217
218 typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
219
220
221
222 typedef struct _PIPE_TERMINATION {
223 ULONG Flags;
224 ULONG OutsideFactors;
225 ULONG Weigth; // outside weight
226 KS_FRAMING_RANGE PhysicalRange;
227 KS_FRAMING_RANGE_WEIGHTED OptimalRange;
228 KS_COMPRESSION Compression; // relative to the connected pin on a neighboring filter.
229 } PIPE_TERMINATION;
230
231
232 //
233 // extended allocator properties
234 //
235 typedef struct _ALLOCATOR_PROPERTIES_EX
236 {
237 long cBuffers;
238 long cbBuffer;
239 long cbAlign;
240 long cbPrefix;
241 // new part
242 GUID MemoryType;
243 GUID BusType; // one of the buses this pipe is using
244 PIPE_STATE State;
245 PIPE_TERMINATION Input;
246 PIPE_TERMINATION Output;
247 ULONG Strategy;
248 ULONG Flags;
249 ULONG Weight;
250 KS_LogicalMemoryType LogicalMemoryType;
251 PIPE_ALLOCATOR_PLACE AllocatorPlace;
252 PIPE_DIMENSIONS Dimensions;
253 KS_FRAMING_RANGE PhysicalRange; // on allocator pin
254 IKsAllocatorEx* PrevSegment; // doubly-linked list of KS allocators
255 ULONG CountNextSegments; // possible multiple dependent pipes
256 IKsAllocatorEx** NextSegments;
257 ULONG InsideFactors; // existing factors (different from "don't care")
258 ULONG NumberPins;
259 } ALLOCATOR_PROPERTIES_EX;
260
261 typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
262
263
264 #ifdef __STREAMS__
265
266 struct DECLSPEC_UUID("5C5CBD84-E755-11D0-AC18-00A0C9223196") IKsClockPropertySet;
267 #undef INTERFACE
268 #define INTERFACE IKsClockPropertySet
269 DECLARE_INTERFACE_(IKsClockPropertySet, IUnknown)
270 {
271 STDMETHOD(KsGetTime)(
272 THIS_
273 LONGLONG* Time
274 ) PURE;
275 STDMETHOD(KsSetTime)(
276 THIS_
277 LONGLONG Time
278 ) PURE;
279 STDMETHOD(KsGetPhysicalTime)(
280 THIS_
281 LONGLONG* Time
282 ) PURE;
283 STDMETHOD(KsSetPhysicalTime)(
284 THIS_
285 LONGLONG Time
286 ) PURE;
287 STDMETHOD(KsGetCorrelatedTime)(
288 THIS_
289 KSCORRELATED_TIME* CorrelatedTime
290 ) PURE;
291 STDMETHOD(KsSetCorrelatedTime)(
292 THIS_
293 KSCORRELATED_TIME* CorrelatedTime
294 ) PURE;
295 STDMETHOD(KsGetCorrelatedPhysicalTime)(
296 THIS_
297 KSCORRELATED_TIME* CorrelatedTime
298 ) PURE;
299 STDMETHOD(KsSetCorrelatedPhysicalTime)(
300 THIS_
301 KSCORRELATED_TIME* CorrelatedTime
302 ) PURE;
303 STDMETHOD(KsGetResolution)(
304 THIS_
305 KSRESOLUTION* Resolution
306 ) PURE;
307 STDMETHOD(KsGetState)(
308 THIS_
309 KSSTATE* State
310 ) PURE;
311 };
312
313
314 interface DECLSPEC_UUID("8da64899-c0d9-11d0-8413-0000f822fe8a") IKsAllocator;
315 #undef INTERFACE
316 #define INTERFACE IKsAllocator
317 DECLARE_INTERFACE_(IKsAllocator, IUnknown)
318 {
319 STDMETHOD_(HANDLE, KsGetAllocatorHandle)(
320 THIS
321 ) PURE;
322 STDMETHOD_(KSALLOCATORMODE, KsGetAllocatorMode)(
323 THIS
324 ) PURE;
325 STDMETHOD(KsGetAllocatorStatus)(
326 THIS_
327 PKSSTREAMALLOCATOR_STATUS AllocatorStatus
328 ) PURE;
329 STDMETHOD_(VOID, KsSetAllocatorMode)(
330 THIS_
331 KSALLOCATORMODE Mode
332 ) PURE;
333 };
334
335 interface DECLSPEC_UUID("091bb63a-603f-11d1-b067-00a0c9062802") IKsAllocatorEx;
336 #undef INTERFACE
337 #define INTERFACE IKsAllocatorEx
338 DECLARE_INTERFACE_(IKsAllocatorEx, IKsAllocator)
339 {
340 STDMETHOD_(PALLOCATOR_PROPERTIES_EX, KsGetProperties)(
341 THIS
342 ) PURE;
343 STDMETHOD_(VOID, KsSetProperties)(
344 THIS_
345 PALLOCATOR_PROPERTIES_EX
346 ) PURE;
347 STDMETHOD_(VOID, KsSetAllocatorHandle)(
348 THIS_
349 HANDLE AllocatorHandle
350 ) PURE;
351 STDMETHOD_(HANDLE, KsCreateAllocatorAndGetHandle)(
352 THIS_
353 IKsPin* KsPin
354 ) PURE;
355 };
356
357 typedef enum {
358 KsPeekOperation_PeekOnly,
359 KsPeekOperation_AddRef
360 } KSPEEKOPERATION;
361
362 typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
363
364 interface DECLSPEC_UUID("b61178d1-a2d9-11cf-9e53-00aa00a216a1") IKsPin;
365
366 #undef INTERFACE
367 #define INTERFACE IKsPin
368 DECLARE_INTERFACE_(IKsPin, IUnknown)
369 {
370 STDMETHOD(KsQueryMediums)(
371 THIS_
372 PKSMULTIPLE_ITEM* MediumList
373 ) PURE;
374 STDMETHOD(KsQueryInterfaces)(
375 THIS_
376 PKSMULTIPLE_ITEM* InterfaceList
377 ) PURE;
378 STDMETHOD(KsCreateSinkPinHandle)(
379 THIS_
380 KSPIN_INTERFACE& Interface,
381 KSPIN_MEDIUM& Medium
382 ) PURE;
383 STDMETHOD(KsGetCurrentCommunication)(
384 THIS_
385 KSPIN_COMMUNICATION *Communication,
386 KSPIN_INTERFACE *Interface,
387 KSPIN_MEDIUM *Medium
388 ) PURE;
389 STDMETHOD(KsPropagateAcquire)(
390 THIS
391 ) PURE;
392 STDMETHOD(KsDeliver)(
393 THIS_
394 IMediaSample* Sample,
395 ULONG Flags
396 ) PURE;
397 STDMETHOD(KsMediaSamplesCompleted)(
398 THIS_
399 PKSSTREAM_SEGMENT StreamSegment
400 ) PURE;
401 STDMETHOD_(IMemAllocator *, KsPeekAllocator)(
402 THIS_
403 KSPEEKOPERATION Operation
404 ) PURE;
405 STDMETHOD(KsReceiveAllocator)(
406 THIS_
407 IMemAllocator *MemAllocator
408 ) PURE;
409 STDMETHOD(KsRenegotiateAllocator)(
410 THIS
411 ) PURE;
412 STDMETHOD_(LONG, KsIncrementPendingIoCount)(
413 THIS
414 ) PURE;
415 STDMETHOD_(LONG, KsDecrementPendingIoCount)(
416 THIS
417 ) PURE;
418 STDMETHOD(KsQualityNotify)(
419 THIS_
420 ULONG Proportion,
421 REFERENCE_TIME TimeDelta
422 ) PURE;
423 };
424
425 interface DECLSPEC_UUID("7bb38260-d19c-11d2-b38a-00a0c95ec22e") IKsPinEx;
426 #undef INTERFACE
427 #define INTERFACE IKsPinEx
428 DECLARE_INTERFACE_(IKsPinEx, IKsPin)
429 {
430 STDMETHOD_(VOID, KsNotifyError)(
431 THIS_
432 IMediaSample* Sample,
433 HRESULT hr
434 ) PURE;
435 };
436
437 interface DECLSPEC_UUID("e539cd90-a8b4-11d1-8189-00a0c9062802") IKsPinPipe;
438 #undef INTERFACE
439 #define INTERFACE IKsPinPipe
440 DECLARE_INTERFACE_(IKsPinPipe, IUnknown)
441 {
442 STDMETHOD(KsGetPinFramingCache)(
443 THIS_
444 PKSALLOCATOR_FRAMING_EX *FramingEx,
445 PFRAMING_PROP FramingProp,
446 FRAMING_CACHE_OPS Option
447 ) PURE;
448 STDMETHOD(KsSetPinFramingCache)(
449 THIS_
450 PKSALLOCATOR_FRAMING_EX FramingEx,
451 PFRAMING_PROP FramingProp,
452 FRAMING_CACHE_OPS Option
453 ) PURE;
454 STDMETHOD_(IPin*, KsGetConnectedPin)(
455 THIS
456 ) PURE;
457 STDMETHOD_(IKsAllocatorEx*, KsGetPipe)(
458 THIS_
459 KSPEEKOPERATION Operation
460 ) PURE;
461 STDMETHOD(KsSetPipe)(
462 THIS_
463 IKsAllocatorEx *KsAllocator
464 ) PURE;
465 STDMETHOD_(ULONG, KsGetPipeAllocatorFlag)(
466 THIS
467 ) PURE;
468 STDMETHOD(KsSetPipeAllocatorFlag)(
469 THIS_
470 ULONG Flag
471 ) PURE;
472 STDMETHOD_(GUID, KsGetPinBusCache)(
473 THIS
474 ) PURE;
475 STDMETHOD(KsSetPinBusCache)(
476 THIS_
477 GUID Bus
478 ) PURE;
479 //
480 // very useful methods for tracing.
481 //
482 STDMETHOD_(PWCHAR, KsGetPinName)(
483 THIS
484 ) PURE;
485 STDMETHOD_(PWCHAR, KsGetFilterName)(
486 THIS
487 ) PURE;
488 };
489
490
491 interface DECLSPEC_UUID("CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196") IKsPinFactory;
492 #undef INTERFACE
493 #define INTERFACE IKsPinFactory
494 DECLARE_INTERFACE_(IKsPinFactory, IUnknown)
495 {
496 STDMETHOD(KsPinFactory)(
497 THIS_
498 ULONG* PinFactory
499 ) PURE;
500 };
501
502 typedef enum {
503 KsIoOperation_Write,
504 KsIoOperation_Read
505 } KSIOOPERATION;
506
507 interface DECLSPEC_UUID("5ffbaa02-49a3-11d0-9f36-00aa00a216a1") IKsDataTypeHandler;
508 #undef INTERFACE
509 #define INTERFACE IKsDataTypeHandler
510 DECLARE_INTERFACE_(IKsDataTypeHandler, IUnknown)
511 {
512 STDMETHOD(KsCompleteIoOperation)(
513 THIS_
514 IMediaSample *Sample,
515 PVOID StreamHeader,
516 KSIOOPERATION IoOperation,
517 BOOL Cancelled
518 ) PURE;
519 STDMETHOD(KsIsMediaTypeInRanges)(
520 THIS_
521 PVOID DataRanges
522 ) PURE;
523 STDMETHOD(KsPrepareIoOperation)(
524 THIS_
525 IMediaSample *Sample,
526 PVOID StreamHeader,
527 KSIOOPERATION IoOperation
528 ) PURE;
529 STDMETHOD(KsQueryExtendedSize)(
530 THIS_
531 ULONG* ExtendedSize
532 ) PURE;
533 STDMETHOD(KsSetMediaType)(
534 THIS_
535 const AM_MEDIA_TYPE* AmMediaType
536 ) PURE;
537 };
538
539 interface DECLSPEC_UUID("827D1A0E-0F73-11D2-B27A-00A0C9223196") IKsDataTypeCompletion;
540 #undef INTERFACE
541 #define INTERFACE IKsDataTypeCompletion
542 DECLARE_INTERFACE_(IKsDataTypeCompletion, IUnknown)
543 {
544 STDMETHOD(KsCompleteMediaType)(
545 THIS_
546 HANDLE FilterHandle,
547 ULONG PinFactoryId,
548 AM_MEDIA_TYPE* AmMediaType
549 ) PURE;
550 };
551
552 interface DECLSPEC_UUID("D3ABC7E0-9A61-11d0-A40D-00A0C9223196") IKsInterfaceHandler;
553 #undef INTERFACE
554 #define INTERFACE IKsInterfaceHandler
555 DECLARE_INTERFACE_(IKsInterfaceHandler, IUnknown)
556 {
557 STDMETHOD(KsSetPin)(
558 THIS_
559 IKsPin *KsPin
560 ) PURE;
561 STDMETHOD(KsProcessMediaSamples)(
562 THIS_
563 IKsDataTypeHandler *KsDataTypeHandler,
564 IMediaSample** SampleList,
565 PLONG SampleCount,
566 KSIOOPERATION IoOperation,
567 PKSSTREAM_SEGMENT *StreamSegment
568 ) PURE;
569 STDMETHOD(KsCompleteIo)(
570 THIS_
571 PKSSTREAM_SEGMENT StreamSegment
572 ) PURE;
573 };
574
575
576 //
577 // This structure definition is the common header required by the proxy to
578 // dispatch the stream segment to the interface handler. Interface handlers
579 // will create extended structures to include other information such as
580 // media samples, extended header size and so on.
581 //
582
583 typedef struct _KSSTREAM_SEGMENT {
584 IKsInterfaceHandler *KsInterfaceHandler;
585 IKsDataTypeHandler *KsDataTypeHandler;
586 KSIOOPERATION IoOperation;
587 HANDLE CompletionEvent;
588
589 } KSSTREAM_SEGMENT;
590
591 interface DECLSPEC_UUID("423c13a2-2070-11d0-9ef7-00aa00a216a1") IKsObject;
592 #undef INTERFACE
593 #define INTERFACE IKsObject
594 DECLARE_INTERFACE_(IKsObject, IUnknown)
595 {
596 STDMETHOD_(HANDLE, KsGetObjectHandle)(
597 THIS
598 ) PURE;
599 };
600
601 interface DECLSPEC_UUID("97ebaacb-95bd-11d0-a3ea-00a0c9223196") IKsQualityForwarder;
602 #undef INTERFACE
603 #define INTERFACE IKsQualityForwarder
604 DECLARE_INTERFACE_(IKsQualityForwarder, IKsObject)
605 {
606 STDMETHOD_(VOID, KsFlushClient)(
607 THIS_
608 IKsPin* Pin
609 ) PURE;
610 };
611
612 KSDDKAPI
613 HRESULT
614 WINAPI
615 KsResolveRequiredAttributes(
616 PKSDATARANGE DataRange,
617 PKSMULTIPLE_ITEM Attributes OPTIONAL
618 );
619
620 KSDDKAPI
621 HRESULT
622 WINAPI
623 KsOpenDefaultDevice(
624 REFGUID Category,
625 ACCESS_MASK Access,
626 PHANDLE DeviceHandle
627 );
628 KSDDKAPI
629 HRESULT
630 WINAPI
631 KsSynchronousDeviceControl(
632 HANDLE Handle,
633 ULONG IoControl,
634 PVOID InBuffer,
635 ULONG InLength,
636 PVOID OutBuffer,
637 ULONG OutLength,
638 PULONG BytesReturned
639 );
640 KSDDKAPI
641 HRESULT
642 WINAPI
643 KsGetMultiplePinFactoryItems(
644 HANDLE FilterHandle,
645 ULONG PinFactoryId,
646 ULONG PropertyId,
647 PVOID* Items
648 );
649 KSDDKAPI
650 HRESULT
651 WINAPI
652 KsGetMediaTypeCount(
653 HANDLE FilterHandle,
654 ULONG PinFactoryId,
655 ULONG* MediaTypeCount
656 );
657 KSDDKAPI
658 HRESULT
659 WINAPI
660 KsGetMediaType(
661 int Position,
662 AM_MEDIA_TYPE* AmMediaType,
663 HANDLE FilterHandle,
664 ULONG PinFactoryId
665 );
666
667 #endif // __STREAMS__
668
669 #ifndef _IKsPropertySet_
670 #if !defined(__cplusplus) || _MSC_VER < 1100
671 DEFINE_GUIDEX(IID_IKsPropertySet);
672 #endif // !defined(__cplusplus) || _MSC_VER < 1100
673 #endif // _IKsPropertySet_
674
675 #ifndef _IKsControl_
676 #if !defined(__cplusplus) || _MSC_VER < 1100
677 DEFINE_GUIDEX(IID_IKsControl);
678 #endif // !defined(__cplusplus) || _MSC_VER < 1100
679 #endif // _IKsControl_
680
681 #if !defined(__cplusplus) || _MSC_VER < 1100
682 DEFINE_GUIDEX(IID_IKsAggregateControl);
683 #endif // !defined(__cplusplus) || _MSC_VER < 1100
684
685 #ifndef _IKsTopology_
686 #if !defined(__cplusplus) || _MSC_VER < 1100
687 DEFINE_GUIDEX(IID_IKsTopology);
688 #endif // !defined(__cplusplus) || _MSC_VER < 1100
689 #endif // _IKsTopology_
690
691 DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196", CLSID_Proxy);
692 #define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
693
694 #else // !_KS_
695
696 #ifndef _IKsPropertySet_
697 #if !defined(__cplusplus) || _MSC_VER < 1100
698 DEFINE_GUID(IID_IKsPropertySet, STATIC_IID_IKsPropertySet);
699 #endif // !defined(__cplusplus) || _MSC_VER < 1100
700 #endif // _IKsPropertySet_
701
702 #if !defined(__cplusplus) || _MSC_VER < 1100
703 DEFINE_GUID(CLSID_Proxy, STATIC_CLSID_Proxy);
704 #else // defined(__cplusplus) && _MSC_VER >= 1100
705 DECLSPEC_UUID("17CCA71B-ECD7-11D0-B908-00A0C9223196") CLSID_Proxy;
706 #endif // defined(__cplusplus) && _MSC_VER >= 1100
707
708 #endif // !_KS_
709
710 #ifndef _IKsPropertySet_
711 #define _IKsPropertySet_
712
713 #define KSPROPERTY_SUPPORT_GET 1
714 #define KSPROPERTY_SUPPORT_SET 2
715
716 #ifdef DECLARE_INTERFACE_
717
718 interface DECLSPEC_UUID("31EFAC30-515C-11d0-A9AA-00aa0061be93") IKsPropertySet;
719 #undef INTERFACE
720 #define INTERFACE IKsPropertySet
721 DECLARE_INTERFACE_(IKsPropertySet, IUnknown)
722 {
723 STDMETHOD(Set)(
724 THIS_
725 IN REFGUID PropSet,
726 IN ULONG Id,
727 IN LPVOID InstanceData,
728 IN ULONG InstanceLength,
729 IN LPVOID PropertyData,
730 IN ULONG DataLength
731 ) PURE;
732
733 STDMETHOD(Get)(
734 THIS_
735 IN REFGUID PropSet,
736 IN ULONG Id,
737 IN LPVOID InstanceData,
738 IN ULONG InstanceLength,
739 OUT LPVOID PropertyData,
740 IN ULONG DataLength,
741 OUT ULONG* BytesReturned
742 ) PURE;
743
744 STDMETHOD(QuerySupported)(
745 THIS_
746 IN REFGUID PropSet,
747 IN ULONG Id,
748 OUT ULONG* TypeSupport
749 ) PURE;
750 };
751
752 #endif // DECLARE_INTERFACE_
753
754 #endif // _IKsPropertySet_
755
756 #ifndef _IKsControl_
757 #define _IKsControl_
758
759 #ifdef DECLARE_INTERFACE_
760
761 interface DECLSPEC_UUID("28F54685-06FD-11D2-B27A-00A0C9223196") IKsControl;
762 #undef INTERFACE
763 #define INTERFACE IKsControl
764 DECLARE_INTERFACE_(IKsControl, IUnknown)
765 {
766 STDMETHOD(KsProperty)(
767 THIS_
768 IN PKSPROPERTY Property,
769 IN ULONG PropertyLength,
770 IN OUT LPVOID PropertyData,
771 IN ULONG DataLength,
772 OUT ULONG* BytesReturned
773 ) PURE;
774 STDMETHOD(KsMethod)(
775 THIS_
776 IN PKSMETHOD Method,
777 IN ULONG MethodLength,
778 IN OUT LPVOID MethodData,
779 IN ULONG DataLength,
780 OUT ULONG* BytesReturned
781 ) PURE;
782 STDMETHOD(KsEvent)(
783 THIS_
784 IN PKSEVENT Event OPTIONAL,
785 IN ULONG EventLength,
786 IN OUT LPVOID EventData,
787 IN ULONG DataLength,
788 OUT ULONG* BytesReturned
789 ) PURE;
790 };
791
792 #endif // DECLARE_INTERFACE_
793
794 #endif // _IKsControl_
795
796
797 #ifdef DECLARE_INTERFACE_
798
799 interface DECLSPEC_UUID("7F40EAC0-3947-11D2-874E-00A0C9223196") IKsAggregateControl;
800 #undef INTERFACE
801 #define INTERFACE IKsAggregateControl
802 DECLARE_INTERFACE_(IKsAggregateControl, IUnknown)
803 {
804 STDMETHOD(KsAddAggregate)(
805 THIS_
806 IN REFGUID AggregateClass
807 ) PURE;
808 STDMETHOD(KsRemoveAggregate)(
809 THIS_
810 IN REFGUID AggregateClass
811 ) PURE;
812 };
813
814 #endif // DECLARE_INTERFACE_
815
816 #ifndef _IKsTopology_
817 #define _IKsTopology_
818
819 #ifdef DECLARE_INTERFACE_
820
821 interface DECLSPEC_UUID("28F54683-06FD-11D2-B27A-00A0C9223196") IKsTopology;
822 #undef INTERFACE
823 #define INTERFACE IKsTopology
824 DECLARE_INTERFACE_(IKsTopology, IUnknown)
825 {
826 STDMETHOD(CreateNodeInstance)(
827 THIS_
828 IN ULONG NodeId,
829 IN ULONG Flags,
830 IN ACCESS_MASK DesiredAccess,
831 IN IUnknown* UnkOuter OPTIONAL,
832 IN REFGUID InterfaceId,
833 OUT LPVOID* Interface
834 ) PURE;
835 };
836
837 #endif // DECLARE_INTERFACE_
838
839 #endif // _IKsTopology_
840
841 #ifdef __cplusplus
842 }
843 #endif // __cplusplus
844
845 #endif // __KSPROXY__

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26