PortAudio
2.0
|
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