Home | History | Annotate | Download | only in include
      1 #undef INTERFACE
      2 /*
      3  * DirectSound driver
      4  * (DirectX 5 version)
      5  *
      6  * Copyright (C) 2000 Ove Kaaven
      7  *
      8  * This library is free software; you can redistribute it and/or
      9  * modify it under the terms of the GNU Lesser General Public
     10  * License as published by the Free Software Foundation; either
     11  * version 2.1 of the License, or (at your option) any later version.
     12  *
     13  * This library is distributed in the hope that it will be useful,
     14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     16  * Lesser General Public License for more details.
     17  *
     18  * You should have received a copy of the GNU Lesser General Public
     19  * License along with this library; if not, write to the Free Software
     20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
     21  */
     22 
     23 #ifndef __WINE_DSDRIVER_H
     24 #define __WINE_DSDRIVER_H
     25 
     26 #ifdef __cplusplus
     27 extern "C" {
     28 #endif
     29 
     30 /*****************************************************************************
     31  * Predeclare the interfaces
     32  */
     33 DEFINE_GUID(IID_IDsDriver,		0x8C4233C0l, 0xB4CC, 0x11CE, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
     34 typedef struct IDsDriver *PIDSDRIVER;
     35 
     36 DEFINE_GUID(IID_IDsDriverBuffer,	0x8C4233C1l, 0xB4CC, 0x11CE, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
     37 typedef struct IDsDriverBuffer *PIDSDRIVERBUFFER;
     38 
     39 DEFINE_GUID(IID_IDsDriverPropertySet,	0x0F6F2E8E0, 0xD842, 0x11D0, 0x8F, 0x75, 0x00, 0xC0, 0x4F, 0xC2, 0x8A, 0xCA);
     40 typedef struct IDsDriverPropertySet *PIDSDRIVERPROPERTYSET;
     41 
     42 DEFINE_GUID(IID_IDsDriverNotify,	0x00363EF44, 0x3B57, 0x11D3, 0xAC, 0x79, 0x00, 0x10, 0x5A, 0x01, 0x7f, 0xe1);
     43 typedef struct IDsDriverNotify *PIDSDRIVERNOTIFY;
     44 
     45 DEFINE_GUID(IID_IDsCaptureDriver,	0x03DD10C47, 0x74FB, 0x11D3, 0x90, 0x49, 0xCB, 0xB4, 0xB3, 0x2E, 0xAA, 0x08);
     46 typedef struct IDsCaptureDriver *PIDSCDRIVER;
     47 
     48 DEFINE_GUID(IID_IDsCaptureDriverBuffer,	0x03DD10C48, 0x74FB, 0x11D3, 0x90, 0x49, 0xCB, 0xB4, 0xB3, 0x2E, 0xAA, 0x08);
     49 typedef struct IDsCaptureDriverBuffer *PIDSCDRIVERBUFFER;
     50 
     51 #define DSDDESC_DOMMSYSTEMOPEN		0x00000001
     52 #define DSDDESC_DOMMSYSTEMSETFORMAT	0x00000002
     53 #define DSDDESC_USESYSTEMMEMORY		0x00000004
     54 #define DSDDESC_DONTNEEDPRIMARYLOCK	0x00000008
     55 #define DSDDESC_DONTNEEDSECONDARYLOCK	0x00000010
     56 #define DSDDESC_DONTNEEDWRITELEAD	0x00000020
     57 
     58 #define DSDHEAP_NOHEAP			0
     59 #define DSDHEAP_CREATEHEAP		1
     60 #define DSDHEAP_USEDIRECTDRAWHEAP	2
     61 #define DSDHEAP_PRIVATEHEAP		3
     62 
     63 typedef struct _DSDRIVERDESC
     64 {
     65     DWORD      	dwFlags;
     66     CHAR	szDesc[256];
     67     CHAR	szDrvname[256];
     68     DWORD	dnDevNode;
     69     WORD	wVxdId;
     70     WORD	wReserved;
     71     ULONG	ulDeviceNum;
     72     DWORD	dwHeapType;
     73     LPVOID	pvDirectDrawHeap;
     74     DWORD	dwMemStartAddress;
     75     DWORD	dwMemEndAddress;
     76     DWORD	dwMemAllocExtra;
     77     LPVOID	pvReserved1;
     78     LPVOID	pvReserved2;
     79 } DSDRIVERDESC,*PDSDRIVERDESC;
     80 
     81 typedef struct _DSDRIVERCAPS
     82 {
     83     DWORD	dwFlags;
     84     DWORD	dwMinSecondarySampleRate;
     85     DWORD	dwMaxSecondarySampleRate;
     86     DWORD	dwPrimaryBuffers;
     87     DWORD	dwMaxHwMixingAllBuffers;
     88     DWORD	dwMaxHwMixingStaticBuffers;
     89     DWORD	dwMaxHwMixingStreamingBuffers;
     90     DWORD	dwFreeHwMixingAllBuffers;
     91     DWORD	dwFreeHwMixingStaticBuffers;
     92     DWORD	dwFreeHwMixingStreamingBuffers;
     93     DWORD	dwMaxHw3DAllBuffers;
     94     DWORD	dwMaxHw3DStaticBuffers;
     95     DWORD	dwMaxHw3DStreamingBuffers;
     96     DWORD	dwFreeHw3DAllBuffers;
     97     DWORD	dwFreeHw3DStaticBuffers;
     98     DWORD	dwFreeHw3DStreamingBuffers;
     99     DWORD	dwTotalHwMemBytes;
    100     DWORD	dwFreeHwMemBytes;
    101     DWORD	dwMaxContigFreeHwMemBytes;
    102 } DSDRIVERCAPS,*PDSDRIVERCAPS;
    103 
    104 typedef struct _DSVOLUMEPAN
    105 {
    106     DWORD	dwTotalLeftAmpFactor;
    107     DWORD	dwTotalRightAmpFactor;
    108     LONG	lVolume;
    109     DWORD	dwVolAmpFactor;
    110     LONG	lPan;
    111     DWORD	dwPanLeftAmpFactor;
    112     DWORD	dwPanRightAmpFactor;
    113 } DSVOLUMEPAN,*PDSVOLUMEPAN;
    114 
    115 typedef union _DSPROPERTY
    116 {
    117     struct {
    118 	GUID	Set;
    119 	ULONG	Id;
    120 	ULONG	Flags;
    121 	ULONG	InstanceId;
    122     } DUMMYSTRUCTNAME;
    123     ULONGLONG	Alignment;
    124 } DSPROPERTY,*PDSPROPERTY;
    125 
    126 typedef struct _DSCDRIVERCAPS
    127 {
    128     DWORD	dwSize;
    129     DWORD	dwFlags;
    130     DWORD	dwFormats;
    131     DWORD	dwChannels;
    132 } DSCDRIVERCAPS,*PDSCDRIVERCAPS;
    133 
    134 /*****************************************************************************
    135  * IDsDriver interface
    136  */
    137 #define INTERFACE IDsDriver
    138 DECLARE_INTERFACE_(IDsDriver,IUnknown)
    139 {
    140     /*** IUnknown methods ***/
    141     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    142     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    143     STDMETHOD_(ULONG,Release)(THIS) PURE;
    144     /*** IDsDriver methods ***/
    145     STDMETHOD(GetDriverDesc)(THIS_ PDSDRIVERDESC pDsDriverDesc) PURE;
    146     STDMETHOD(Open)(THIS) PURE;
    147     STDMETHOD(Close)(THIS) PURE;
    148     STDMETHOD(GetCaps)(THIS_ PDSDRIVERCAPS pDsDrvCaps) PURE;
    149     STDMETHOD(CreateSoundBuffer)(THIS_ LPWAVEFORMATEX pwfx,DWORD dwFlags,DWORD dwCardAddress,LPDWORD pdwcbBufferSize,LPBYTE *ppbBuffer,LPVOID *ppvObj) PURE;
    150     STDMETHOD(DuplicateSoundBuffer)(THIS_ PIDSDRIVERBUFFER pIDsDriverBuffer,LPVOID *ppvObj) PURE;
    151 };
    152 #undef INTERFACE
    153 
    154 #if !defined (__cplusplus) || defined(CINTERFACE)
    155     /*** IUnknown methods ***/
    156 #define IDsDriver_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
    157 #define IDsDriver_AddRef(p)                     (p)->lpVtbl->AddRef(p)
    158 #define IDsDriver_Release(p)                    (p)->lpVtbl->Release(p)
    159     /*** IDsDriver methods ***/
    160 #define IDsDriver_GetDriverDesc(p,a)            (p)->lpVtbl->GetDriverDesc(p,a)
    161 #define IDsDriver_Open(p)                       (p)->lpVtbl->Open(p)
    162 #define IDsDriver_Close(p)                      (p)->lpVtbl->Close(p)
    163 #define IDsDriver_GetCaps(p,a)                  (p)->lpVtbl->GetCaps(p,a)
    164 #define IDsDriver_CreateSoundBuffer(p,a,b,c,d,e,f) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c,d,e,f)
    165 #define IDsDriver_DuplicateSoundBuffer(p,a,b)   (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
    166 #endif
    167 
    168 /*****************************************************************************
    169  * IDsDriverBuffer interface
    170  */
    171 #define INTERFACE IDsDriverBuffer
    172 DECLARE_INTERFACE_(IDsDriverBuffer,IUnknown)
    173 {
    174     /*** IUnknown methods ***/
    175     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    176     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    177     STDMETHOD_(ULONG,Release)(THIS) PURE;
    178     /*** IDsDriverBuffer methods ***/
    179     STDMETHOD(Lock)(THIS_ LPVOID *ppvAudio1,LPDWORD pdwLen1,LPVOID *pdwAudio2,LPDWORD pdwLen2,DWORD dwWritePosition,DWORD dwWriteLen,DWORD dwFlags) PURE;
    180     STDMETHOD(Unlock)(THIS_ LPVOID pvAudio1,DWORD dwLen1,LPVOID pvAudio2,DWORD dwLen2) PURE;
    181     STDMETHOD(SetFormat)(THIS_ LPWAVEFORMATEX pwfxToSet) PURE;
    182     STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
    183     STDMETHOD(SetVolumePan)(THIS_ PDSVOLUMEPAN pDsVolumePan) PURE;
    184     STDMETHOD(SetPosition)(THIS_ DWORD dwNewPosition) PURE;
    185     STDMETHOD(GetPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor,LPDWORD lpdwCurrentWriteCursor) PURE;
    186     STDMETHOD(Play)(THIS_ DWORD dwReserved1,DWORD dwReserved2,DWORD dwFlags) PURE;
    187     STDMETHOD(Stop)(THIS) PURE;
    188 };
    189 #undef INTERFACE
    190 
    191 #if !defined (__cplusplus) || defined(CINTERFACE)
    192     /*** IUnknown methods ***/
    193 #define IDsDriverBuffer_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
    194 #define IDsDriverBuffer_AddRef(p)               (p)->lpVtbl->AddRef(p)
    195 #define IDsDriverBuffer_Release(p)              (p)->lpVtbl->Release(p)
    196     /*** IDsDriverBuffer methods ***/
    197 #define IDsDriverBuffer_Lock(p,a,b,c,d,e,f,g)   (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
    198 #define IDsDriverBuffer_Unlock(p,a,b,c,d)       (p)->lpVtbl->Unlock(p,a,b,c,d)
    199 #define IDsDriverBuffer_SetFormat(p,a)          (p)->lpVtbl->SetFormat(p,a)
    200 #define IDsDriverBuffer_SetFrequency(p,a)       (p)->lpVtbl->SetFrequency(p,a)
    201 #define IDsDriverBuffer_SetVolumePan(p,a)       (p)->lpVtbl->SetVolumePan(p,a)
    202 #define IDsDriverBuffer_SetPosition(p,a)        (p)->lpVtbl->SetPosition(p,a)
    203 #define IDsDriverBuffer_GetPosition(p,a,b)      (p)->lpVtbl->GetPosition(p,a,b)
    204 #define IDsDriverBuffer_Play(p,a,b,c)           (p)->lpVtbl->Play(p,a,b,c)
    205 #define IDsDriverBuffer_Stop(p)                 (p)->lpVtbl->Stop(p)
    206 #endif
    207 
    208 /*****************************************************************************
    209  * IDsDriverPropertySet interface
    210  */
    211 #define INTERFACE IDsDriverPropertySet
    212 DECLARE_INTERFACE_(IDsDriverPropertySet,IUnknown)
    213 {
    214     /*** IUnknown methods ***/
    215     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    216     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    217     STDMETHOD_(ULONG,Release)(THIS) PURE;
    218     /*** IDsDriverPropertySet methods ***/
    219     STDMETHOD(Get)(THIS_ PDSPROPERTY pDsProperty,LPVOID pPropertyParams,ULONG cbPropertyParams,LPVOID pPropertyData,ULONG cbPropertyData,PULONG pcbReturnedData) PURE;
    220     STDMETHOD(Set)(THIS_ PDSPROPERTY pDsProperty,LPVOID pPropertyParams,ULONG cbPropertyParams,LPVOID pPropertyData,ULONG cbPropertyData) PURE;
    221     STDMETHOD(QuerySupport)(THIS_ REFGUID PropertySetId,ULONG PropertyId,PULONG pSupport) PURE;
    222 };
    223 #undef INTERFACE
    224 
    225 #if !defined (__cplusplus) || defined(CINTERFACE)
    226     /*** IUnknown methods ***/
    227 #define IDsDriverPropertySet_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
    228 #define IDsDriverPropertySet_AddRef(p)                  (p)->lpVtbl->AddRef(p)
    229 #define IDsDriverPropertySet_Release(p)                 (p)->lpVtbl->Release(p)
    230     /*** IDsDriverPropertySet methods ***/
    231 #define IDsDriverPropertySet_Get(p,a,b,c,d,e,f)         (p)->lpVtbl->Get(p,a,b,c,d,e,f)
    232 #define IDsDriverPropertySet_Set(p,a,b,c,d,e)           (p)->lpVtbl->Set(p,a,b,c,d,e)
    233 #define IDsDriverPropertySet_QuerySupport(p,a,b,c)      (p)->lpVtbl->QuerySupport(p,a,b,c)
    234 #endif
    235 
    236 /* Defined property sets */
    237 DEFINE_GUID(DSPROPSETID_DirectSound3DListener,	  0x6D047B40, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
    238 typedef enum
    239 {
    240     DSPROPERTY_DIRECTSOUND3DLISTENER_ALL,
    241     DSPROPERTY_DIRECTSOUND3DLISTENER_POSITION,
    242     DSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY,
    243     DSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION,
    244     DSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR,
    245     DSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR,
    246     DSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR,
    247     DSPROPERTY_DIRECTSOUND3DLISTENER_BATCH,
    248     DSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
    249 } DSPROPERTY_DIRECTSOUND3DLISTENER;
    250 
    251 DEFINE_GUID(DSPROPSETID_DirectSound3DBuffer,	  0x6D047B41, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
    252 typedef enum
    253 {
    254     DSPROPERTY_DIRECTSOUND3DBUFFER_ALL,
    255     DSPROPERTY_DIRECTSOUND3DBUFFER_POSITION,
    256     DSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY,
    257     DSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES,
    258     DSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION,
    259     DSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME,
    260     DSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE,
    261     DSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE,
    262     DSPROPERTY_DIRECTSOUND3DBUFFER_MODE
    263 } DSPROPERTY_DIRECTSOUND3DBUFFER;
    264 
    265 DEFINE_GUID(DSPROPSETID_DirectSoundSpeakerConfig, 0x6D047B42, 0x7AF9, 0x11D0, 0x92, 0x94, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
    266 typedef enum
    267 {
    268     DSPROPERTY_DIRECTSOUNDSPEAKERCONFIG_SPEAKERCONFIG
    269 } DSPROPERTY_DIRECTSOUNDSPEAKERCONFIG;
    270 
    271 /*****************************************************************************
    272  * IDsDriverNotify interface
    273  */
    274 #define INTERFACE IDsDriverNotify
    275 DECLARE_INTERFACE_(IDsDriverNotify,IUnknown)
    276 {
    277     /*** IUnknown methods ***/
    278     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    279     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    280     STDMETHOD_(ULONG,Release)(THIS) PURE;
    281     /*** IDsDriverNotify methods ***/
    282     STDMETHOD(SetNotificationPositions)(THIS_ DWORD dwPositionNotifies,LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE;
    283 };
    284 #undef INTERFACE
    285 
    286 #if !defined (__cplusplus) || defined(CINTERFACE)
    287     /*** IUnknown methods ***/
    288 #define IDsDriverNotify_QueryInterface(p,a,b)           (p)->lpVtbl->QueryInterface(p,a,b)
    289 #define IDsDriverNotify_AddRef(p)                       (p)->lpVtbl->AddRef(p)
    290 #define IDsDriverNotify_Release(p)                      (p)->lpVtbl->Release(p)
    291     /*** IDsDriverNotify methods ***/
    292 #define IDsDriverNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b)
    293 #endif
    294 
    295 /*****************************************************************************
    296  * IDsCaptureDriver interface
    297  */
    298 #define INTERFACE IDsCaptureDriver
    299 DECLARE_INTERFACE_(IDsCaptureDriver,IUnknown)
    300 {
    301     /*** IUnknown methods ***/
    302     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    303     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    304     STDMETHOD_(ULONG,Release)(THIS) PURE;
    305     /*** IDsCaptureDriver methods ***/
    306     STDMETHOD(GetDriverDesc)(THIS_ PDSDRIVERDESC pDsDriverDesc) PURE;
    307     STDMETHOD(Open)(THIS) PURE;
    308     STDMETHOD(Close)(THIS) PURE;
    309     STDMETHOD(GetCaps)(THIS_ PDSCDRIVERCAPS pDsDrvCaps) PURE;
    310     STDMETHOD(CreateCaptureBuffer)(THIS_ LPWAVEFORMATEX pwfx,DWORD dwFlags,DWORD dwCardAddress,LPDWORD pdwcbBufferSize,LPBYTE *ppbBuffer,LPVOID *ppvObj) PURE;
    311 };
    312 #undef INTERFACE
    313 
    314 #if !defined (__cplusplus) || defined(CINTERFACE)
    315     /*** IUnknown methods ***/
    316 #define IDsCaptureDriver_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
    317 #define IDsCaptureDriver_AddRef(p)                      (p)->lpVtbl->AddRef(p)
    318 #define IDsCaptureDriver_Release(p)                     (p)->lpVtbl->Release(p)
    319     /*** IDsCaptureDriver methods ***/
    320 #define IDsCaptureDriver_GetDriverDesc(p,a)             (p)->lpVtbl->GetDriverDesc(p,a)
    321 #define IDsCaptureDriver_Open(p)                        (p)->lpVtbl->Open(p)
    322 #define IDsCaptureDriver_Close(p)                       (p)->lpVtbl->Close(p)
    323 #define IDsCaptureDriver_GetCaps(p,a)                   (p)->lpVtbl->GetCaps(p,a)
    324 #define IDsCaptureDriver_CreateCaptureBuffer(p,a,b,c,d,e,f) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c,d,e,f)
    325 #endif
    326 
    327 /*****************************************************************************
    328  * IDsCaptureDriverBuffer interface
    329  */
    330 #define INTERFACE IDsCaptureDriverBuffer
    331 DECLARE_INTERFACE_(IDsCaptureDriverBuffer,IUnknown)
    332 {
    333     /*** IUnknown methods ***/
    334     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    335     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    336     STDMETHOD_(ULONG,Release)(THIS) PURE;
    337     /*** IDsCaptureDriverBuffer methods ***/
    338     STDMETHOD(Lock)(THIS_ LPVOID *ppvAudio1,LPDWORD pdwLen1,LPVOID *ppvAudio2,LPDWORD pdwLen2,DWORD dwWritePosition,DWORD dwWriteLen,DWORD dwFlags) PURE;
    339     STDMETHOD(Unlock)(THIS_ LPVOID pvAudio1,DWORD dwLen1,LPVOID pvAudio2,DWORD dwLen2) PURE;
    340     STDMETHOD(SetFormat)(THIS_ LPWAVEFORMATEX pwfxToSet) PURE;
    341     STDMETHOD(GetPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor,LPDWORD lpdwCurrentWriteCursor) PURE;
    342     STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
    343     STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
    344     STDMETHOD(Stop)(THIS) PURE;
    345 };
    346 #undef INTERFACE
    347 
    348 #if !defined (__cplusplus) || defined(CINTERFACE)
    349     /*** IUnknown methods ***/
    350 #define IDsCaptureDriverBuffer_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
    351 #define IDsCaptureDriverBuffer_AddRef(p)                (p)->lpVtbl->AddRef(p)
    352 #define IDsCaptureDriverBuffer_Release(p)               (p)->lpVtbl->Release(p)
    353     /*** IDsCaptureDriverBuffer methods ***/
    354 #define IDsCaptureDriverBuffer_Lock(p,a,b,c,d,e,f,g)    (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
    355 #define IDsCaptureDriverBuffer_Unlock(p,a,b,c,d)        (p)->lpVtbl->Unlock(p,a,b,c,d)
    356 #define IDsCaptureDriverBuffer_SetFormat(p,a)           (p)->lpVtbl->SetFormat(p,a)
    357 #define IDsCaptureDriverBuffer_GetPosition(p,a,b)       (p)->lpVtbl->GetPosition(p,a,b)
    358 #define IDsCaptureDriverBuffer_GetStatus(p,a)           (p)->lpVtbl->GetStatus(p,a)
    359 #define IDsCaptureDriverBuffer_Start(p,a)               (p)->lpVtbl->Start(p,a)
    360 #define IDsCaptureDriverBuffer_Stop(p)                  (p)->lpVtbl->Stop(p)
    361 #endif
    362 
    363 #ifdef __cplusplus
    364 } /* extern "C" */
    365 #endif
    366 
    367 #endif /* __WINE_DSDRIVER_H */
    368