1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 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 0x423c13a2,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1 22 23 #define STATIC_IID_IKsPinEx \ 24 0x7bb38260,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e 25 26 #define STATIC_IID_IKsPin \ 27 0xb61178d1,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1 28 29 #define STATIC_IID_IKsPinPipe \ 30 0xe539cd90,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02 31 32 #define STATIC_IID_IKsDataTypeHandler \ 33 0x5ffbaa02,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1 34 35 #define STATIC_IID_IKsDataTypeCompletion \ 36 0x827D1A0E,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 37 38 #define STATIC_IID_IKsInterfaceHandler \ 39 0xD3ABC7E0,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96 40 41 #define STATIC_IID_IKsClockPropertySet \ 42 0x5C5CBD84,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96 43 44 #define STATIC_IID_IKsAllocator \ 45 0x8da64899,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a 46 47 #define STATIC_IID_IKsAllocatorEx \ 48 0x091bb63a,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02 49 50 #ifndef STATIC_IID_IKsPropertySet 51 #define STATIC_IID_IKsPropertySet \ 52 0x31EFAC30,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93 53 #endif 54 55 #define STATIC_IID_IKsTopology \ 56 0x28F54683,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 57 58 #ifndef STATIC_IID_IKsControl 59 #define STATIC_IID_IKsControl \ 60 0x28F54685,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 61 #endif 62 63 #define STATIC_IID_IKsAggregateControl \ 64 0x7F40EAC0,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96 65 66 #define STATIC_CLSID_Proxy \ 67 0x17CCA71B,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 __LONG32 cBuffers; 194 __LONG32 cbBuffer; 195 __LONG32 cbAlign; 196 __LONG32 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 640