PortAudio 2.0

ksproxy.h

Go to the documentation of this file.
00001 
00006 #ifndef __KSPROXY__
00007 #define __KSPROXY__
00008 
00009 #ifdef __cplusplus
00010 extern "C" {
00011 #endif
00012 
00013 #undef KSDDKAPI
00014 #ifdef _KSDDK_
00015 #define KSDDKAPI
00016 #else
00017 #define KSDDKAPI DECLSPEC_IMPORT
00018 #endif
00019 
00020 #define STATIC_IID_IKsObject                                            \
00021         0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
00022 
00023 #define STATIC_IID_IKsPinEx                                             \
00024         0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
00025 
00026 #define STATIC_IID_IKsPin                                               \
00027         0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
00028 
00029 #define STATIC_IID_IKsPinPipe                                           \
00030         0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
00031 
00032 #define STATIC_IID_IKsDataTypeHandler                                   \
00033         0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
00034 
00035 #define STATIC_IID_IKsDataTypeCompletion                                \
00036         0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
00037 
00038 #define STATIC_IID_IKsInterfaceHandler                                  \
00039         0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
00040 
00041 #define STATIC_IID_IKsClockPropertySet                                  \
00042         0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
00043 
00044 #define STATIC_IID_IKsAllocator                                         \
00045         0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
00046 
00047 #define STATIC_IID_IKsAllocatorEx                                       \
00048         0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
00049 
00050 #ifndef STATIC_IID_IKsPropertySet
00051 #define STATIC_IID_IKsPropertySet                                       \
00052         0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
00053 #endif
00054 
00055 #define STATIC_IID_IKsTopology                                          \
00056         0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
00057 
00058 #ifndef STATIC_IID_IKsControl
00059 #define STATIC_IID_IKsControl                                           \
00060         0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
00061 #endif
00062 
00063 #define STATIC_IID_IKsAggregateControl                                  \
00064         0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
00065 
00066 #define STATIC_CLSID_Proxy                                              \
00067         0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
00068 
00069 #ifdef _KS_
00070 
00071 DEFINE_GUIDEX(IID_IKsObject);
00072 
00073 DEFINE_GUIDEX(IID_IKsPin);
00074 
00075 DEFINE_GUIDEX(IID_IKsPinEx);
00076 
00077 DEFINE_GUIDEX(IID_IKsPinPipe);
00078 
00079 DEFINE_GUIDEX(IID_IKsDataTypeHandler);
00080 
00081 DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
00082 
00083 DEFINE_GUIDEX(IID_IKsInterfaceHandler);
00084 
00085 DEFINE_GUIDEX(IID_IKsClockPropertySet);
00086 
00087 DEFINE_GUIDEX(IID_IKsAllocator);
00088 
00089 DEFINE_GUIDEX(IID_IKsAllocatorEx);
00090 
00091 #define IID_IKsQualityForwarder KSCATEGORY_QUALITY
00092 #define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
00093 
00094 typedef enum {
00095   KsAllocatorMode_User,
00096   KsAllocatorMode_Kernel
00097 } KSALLOCATORMODE;
00098 
00099 typedef enum {
00100   FramingProp_Uninitialized,
00101   FramingProp_None,
00102   FramingProp_Old,
00103   FramingProp_Ex
00104 } FRAMING_PROP;
00105 
00106 typedef FRAMING_PROP *PFRAMING_PROP;
00107 
00108 typedef enum {
00109   Framing_Cache_Update,
00110   Framing_Cache_ReadLast,
00111   Framing_Cache_ReadOrig,
00112   Framing_Cache_Write
00113 } FRAMING_CACHE_OPS;
00114 
00115 typedef struct {
00116   LONGLONG MinTotalNominator;
00117   LONGLONG MaxTotalNominator;
00118   LONGLONG TotalDenominator;
00119 } OPTIMAL_WEIGHT_TOTALS;
00120 
00121 typedef struct IPin IPin;
00122 typedef struct IKsPin IKsPin;
00123 typedef struct IKsAllocator IKsAllocator;
00124 typedef struct IKsAllocatorEx IKsAllocatorEx;
00125 
00126 #define AllocatorStrategy_DontCare                      0
00127 #define AllocatorStrategy_MinimizeNumberOfFrames        0x00000001
00128 #define AllocatorStrategy_MinimizeFrameSize             0x00000002
00129 #define AllocatorStrategy_MinimizeNumberOfAllocators    0x00000004
00130 #define AllocatorStrategy_MaximizeSpeed                 0x00000008
00131 
00132 #define PipeFactor_None                                 0
00133 #define PipeFactor_UserModeUpstream                     0x00000001
00134 #define PipeFactor_UserModeDownstream                   0x00000002
00135 #define PipeFactor_MemoryTypes                          0x00000004
00136 #define PipeFactor_Flags                                0x00000008
00137 #define PipeFactor_PhysicalRanges                       0x00000010
00138 #define PipeFactor_OptimalRanges                        0x00000020
00139 #define PipeFactor_FixedCompression                     0x00000040
00140 #define PipeFactor_UnknownCompression                   0x00000080
00141 
00142 #define PipeFactor_Buffers                              0x00000100
00143 #define PipeFactor_Align                                0x00000200
00144 #define PipeFactor_PhysicalEnd                          0x00000400
00145 #define PipeFactor_LogicalEnd                           0x00000800
00146 
00147 typedef enum {
00148   PipeState_DontCare,
00149   PipeState_RangeNotFixed,
00150   PipeState_RangeFixed,
00151   PipeState_CompressionUnknown,
00152   PipeState_Finalized
00153 } PIPE_STATE;
00154 
00155 typedef struct _PIPE_DIMENSIONS {
00156   KS_COMPRESSION AllocatorPin;
00157   KS_COMPRESSION MaxExpansionPin;
00158   KS_COMPRESSION EndPin;
00159 } PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
00160 
00161 typedef enum {
00162   Pipe_Allocator_None,
00163   Pipe_Allocator_FirstPin,
00164   Pipe_Allocator_LastPin,
00165   Pipe_Allocator_MiddlePin
00166 } PIPE_ALLOCATOR_PLACE;
00167 
00168 typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
00169 
00170 typedef enum {
00171   KS_MemoryTypeDontCare = 0,
00172   KS_MemoryTypeKernelPaged,
00173   KS_MemoryTypeKernelNonPaged,
00174   KS_MemoryTypeDeviceHostMapped,
00175   KS_MemoryTypeDeviceSpecific,
00176   KS_MemoryTypeUser,
00177   KS_MemoryTypeAnyHost
00178 } KS_LogicalMemoryType;
00179 
00180 typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
00181 
00182 typedef struct _PIPE_TERMINATION {
00183   ULONG Flags;
00184   ULONG OutsideFactors;
00185   ULONG Weigth;
00186   KS_FRAMING_RANGE PhysicalRange;
00187   KS_FRAMING_RANGE_WEIGHTED OptimalRange;
00188   KS_COMPRESSION Compression;
00189 } PIPE_TERMINATION;
00190 
00191 typedef struct _ALLOCATOR_PROPERTIES_EX
00192 {
00193   long cBuffers;
00194   long cbBuffer;
00195   long cbAlign;
00196   long cbPrefix;
00197 
00198   GUID MemoryType;
00199   GUID BusType;
00200   PIPE_STATE State;
00201   PIPE_TERMINATION Input;
00202   PIPE_TERMINATION Output;
00203   ULONG Strategy;
00204   ULONG Flags;
00205   ULONG Weight;
00206   KS_LogicalMemoryType LogicalMemoryType;
00207   PIPE_ALLOCATOR_PLACE AllocatorPlace;
00208   PIPE_DIMENSIONS Dimensions;
00209   KS_FRAMING_RANGE PhysicalRange;
00210   IKsAllocatorEx *PrevSegment;
00211   ULONG CountNextSegments;
00212   IKsAllocatorEx **NextSegments;
00213   ULONG InsideFactors;
00214   ULONG NumberPins;
00215 } ALLOCATOR_PROPERTIES_EX;
00216 
00217 typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
00218 
00219 #ifdef __STREAMS__
00220 
00221 struct IKsClockPropertySet;
00222 #undef INTERFACE
00223 #define INTERFACE IKsClockPropertySet
00224 DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)
00225 {
00226   STDMETHOD(KsGetTime)                  (THIS_
00227                                                 LONGLONG *Time
00228                                         ) PURE;
00229   STDMETHOD(KsSetTime)                  (THIS_
00230                                                 LONGLONG Time
00231                                         ) PURE;
00232   STDMETHOD(KsGetPhysicalTime)          (THIS_
00233                                                 LONGLONG *Time
00234                                         ) PURE;
00235   STDMETHOD(KsSetPhysicalTime)          (THIS_
00236                                                 LONGLONG Time
00237                                         ) PURE;
00238   STDMETHOD(KsGetCorrelatedTime)        (THIS_
00239                                                 KSCORRELATED_TIME *CorrelatedTime
00240                                         ) PURE;
00241   STDMETHOD(KsSetCorrelatedTime)        (THIS_
00242                                                 KSCORRELATED_TIME *CorrelatedTime
00243                                         ) PURE;
00244   STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_
00245                                                 KSCORRELATED_TIME *CorrelatedTime
00246                                         ) PURE;
00247   STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_
00248                                                 KSCORRELATED_TIME *CorrelatedTime
00249                                         ) PURE;
00250   STDMETHOD(KsGetResolution)            (THIS_
00251                                                 KSRESOLUTION *Resolution
00252                                         ) PURE;
00253   STDMETHOD(KsGetState)                 (THIS_
00254                                                 KSSTATE *State
00255                                         ) PURE;
00256 };
00257 
00258 struct IKsAllocator;
00259 #undef INTERFACE
00260 #define INTERFACE IKsAllocator
00261 DECLARE_INTERFACE_(IKsAllocator,IUnknown)
00262 {
00263   STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
00264   STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
00265   STDMETHOD(KsGetAllocatorStatus)       (THIS_
00266                                                 PKSSTREAMALLOCATOR_STATUS AllocatorStatus
00267                                         ) PURE;
00268   STDMETHOD_(VOID,KsSetAllocatorMode)   (THIS_
00269                                                 KSALLOCATORMODE Mode
00270                                         ) PURE;
00271 };
00272 
00273 struct IKsAllocatorEx;
00274 #undef INTERFACE
00275 #define INTERFACE IKsAllocatorEx
00276 DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)
00277 {
00278   STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
00279   STDMETHOD_(VOID,KsSetProperties)      (THIS_
00280                                                 PALLOCATOR_PROPERTIES_EX
00281                                         ) PURE;
00282   STDMETHOD_(VOID,KsSetAllocatorHandle) (THIS_
00283                                                 HANDLE AllocatorHandle
00284                                         ) PURE;
00285   STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_
00286                                                 IKsPin *KsPin
00287                                         ) PURE;
00288 };
00289 
00290 typedef enum {
00291   KsPeekOperation_PeekOnly,
00292   KsPeekOperation_AddRef
00293 } KSPEEKOPERATION;
00294 
00295 typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
00296 struct IKsPin;
00297 
00298 #undef INTERFACE
00299 #define INTERFACE IKsPin
00300 DECLARE_INTERFACE_(IKsPin,IUnknown)
00301 {
00302   STDMETHOD(KsQueryMediums)             (THIS_
00303                                                 PKSMULTIPLE_ITEM *MediumList
00304                                         ) PURE;
00305   STDMETHOD(KsQueryInterfaces)          (THIS_
00306                                                 PKSMULTIPLE_ITEM *InterfaceList
00307                                         ) PURE;
00308   STDMETHOD(KsCreateSinkPinHandle)      (THIS_
00309                                                 KSPIN_INTERFACE& Interface,
00310                                                 KSPIN_MEDIUM& Medium
00311                                         ) PURE;
00312   STDMETHOD(KsGetCurrentCommunication)  (THIS_
00313                                                 KSPIN_COMMUNICATION *Communication,
00314                                                 KSPIN_INTERFACE *Interface,
00315                                                 KSPIN_MEDIUM *Medium
00316                                         ) PURE;
00317   STDMETHOD(KsPropagateAcquire)         (THIS) PURE;
00318   STDMETHOD(KsDeliver)                  (THIS_
00319                                                 IMediaSample *Sample,
00320                                                 ULONG Flags
00321                                         ) PURE;
00322   STDMETHOD(KsMediaSamplesCompleted)    (THIS_
00323                                                 PKSSTREAM_SEGMENT StreamSegment
00324                                         ) PURE;
00325   STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_
00326                                                 KSPEEKOPERATION Operation
00327                                         ) PURE;
00328   STDMETHOD(KsReceiveAllocator)         (THIS_
00329                                                 IMemAllocator *MemAllocator
00330                                         ) PURE;
00331   STDMETHOD(KsRenegotiateAllocator)     (THIS) PURE;
00332   STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
00333   STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
00334   STDMETHOD(KsQualityNotify)            (THIS_
00335                                                 ULONG Proportion,
00336                                                 REFERENCE_TIME TimeDelta
00337                                         ) PURE;
00338 };
00339 
00340 struct IKsPinEx;
00341 #undef INTERFACE
00342 #define INTERFACE IKsPinEx
00343 DECLARE_INTERFACE_(IKsPinEx,IKsPin)
00344 {
00345   STDMETHOD_(VOID,KsNotifyError)        (THIS_
00346                                                 IMediaSample *Sample,
00347                                                 HRESULT hr
00348                                         ) PURE;
00349 };
00350 
00351 struct IKsPinPipe;
00352 #undef INTERFACE
00353 #define INTERFACE IKsPinPipe
00354 DECLARE_INTERFACE_(IKsPinPipe,IUnknown)
00355 {
00356   STDMETHOD(KsGetPinFramingCache)       (THIS_
00357                                                 PKSALLOCATOR_FRAMING_EX *FramingEx,
00358                                                 PFRAMING_PROP FramingProp,
00359                                                 FRAMING_CACHE_OPS Option
00360                                         ) PURE;
00361   STDMETHOD(KsSetPinFramingCache)       (THIS_
00362                                                 PKSALLOCATOR_FRAMING_EX FramingEx,
00363                                                 PFRAMING_PROP FramingProp,
00364                                                 FRAMING_CACHE_OPS Option
00365                                         ) PURE;
00366   STDMETHOD_(IPin*,KsGetConnectedPin)   (THIS) PURE;
00367   STDMETHOD_(IKsAllocatorEx*,KsGetPipe) (THIS_
00368                                                 KSPEEKOPERATION Operation
00369                                         ) PURE;
00370   STDMETHOD(KsSetPipe)                  (THIS_
00371                                                 IKsAllocatorEx *KsAllocator
00372                                         ) PURE;
00373   STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
00374   STDMETHOD(KsSetPipeAllocatorFlag)     (THIS_
00375                                                 ULONG Flag
00376                                         ) PURE;
00377   STDMETHOD_(GUID,KsGetPinBusCache)     (THIS) PURE;
00378   STDMETHOD(KsSetPinBusCache)           (THIS_
00379                                                 GUID Bus
00380                                         ) PURE;
00381   STDMETHOD_(PWCHAR,KsGetPinName)       (THIS) PURE;
00382   STDMETHOD_(PWCHAR,KsGetFilterName)    (THIS) PURE;
00383 };
00384 
00385 struct IKsPinFactory;
00386 #undef INTERFACE
00387 #define INTERFACE IKsPinFactory
00388 DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
00389 {
00390   STDMETHOD(KsPinFactory)               (THIS_
00391                                                 ULONG *PinFactory
00392                                         ) PURE;
00393 };
00394 
00395 typedef enum {
00396   KsIoOperation_Write,
00397   KsIoOperation_Read
00398 } KSIOOPERATION;
00399 
00400 struct IKsDataTypeHandler;
00401 #undef INTERFACE
00402 #define INTERFACE IKsDataTypeHandler
00403 DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)
00404 {
00405   STDMETHOD(KsCompleteIoOperation)      (THIS_
00406                                                 IMediaSample *Sample,
00407                                                 PVOID StreamHeader,
00408                                                 KSIOOPERATION IoOperation,
00409                                                 WINBOOL Cancelled
00410                                         ) PURE;
00411   STDMETHOD(KsIsMediaTypeInRanges)      (THIS_
00412                                                 PVOID DataRanges
00413                                         ) PURE;
00414   STDMETHOD(KsPrepareIoOperation)       (THIS_
00415                                                 IMediaSample *Sample,
00416                                                 PVOID StreamHeader,
00417                                                 KSIOOPERATION IoOperation
00418                                         ) PURE;
00419   STDMETHOD(KsQueryExtendedSize)        (THIS_
00420                                                 ULONG *ExtendedSize
00421                                         ) PURE;
00422   STDMETHOD(KsSetMediaType)             (THIS_
00423                                                 const AM_MEDIA_TYPE *AmMediaType
00424                                         ) PURE;
00425 };
00426 
00427 struct IKsDataTypeCompletion;
00428 #undef INTERFACE
00429 #define INTERFACE IKsDataTypeCompletion
00430 DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
00431 {
00432   STDMETHOD(KsCompleteMediaType)        (THIS_
00433                                                 HANDLE FilterHandle,
00434                                                 ULONG PinFactoryId,
00435                                                 AM_MEDIA_TYPE *AmMediaType
00436                                         ) PURE;
00437 };
00438 
00439 struct IKsInterfaceHandler;
00440 #undef INTERFACE
00441 #define INTERFACE IKsInterfaceHandler
00442 DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)
00443 {
00444   STDMETHOD(KsSetPin)                   (THIS_
00445                                                 IKsPin *KsPin
00446                                         ) PURE;
00447   STDMETHOD(KsProcessMediaSamples)      (THIS_
00448                                                 IKsDataTypeHandler *KsDataTypeHandler,
00449                                                 IMediaSample **SampleList,
00450                                                 PLONG SampleCount,
00451                                                 KSIOOPERATION IoOperation,
00452                                                 PKSSTREAM_SEGMENT *StreamSegment
00453                                         ) PURE;
00454   STDMETHOD(KsCompleteIo)               (THIS_
00455                                                 PKSSTREAM_SEGMENT StreamSegment
00456                                         ) PURE;
00457 };
00458 
00459 typedef struct _KSSTREAM_SEGMENT {
00460   IKsInterfaceHandler *KsInterfaceHandler;
00461   IKsDataTypeHandler *KsDataTypeHandler;
00462   KSIOOPERATION IoOperation;
00463   HANDLE CompletionEvent;
00464 } KSSTREAM_SEGMENT;
00465 
00466 struct IKsObject;
00467 #undef INTERFACE
00468 #define INTERFACE IKsObject
00469 DECLARE_INTERFACE_(IKsObject,IUnknown)
00470 {
00471   STDMETHOD_(HANDLE,KsGetObjectHandle)  (THIS) PURE;
00472 };
00473 
00474 struct IKsQualityForwarder;
00475 #undef INTERFACE
00476 #define INTERFACE IKsQualityForwarder
00477 DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
00478 {
00479   STDMETHOD_(VOID,KsFlushClient)        (THIS_
00480                                                 IKsPin *Pin
00481                                         ) PURE;
00482 };
00483 
00484 struct IKsNotifyEvent;
00485 #undef INTERFACE
00486 #define INTERFACE IKsNotifyEvent
00487 DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)
00488 {
00489   STDMETHOD(KsNotifyEvent)              (THIS_
00490                                                 ULONG Event,
00491                                                 ULONG_PTR lParam1,
00492                                                 ULONG_PTR lParam2
00493                                         ) PURE;
00494 };
00495 
00496 KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
00497 KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
00498 KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
00499 KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
00500 KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
00501 KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
00502 #endif /* __STREAMS__ */
00503 
00504 #ifndef _IKsPropertySet_
00505 DEFINE_GUIDEX(IID_IKsPropertySet);
00506 #endif
00507 
00508 #ifndef _IKsControl_
00509 DEFINE_GUIDEX(IID_IKsControl);
00510 #endif
00511 
00512 DEFINE_GUIDEX(IID_IKsAggregateControl);
00513 #ifndef _IKsTopology_
00514 DEFINE_GUIDEX(IID_IKsTopology);
00515 #endif
00516 DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
00517 #define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
00518 
00519 #else /* _KS_ */
00520 
00521 #ifndef _IKsPropertySet_
00522 DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
00523 #endif
00524 
00525 DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
00526 
00527 #endif /* _KS_ */
00528 
00529 #ifndef _IKsPropertySet_
00530 #define _IKsPropertySet_
00531 #define KSPROPERTY_SUPPORT_GET 1
00532 #define KSPROPERTY_SUPPORT_SET 2
00533 
00534 #ifdef DECLARE_INTERFACE_
00535 struct IKsPropertySet;
00536 #undef INTERFACE
00537 #define INTERFACE IKsPropertySet
00538 DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
00539 {
00540   STDMETHOD(Set)                        (THIS_
00541                                                 REFGUID PropSet,
00542                                                 ULONG Id,
00543                                                 LPVOID InstanceData,
00544                                                 ULONG InstanceLength,
00545                                                 LPVOID PropertyData,
00546                                                 ULONG DataLength
00547                                         ) PURE;
00548   STDMETHOD(Get)                        (THIS_
00549                                                 REFGUID PropSet,
00550                                                 ULONG Id,
00551                                                 LPVOID InstanceData,
00552                                                 ULONG InstanceLength,
00553                                                 LPVOID PropertyData,
00554                                                 ULONG DataLength,
00555                                                 ULONG *BytesReturned
00556                                         ) PURE;
00557   STDMETHOD(QuerySupported)             (THIS_
00558                                                 REFGUID PropSet,
00559                                                 ULONG Id,
00560                                                 ULONG *TypeSupport
00561                                         ) PURE;
00562 };
00563 #endif /* DECLARE_INTERFACE_ */
00564 #endif /* _IKsPropertySet_ */
00565 
00566 #ifndef _IKsControl_
00567 #define _IKsControl_
00568 #ifdef DECLARE_INTERFACE_
00569 struct IKsControl;
00570 #undef INTERFACE
00571 #define INTERFACE IKsControl
00572 DECLARE_INTERFACE_(IKsControl,IUnknown)
00573 {
00574   STDMETHOD(KsProperty)                 (THIS_
00575                                                 PKSPROPERTY Property,
00576                                                 ULONG PropertyLength,
00577                                                 LPVOID PropertyData,
00578                                                 ULONG DataLength,
00579                                                 ULONG *BytesReturned
00580                                         ) PURE;
00581   STDMETHOD(KsMethod)                   (THIS_
00582                                                 PKSMETHOD Method,
00583                                                 ULONG MethodLength,
00584                                                 LPVOID MethodData,
00585                                                 ULONG DataLength,
00586                                                 ULONG *BytesReturned
00587                                         ) PURE;
00588   STDMETHOD(KsEvent)                    (THIS_
00589                                                 PKSEVENT Event,
00590                                                 ULONG EventLength,
00591                                                 LPVOID EventData,
00592                                                 ULONG DataLength,
00593                                                 ULONG *BytesReturned
00594                                         ) PURE;
00595 };
00596 #endif /* DECLARE_INTERFACE_ */
00597 #endif /* _IKsControl_ */
00598 
00599 #ifdef DECLARE_INTERFACE_
00600 struct IKsAggregateControl;
00601 #undef INTERFACE
00602 #define INTERFACE IKsAggregateControl
00603 DECLARE_INTERFACE_(IKsAggregateControl,IUnknown)
00604 {
00605   STDMETHOD(KsAddAggregate)             (THIS_
00606                                                 REFGUID AggregateClass
00607                                         ) PURE;
00608   STDMETHOD(KsRemoveAggregate)          (THIS_
00609                                                 REFGUID AggregateClass
00610                                         ) PURE;
00611 };
00612 #endif /* DECLARE_INTERFACE_ */
00613 
00614 #ifndef _IKsTopology_
00615 #define _IKsTopology_
00616 #ifdef DECLARE_INTERFACE_
00617 struct IKsTopology;
00618 #undef INTERFACE
00619 #define INTERFACE IKsTopology
00620 DECLARE_INTERFACE_(IKsTopology,IUnknown)
00621 {
00622   STDMETHOD(CreateNodeInstance)         (THIS_
00623                                                 ULONG NodeId,
00624                                                 ULONG Flags,
00625                                                 ACCESS_MASK DesiredAccess,
00626                                                 IUnknown *UnkOuter,
00627                                                 REFGUID InterfaceId,
00628                                                 LPVOID *Interface
00629                                         ) PURE;
00630 };
00631 #endif /* DECLARE_INTERFACE_ */
00632 #endif /* _IKsTopology_ */
00633 
00634 #ifdef __cplusplus
00635 }
00636 #endif
00637 
00638 #endif /* __KSPROXY__ */
00639