Reactos
at master 110 lines 4.2 kB view raw
1/* 2 * Definition of IKsControl 3 * 4 * Copyright (C) 2012 Christian Costa 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21#ifndef _DMKSCTRL_ 22#define _DMKSCTRL_ 23 24#include <pshpack8.h> 25 26#include <objbase.h> 27 28#ifndef _KS_ 29#define _KS_ 30 31typedef struct { 32 union { 33 struct { 34 GUID Set; 35 ULONG Id; 36 ULONG Flags; 37 } DUMMYSTRUCTNAME; 38 LONGLONG Alignment; 39 } DUMMYUNIONNAME; 40} KSIDENTIFIER, *PKSIDENTIFIER; 41 42typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY, KSMETHOD, *PKSMETHOD, KSEVENT, *PKSEVENT; 43 44#define KSMETHOD_TYPE_NONE 0x00000000 45#define KSMETHOD_TYPE_READ 0x00000001 46#define KSMETHOD_TYPE_WRITE 0x00000002 47#define KSMETHOD_TYPE_MODIFY 0x00000003 48#define KSMETHOD_TYPE_SOURCE 0x00000004 49 50#define KSMETHOD_TYPE_SEND 0x00000001 51#define KSMETHOD_TYPE_SETSUPPORT 0x00000100 52#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200 53 54#define KSPROPERTY_TYPE_GET 0x00000001 55#define KSPROPERTY_TYPE_SET 0x00000002 56#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100 57#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200 58#define KSPROPERTY_TYPE_RELATIONS 0x00000400 59#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800 60#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000 61#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000 62#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000 63#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000 64#define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000 65 66#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000 67 68#define INTERFACE IKsControl 69DECLARE_INTERFACE_(IKsControl,IUnknown) 70{ 71 /*** IUnknown methods ***/ 72 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 73 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 74 STDMETHOD_(ULONG,Release)(THIS) PURE; 75 /*** IKsControl methods ***/ 76 STDMETHOD(KsProperty)(THIS_ PKSPROPERTY Property, ULONG PropertyLength, LPVOID PropertyData, 77 ULONG DataLength, ULONG* BytesReturned) PURE; 78 STDMETHOD(KsMethod)(THIS_ PKSMETHOD Method, ULONG MethodLength, LPVOID MethodData, 79 ULONG DataLength, ULONG* BytesReturned) PURE; 80 STDMETHOD(KsEvent)(THIS_ PKSEVENT Event, ULONG EventLength, LPVOID EventData, 81 ULONG DataLength, ULONG* BytesReturned) PURE; 82}; 83#undef INTERFACE 84 85#if !defined(__cplusplus) || defined(CINTERFACE) 86/*** IUnknown methods ***/ 87#define IKsControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 88#define IKsControl_AddRef(p) (p)->lpVtbl->AddRef(p) 89#define IKsControl_Release(p) (p)->lpVtbl->Release(p) 90/*** IKsControl methods ***/ 91#define IKsControl_KsProperty(p,a,b,c,d,e) (p)->lpVtbl->KsProperty(p,a,b,c,d,e) 92#define IKsControl_KsMethod(p,a,b,c,d,e) (p)->lpVtbl->KsMethod(p,a,b,c,d,e) 93#define IKsControl_KsEvent(p,a,b,c,d,e) (p)->lpVtbl->KsEvent(p,a,b,c,d,e) 94#endif 95 96#endif /* _KS_ */ 97 98#include <poppack.h> 99 100 101DEFINE_GUID(IID_IKsControl, 0x28f54685, 0x06fd, 0x11d2, 0xb2, 0x7a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96); 102 103#ifndef _KSMEDIA_ 104 105DEFINE_GUID(KSDATAFORMAT_SUBTYPE_MIDI, 0x1d262760, 0xe957, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00); 106DEFINE_GUID(KSDATAFORMAT_SUBTYPE_DIRECTMUSIC, 0x1a82f8bc, 0x3f8b, 0x11d2, 0xb7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1); 107 108#endif 109 110#endif /* _DMKSCTRL_ */