dsdriver.h 15 KB

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