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
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
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
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
00564 #endif
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
00597 #endif
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
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
00632 #endif
00633
00634 #ifdef __cplusplus
00635 }
00636 #endif
00637
00638 #endif
00639