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